diff --git a/.travis.yml b/.travis.yml index bcff16f5f1..fdd741154b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: java -install: travis_wait 60 mvn -q test +install: travis_wait 60 mvn -q test -fae before_script: - echo "MAVEN_OPTS='-Xmx2048M -Xss128M -XX:MaxPermSize=2048M -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:-UseGCOverheadLimit'" > ~/.mavenrc diff --git a/algorithms/pom.xml b/algorithms/pom.xml index 884c804d13..3dfce8769b 100644 --- a/algorithms/pom.xml +++ b/algorithms/pom.xml @@ -39,7 +39,6 @@ - install @@ -56,6 +55,17 @@ exec-maven-plugin ${exec-maven-plugin.version} + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LongRunningUnitTest.java + **/*IntegrationTest.java + + + diff --git a/algorithms/src/test/java/algorithms/AntColonyOptimizationLongRunningUnitTest.java b/algorithms/src/test/java/algorithms/AntColonyOptimizationLongRunningUnitTest.java new file mode 100644 index 0000000000..b0218ae23e --- /dev/null +++ b/algorithms/src/test/java/algorithms/AntColonyOptimizationLongRunningUnitTest.java @@ -0,0 +1,22 @@ +package algorithms; + +import org.junit.Assert; +import org.junit.Test; + +import com.baeldung.algorithms.ga.ant_colony.AntColonyOptimization; + +public class AntColonyOptimizationLongRunningUnitTest { + + @Test + public void testGenerateRandomMatrix() { + AntColonyOptimization antTSP = new AntColonyOptimization(5); + Assert.assertNotNull(antTSP.generateRandomMatrix(5)); + } + + @Test + public void testStartAntOptimization() { + AntColonyOptimization antTSP = new AntColonyOptimization(5); + Assert.assertNotNull(antTSP.solve()); + } + +} diff --git a/algorithms/src/test/java/algorithms/AntColonyOptimizationTest.java b/algorithms/src/test/java/algorithms/AntColonyOptimizationTest.java deleted file mode 100644 index a11f5db698..0000000000 --- a/algorithms/src/test/java/algorithms/AntColonyOptimizationTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package algorithms; - -import org.junit.Assert; -import org.junit.Test; - -import com.baeldung.algorithms.ga.ant_colony.AntColonyOptimization; - -public class AntColonyOptimizationTest { - - @Test - public void testGenerateRandomMatrix() { - AntColonyOptimization antTSP = new AntColonyOptimization(5); - Assert.assertNotNull(antTSP.generateRandomMatrix(5)); - } - - @Test - public void testStartAntOptimization() { - AntColonyOptimization antTSP = new AntColonyOptimization(5); - Assert.assertNotNull(antTSP.solve()); - } - -} diff --git a/algorithms/src/test/java/algorithms/BinaryGeneticAlgorithmLongRunningUnitTest.java b/algorithms/src/test/java/algorithms/BinaryGeneticAlgorithmLongRunningUnitTest.java new file mode 100644 index 0000000000..fa8ecdee77 --- /dev/null +++ b/algorithms/src/test/java/algorithms/BinaryGeneticAlgorithmLongRunningUnitTest.java @@ -0,0 +1,16 @@ +package algorithms; + +import org.junit.Assert; +import org.junit.Test; + +import com.baeldung.algorithms.ga.binary.SimpleGeneticAlgorithm; + +public class BinaryGeneticAlgorithmLongRunningUnitTest { + + @Test + public void testGA() { + SimpleGeneticAlgorithm ga = new SimpleGeneticAlgorithm(); + Assert.assertTrue(ga.runAlgorithm(50, "1011000100000100010000100000100111001000000100000100000000001111")); + } + +} diff --git a/algorithms/src/test/java/algorithms/BinaryGeneticAlgorithmUnitTest.java b/algorithms/src/test/java/algorithms/BinaryGeneticAlgorithmUnitTest.java deleted file mode 100644 index 2ba516d310..0000000000 --- a/algorithms/src/test/java/algorithms/BinaryGeneticAlgorithmUnitTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package algorithms; - -import org.junit.Assert; -import org.junit.Test; - -import com.baeldung.algorithms.ga.binary.SimpleGeneticAlgorithm; - -public class BinaryGeneticAlgorithmUnitTest { - - @Test - public void testGA() { - SimpleGeneticAlgorithm ga = new SimpleGeneticAlgorithm(); - Assert.assertTrue(ga.runAlgorithm(50, "1011000100000100010000100000100111001000000100000100000000001111")); - } - -} diff --git a/algorithms/src/test/java/algorithms/DijkstraAlgorithmTest.java b/algorithms/src/test/java/algorithms/DijkstraAlgorithmLongRunningUnitTest.java similarity index 74% rename from algorithms/src/test/java/algorithms/DijkstraAlgorithmTest.java rename to algorithms/src/test/java/algorithms/DijkstraAlgorithmLongRunningUnitTest.java index 4d8cebed25..68386278fc 100644 --- a/algorithms/src/test/java/algorithms/DijkstraAlgorithmTest.java +++ b/algorithms/src/test/java/algorithms/DijkstraAlgorithmLongRunningUnitTest.java @@ -1,76 +1,86 @@ -package algorithms; - -import org.junit.Test; - -import com.baeldung.algorithms.ga.dijkstra.Dijkstra; -import com.baeldung.algorithms.ga.dijkstra.Graph; -import com.baeldung.algorithms.ga.dijkstra.Node; - -import java.util.Arrays; -import java.util.List; - -import static org.junit.Assert.assertTrue; - -public class DijkstraAlgorithmTest { - - @Test - public void whenSPPSolved_thenCorrect() { - - Node nodeA = new Node("A"); - Node nodeB = new Node("B"); - Node nodeC = new Node("C"); - Node nodeD = new Node("D"); - Node nodeE = new Node("E"); - Node nodeF = new Node("F"); - - nodeA.addDestination(nodeB, 10); - nodeA.addDestination(nodeC, 15); - - nodeB.addDestination(nodeD, 12); - nodeB.addDestination(nodeF, 15); - - nodeC.addDestination(nodeE, 10); - - nodeD.addDestination(nodeE, 2); - nodeD.addDestination(nodeF, 1); - - nodeF.addDestination(nodeE, 5); - - Graph graph = new Graph(); - - graph.addNode(nodeA); - graph.addNode(nodeB); - graph.addNode(nodeC); - graph.addNode(nodeD); - graph.addNode(nodeE); - graph.addNode(nodeF); - - graph = Dijkstra.calculateShortestPathFromSource(graph, nodeA); - - List shortestPathForNodeB = Arrays.asList(nodeA); - List shortestPathForNodeC = Arrays.asList(nodeA); - List shortestPathForNodeD = Arrays.asList(nodeA, nodeB); - List shortestPathForNodeE = Arrays.asList(nodeA, nodeB, nodeD); - List shortestPathForNodeF = Arrays.asList(nodeA, nodeB, nodeD); - - for (Node node : graph.getNodes()) { - switch (node.getName()) { - case "B": - assertTrue(node.getShortestPath().equals(shortestPathForNodeB)); - break; - case "C": - assertTrue(node.getShortestPath().equals(shortestPathForNodeC)); - break; - case "D": - assertTrue(node.getShortestPath().equals(shortestPathForNodeD)); - break; - case "E": - assertTrue(node.getShortestPath().equals(shortestPathForNodeE)); - break; - case "F": - assertTrue(node.getShortestPath().equals(shortestPathForNodeF)); - break; - } - } - } -} +package algorithms; + +import org.junit.Test; + +import com.baeldung.algorithms.ga.dijkstra.Dijkstra; +import com.baeldung.algorithms.ga.dijkstra.Graph; +import com.baeldung.algorithms.ga.dijkstra.Node; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertTrue; + +public class DijkstraAlgorithmLongRunningUnitTest { + + @Test + public void whenSPPSolved_thenCorrect() { + + Node nodeA = new Node("A"); + Node nodeB = new Node("B"); + Node nodeC = new Node("C"); + Node nodeD = new Node("D"); + Node nodeE = new Node("E"); + Node nodeF = new Node("F"); + + nodeA.addDestination(nodeB, 10); + nodeA.addDestination(nodeC, 15); + + nodeB.addDestination(nodeD, 12); + nodeB.addDestination(nodeF, 15); + + nodeC.addDestination(nodeE, 10); + + nodeD.addDestination(nodeE, 2); + nodeD.addDestination(nodeF, 1); + + nodeF.addDestination(nodeE, 5); + + Graph graph = new Graph(); + + graph.addNode(nodeA); + graph.addNode(nodeB); + graph.addNode(nodeC); + graph.addNode(nodeD); + graph.addNode(nodeE); + graph.addNode(nodeF); + + graph = Dijkstra.calculateShortestPathFromSource(graph, nodeA); + + List shortestPathForNodeB = Arrays.asList(nodeA); + List shortestPathForNodeC = Arrays.asList(nodeA); + List shortestPathForNodeD = Arrays.asList(nodeA, nodeB); + List shortestPathForNodeE = Arrays.asList(nodeA, nodeB, nodeD); + List shortestPathForNodeF = Arrays.asList(nodeA, nodeB, nodeD); + + for (Node node : graph.getNodes()) { + switch (node.getName()) { + case "B": + assertTrue(node + .getShortestPath() + .equals(shortestPathForNodeB)); + break; + case "C": + assertTrue(node + .getShortestPath() + .equals(shortestPathForNodeC)); + break; + case "D": + assertTrue(node + .getShortestPath() + .equals(shortestPathForNodeD)); + break; + case "E": + assertTrue(node + .getShortestPath() + .equals(shortestPathForNodeE)); + break; + case "F": + assertTrue(node + .getShortestPath() + .equals(shortestPathForNodeF)); + break; + } + } + } +} diff --git a/algorithms/src/test/java/algorithms/RtFiniteStateMachineTest.java b/algorithms/src/test/java/algorithms/RtFiniteStateMachineLongRunningUnitTest.java similarity index 72% rename from algorithms/src/test/java/algorithms/RtFiniteStateMachineTest.java rename to algorithms/src/test/java/algorithms/RtFiniteStateMachineLongRunningUnitTest.java index 089b38ec3f..c6800e9a64 100644 --- a/algorithms/src/test/java/algorithms/RtFiniteStateMachineTest.java +++ b/algorithms/src/test/java/algorithms/RtFiniteStateMachineLongRunningUnitTest.java @@ -1,38 +1,37 @@ package algorithms; -import static org.junit.Assert.*; -import org.junit.Test; import com.baeldung.automata.*; +import org.junit.Test; -/** - * Tests for {@link RtFiniteStateMachine} - */ -public final class RtFiniteStateMachineTest { +import static org.junit.Assert.assertTrue; + +public final class RtFiniteStateMachineLongRunningUnitTest { @Test public void acceptsSimplePair() { String json = "{\"key\":\"value\"}"; FiniteStateMachine machine = this.buildJsonStateMachine(); - for (int i=0;i${lombok.version} provided + + + + mysql + mysql-connector-java + ${mysql.version} + @@ -135,13 +142,6 @@ test - - org.testng - testng - ${testng.version} - test - - org.mockito mockito-core @@ -177,37 +177,6 @@ - - - org.datanucleus - javax.jdo - 3.2.0-m6 - - - org.datanucleus - datanucleus-core - 5.1.0-m1 - - - org.datanucleus - datanucleus-api-jdo - 5.1.0-m1 - - - org.datanucleus - datanucleus-rdbms - 5.1.0-m1 - - - org.datanucleus - datanucleus-maven-plugin - 5.0.2 - - - com.h2database - h2 - 1.4.194 - org.owasp.esapi @@ -250,6 +219,7 @@ **/*IntegrationTest.java **/*LongRunningUnitTest.java **/*ManualTest.java + **/JdbcTest.java true @@ -358,29 +328,6 @@ - - - - - org.datanucleus - datanucleus-maven-plugin - 5.0.2 - - JDO - ${basedir}/datanucleus.properties - ${basedir}/log4j.properties - true - - - - process-classes - - enhance - - - - - @@ -427,6 +374,9 @@ 1.7.21 1.1.7 + + + 6.0.6 21.0 diff --git a/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java b/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java index 9eef00bd3f..3aca6b0147 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java +++ b/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java @@ -4,17 +4,10 @@ import java.time.ZonedDateTime; import java.util.Comparator; import java.util.concurrent.ConcurrentNavigableMap; import java.util.concurrent.ConcurrentSkipListMap; -import java.util.function.ToLongFunction; public class EventWindowSort { - private final ConcurrentSkipListMap events = new ConcurrentSkipListMap<>(Comparator.comparingLong(new ToLongFunction() { - @Override - public long applyAsLong(ZonedDateTime value) { - return value - .toInstant() - .toEpochMilli(); - } - })); + private final ConcurrentSkipListMap events + = new ConcurrentSkipListMap<>(Comparator.comparingLong(value -> value.toInstant().toEpochMilli())); public void acceptEvent(Event event) { events.put(event.getEventTime(), event.getContent()); @@ -22,14 +15,14 @@ public class EventWindowSort { public ConcurrentNavigableMap getEventsFromLastMinute() { return events.tailMap(ZonedDateTime - .now() - .minusMinutes(1)); + .now() + .minusMinutes(1)); } public ConcurrentNavigableMap getEventsOlderThatOneMinute() { return events.headMap(ZonedDateTime - .now() - .minusMinutes(1)); + .now() + .minusMinutes(1)); } } diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java b/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java new file mode 100644 index 0000000000..6bb055d360 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java @@ -0,0 +1,27 @@ +package com.baeldung.concurrent.sleepwait; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/*** + * Example of waking up a waiting thread + */ +public class ThreadA { + + private static final Logger LOG = LoggerFactory.getLogger(ThreadA.class); + + private static final ThreadB b = new ThreadB(); + + public static void main(String... args) throws InterruptedException { + b.start(); + + synchronized (b) { + while (b.sum == 0) { + LOG.debug("Waiting for ThreadB to complete..."); + b.wait(); + } + + LOG.debug("ThreadB has completed. Sum from that thread is: " + b.sum); + } + } +} diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java b/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java new file mode 100644 index 0000000000..1fc180a5de --- /dev/null +++ b/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java @@ -0,0 +1,20 @@ +package com.baeldung.concurrent.sleepwait; + +/*** + * Example of waking up a waiting thread + */ +class ThreadB extends Thread { + int sum; + + @Override + public void run() { + synchronized (this) { + int i = 0; + while (i < 100000) { + sum += i; + i++; + } + notify(); + } + } +} diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java b/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java new file mode 100644 index 0000000000..0311d9b0b2 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java @@ -0,0 +1,29 @@ +package com.baeldung.concurrent.sleepwait; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/*** + * Example of wait() and sleep() methods + */ +public class WaitSleepExample { + + private static final Logger LOG = LoggerFactory.getLogger(WaitSleepExample.class); + + private static final Object LOCK = new Object(); + + public static void main(String... args) throws InterruptedException { + sleepWaitInSyncronizedBlocks(); + } + + private static void sleepWaitInSyncronizedBlocks() throws InterruptedException { + Thread.sleep(1000); // called on the thread + LOG.debug("Thread '" + Thread.currentThread().getName() + "' is woken after sleeping for 1 second"); + + synchronized (LOCK) { + LOCK.wait(1000); // called on the object, synchronization required + LOG.debug("Object '" + LOCK + "' is woken after waiting for 1 second"); + } + } + +} diff --git a/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java b/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java index 49030b5352..f9028bd159 100644 --- a/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java +++ b/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java @@ -1,14 +1,19 @@ package com.baeldung.dirmonitoring; -import java.io.File; - import org.apache.commons.io.monitor.FileAlterationListener; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; public class DirectoryMonitoringExample { + private static final Logger LOG = LoggerFactory.getLogger(DirectoryMonitoringExample.class); + + public static final int POLL_INTERVAL = 500; public static void main(String[] args) throws Exception { @@ -17,17 +22,17 @@ public class DirectoryMonitoringExample { FileAlterationListener listener = new FileAlterationListenerAdaptor() { @Override public void onFileCreate(File file) { - System.out.println("File: " + file.getName() + " created"); + LOG.debug("File: " + file.getName() + " created"); } @Override public void onFileDelete(File file) { - System.out.println("File: " + file.getName() + " deleted"); + LOG.debug("File: " + file.getName() + " deleted"); } @Override public void onFileChange(File file) { - System.out.println("File: " + file.getName() + " changed"); + LOG.debug("File: " + file.getName() + " changed"); } }; observer.addListener(listener); diff --git a/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java b/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java index 3fc459c681..f5c31e9653 100644 --- a/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java +++ b/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java @@ -1,9 +1,14 @@ package com.baeldung.doublecolon; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.function.Function; public class MacbookPro extends Computer { + private static final Logger LOG = LoggerFactory.getLogger(MacbookPro.class); + public MacbookPro(int age, String color) { super(age, color); } @@ -14,12 +19,12 @@ public class MacbookPro extends Computer { @Override public void turnOnPc() { - System.out.println("MacbookPro turned on"); + LOG.debug("MacbookPro turned on"); } @Override public void turnOffPc() { - System.out.println("MacbookPro turned off"); + LOG.debug("MacbookPro turned off"); } @Override @@ -27,7 +32,7 @@ public class MacbookPro extends Computer { Function function = super::calculateValue; final Double pcValue = function.apply(initialValue); - System.out.println("First value is:" + pcValue); + LOG.debug("First value is:" + pcValue); return pcValue + (initialValue / 10); } diff --git a/core-java/src/main/java/com/baeldung/dynamicproxy/DynamicInvocationHandler.java b/core-java/src/main/java/com/baeldung/dynamicproxy/DynamicInvocationHandler.java new file mode 100644 index 0000000000..8bde2f703f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/dynamicproxy/DynamicInvocationHandler.java @@ -0,0 +1,19 @@ +package com.baeldung.dynamicproxy; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; + +public class DynamicInvocationHandler implements InvocationHandler { + + private static Logger LOGGER = LoggerFactory.getLogger(DynamicInvocationHandler.class); + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + LOGGER.info("Invoked method: {}", method.getName()); + + return 42; + } +} diff --git a/core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java b/core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java new file mode 100644 index 0000000000..942efc50cc --- /dev/null +++ b/core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java @@ -0,0 +1,36 @@ +package com.baeldung.dynamicproxy; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TimingDynamicInvocationHandler implements InvocationHandler { + + private static Logger LOGGER = LoggerFactory.getLogger(TimingDynamicInvocationHandler.class); + private final Map methods = new HashMap<>(); + + private Object target; + + public TimingDynamicInvocationHandler(Object target) { + this.target = target; + + for(Method method: target.getClass().getDeclaredMethods()) { + this.methods.put(method.getName(), method); + } + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + long start = System.nanoTime(); + Object result = methods.get(method.getName()).invoke(target, args); + long elapsed = System.nanoTime() - start; + + LOGGER.info("Executing {} finished in {} ns", method.getName(), elapsed); + + return result; + } +} diff --git a/core-java/src/main/java/com/baeldung/exceptions/StackTraceToString.java b/core-java/src/main/java/com/baeldung/exceptions/StackTraceToString.java new file mode 100644 index 0000000000..c6bf915996 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/exceptions/StackTraceToString.java @@ -0,0 +1,30 @@ +package com.baeldung.exceptions; + +import org.apache.commons.lang3.exception.ExceptionUtils; + +import java.io.PrintWriter; +import java.io.StringWriter; + +public class StackTraceToString { + + public static void main(String[] args) { + // Convert a StackTrace to String using core java + try { + throw new NullPointerException(); + } catch (Exception e) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + e.printStackTrace(pw); + + System.out.println(sw.toString()); + } + + // Convert a StackTrace to String using Apache Commons + try { + throw new IndexOutOfBoundsException(); + } catch (Exception e) { + System.out.println(ExceptionUtils.getStackTrace(e)); + } + } + +} diff --git a/core-java/src/main/java/com/baeldung/http/ParameterStringBuilder.java b/core-java/src/main/java/com/baeldung/http/ParameterStringBuilder.java new file mode 100644 index 0000000000..bed4195faa --- /dev/null +++ b/core-java/src/main/java/com/baeldung/http/ParameterStringBuilder.java @@ -0,0 +1,21 @@ +package com.baeldung.http; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.Map; + +public class ParameterStringBuilder { + public static String getParamsString(Map params) throws UnsupportedEncodingException { + StringBuilder result = new StringBuilder(); + + for (Map.Entry entry : params.entrySet()) { + result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); + result.append("="); + result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); + result.append("&"); + } + + String resultString = result.toString(); + return resultString.length() > 0 ? resultString.substring(0, resultString.length() - 1) : resultString; + } +} diff --git a/core-java/src/main/java/com/baeldung/java/map/MyKey.java b/core-java/src/main/java/com/baeldung/java/map/MyKey.java index a2587c1dc1..ae3c3edc39 100644 --- a/core-java/src/main/java/com/baeldung/java/map/MyKey.java +++ b/core-java/src/main/java/com/baeldung/java/map/MyKey.java @@ -1,6 +1,11 @@ package com.baeldung.java.map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class MyKey { + private static final Logger LOG = LoggerFactory.getLogger(MyKey.class); + private String name; private int id; @@ -27,7 +32,7 @@ public class MyKey { @Override public int hashCode() { - System.out.println("Calling hashCode()"); + LOG.debug("Calling hashCode()"); return id; } @@ -38,7 +43,7 @@ public class MyKey { @Override public boolean equals(Object obj) { - System.out.println("Calling equals() for key: " + obj); + LOG.debug("Calling equals() for key: " + obj); if (this == obj) return true; if (obj == null) diff --git a/core-java/src/main/java/com/baeldung/jdbc/Employee.java b/core-java/src/main/java/com/baeldung/jdbc/Employee.java new file mode 100644 index 0000000000..749855ca3b --- /dev/null +++ b/core-java/src/main/java/com/baeldung/jdbc/Employee.java @@ -0,0 +1,51 @@ +package com.baeldung.jdbc; + +public class Employee { + private int id; + private String name; + private String position; + private double salary; + + public Employee() { + } + + public Employee(int id, String name, double salary, String position) { + this.id = id; + this.name = name; + this.salary = salary; + this.position = position; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getSalary() { + return salary; + } + + public void setSalary(double salary) { + this.salary = salary; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + +} diff --git a/core-java/src/main/java/com/baeldung/jdo/GuideToJDO.java b/core-java/src/main/java/com/baeldung/jdo/GuideToJDO.java deleted file mode 100644 index fb7bd184ee..0000000000 --- a/core-java/src/main/java/com/baeldung/jdo/GuideToJDO.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.baeldung.jdo; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Random; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.jdo.PersistenceManager; -import javax.jdo.PersistenceManagerFactory; -import javax.jdo.Query; -import javax.jdo.Transaction; - -import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; -import org.datanucleus.metadata.PersistenceUnitMetaData; - -public class GuideToJDO { - - private static final Logger LOGGER = Logger.getLogger(GuideToJDO.class.getName()); - private Random rnd = new Random(); - private PersistenceUnitMetaData pumd; - - public static void main(String[] args) { - new GuideToJDO(); - } - - public GuideToJDO() { - CreateProperties(); - CreateProducts(); - ListProducts(); - UpdateProducts(); - ListProducts(); - DeleteProducts(); - ListProducts(); - } - - public void CreateProperties(){ - - pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); - pumd.addClassName("com.baeldung.jdo.Product"); - pumd.setExcludeUnlistedClasses(); - pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); - pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); - pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); - pumd.addProperty("javax.jdo.option.ConnectionPassword", ""); - pumd.addProperty("datanucleus.autoCreateSchema", "true"); - - } - - public void CreateProducts() { - PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); - PersistenceManager pm = pmf.getPersistenceManager(); - Transaction tx = pm.currentTransaction(); - try { - tx.begin(); - Product product = new Product("Tablet", 80.0); - pm.makePersistent(product); - Product product2 = new Product("Phone", 20.0); - pm.makePersistent(product2); - Product product3 = new Product("Laptop", 200.0); - pm.makePersistent(product3); - for (int i = 0; i < 100; i++) { - String nam = "Product-" + i; - double price = rnd.nextDouble(); - Product productx = new Product(nam, price); - pm.makePersistent(productx); - } - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - pm.close(); - } - } - - @SuppressWarnings("rawtypes") - public void UpdateProducts(){ - PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); - PersistenceManager pm = pmf.getPersistenceManager(); - Transaction tx = pm.currentTransaction(); - try { - tx.begin(); - Query query = pm.newQuery(Product.class, "name == \"Phone\""); - Collection result = (Collection) query.execute(); - Product product = (Product) result.iterator().next(); - product.setName("Android Phone"); - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - pm.close(); - } - } - - @SuppressWarnings("rawtypes") - public void DeleteProducts(){ - PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); - PersistenceManager pm = pmf.getPersistenceManager(); - Transaction tx = pm.currentTransaction(); - try { - tx.begin(); - Query query = pm.newQuery(Product.class, "name == \"Android Phone\""); - Collection result = (Collection) query.execute(); - Product product = (Product) result.iterator().next(); - pm.deletePersistent(product); - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - pm.close(); - } - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void ListProducts() { - PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); - PersistenceManager pm = pmf.getPersistenceManager(); - Transaction tx = pm.currentTransaction(); - try { - tx.begin(); - - Query q = pm.newQuery("SELECT FROM " + Product.class.getName() + " WHERE price > 10"); - List products = (List) q.execute(); - Iterator iter = products.iterator(); - while (iter.hasNext()) { - Product p = iter.next(); - LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); - } - LOGGER.log(Level.INFO, "--------------------------------------------------------------"); - tx.commit(); - } finally { - if (tx.isActive()) { - tx.rollback(); - } - - pm.close(); - } - } -} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/jmx/Game.java b/core-java/src/main/java/com/baeldung/jmx/Game.java index f38db27601..79256c0659 100644 --- a/core-java/src/main/java/com/baeldung/jmx/Game.java +++ b/core-java/src/main/java/com/baeldung/jmx/Game.java @@ -1,23 +1,28 @@ package com.baeldung.jmx; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class Game implements GameMBean { + private static final Logger LOG = LoggerFactory.getLogger(Game.class); + private String playerName; @Override public void playFootball(String clubName) { - System.out.println(this.playerName + " playing football for " + clubName); + LOG.debug(this.playerName + " playing football for " + clubName); } @Override public String getPlayerName() { - System.out.println("Return playerName " + this.playerName); + LOG.debug("Return playerName " + this.playerName); return playerName; } @Override public void setPlayerName(String playerName) { - System.out.println("Set playerName to value " + playerName); + LOG.debug("Set playerName to value " + playerName); this.playerName = playerName; } diff --git a/core-java/src/main/java/com/baeldung/jmx/JMXTutorialMainlauncher.java b/core-java/src/main/java/com/baeldung/jmx/JMXTutorialMainlauncher.java index 6f9c30ab50..220b9a8ec6 100644 --- a/core-java/src/main/java/com/baeldung/jmx/JMXTutorialMainlauncher.java +++ b/core-java/src/main/java/com/baeldung/jmx/JMXTutorialMainlauncher.java @@ -1,19 +1,20 @@ package com.baeldung.jmx; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.management.*; import java.lang.management.ManagementFactory; -import javax.management.InstanceAlreadyExistsException; -import javax.management.MBeanRegistrationException; -import javax.management.MBeanServer; -import javax.management.MalformedObjectNameException; -import javax.management.NotCompliantMBeanException; -import javax.management.ObjectName; public class JMXTutorialMainlauncher { + private static final Logger LOG = LoggerFactory.getLogger(JMXTutorialMainlauncher.class); + + public static void main(String[] args) { // TODO Auto-generated method stub - System.out.println("This is basic JMX tutorial"); + LOG.debug("This is basic JMX tutorial"); ObjectName objectName = null; try { objectName = new ObjectName("com.baeldung.tutorial:type=basic,name=game"); @@ -27,8 +28,8 @@ public class JMXTutorialMainlauncher { } catch (InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) { e.printStackTrace(); } - System.out.println("Registration for Game mbean with the platform server is successfull"); - System.out.println("Please open jconsole to access Game mbean"); + LOG.debug("Registration for Game mbean with the platform server is successfull"); + LOG.debug("Please open jconsole to access Game mbean"); while (true) { // to ensure application does not terminate } diff --git a/core-java/src/main/java/com/baeldung/socket/EchoClient.java b/core-java/src/main/java/com/baeldung/socket/EchoClient.java index 570bd60b2d..cf5c253276 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoClient.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoClient.java @@ -1,9 +1,16 @@ package com.baeldung.socket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.*; import java.net.*; public class EchoClient { + + + private static final Logger LOG = LoggerFactory.getLogger(EchoClient.class); + private Socket clientSocket; private PrintWriter out; private BufferedReader in; @@ -14,7 +21,7 @@ public class EchoClient { out = new PrintWriter(clientSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); } catch (IOException e) { - System.out.print(e); + LOG.debug("Error when initializing connection", e); } } @@ -34,7 +41,7 @@ public class EchoClient { out.close(); clientSocket.close(); } catch (IOException e) { - e.printStackTrace(); + LOG.debug("error when closing", e); } } diff --git a/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java index b920967545..a9f055f8f4 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java @@ -1,9 +1,15 @@ package com.baeldung.socket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.net.*; import java.io.*; public class EchoMultiServer { + + private static final Logger LOG = LoggerFactory.getLogger(EchoMultiServer.class); + private ServerSocket serverSocket; public void start(int port) { @@ -57,7 +63,7 @@ public class EchoMultiServer { clientSocket.close(); } catch (IOException e) { - e.printStackTrace(); + LOG.debug(e.getMessage()); } } } diff --git a/core-java/src/main/java/com/baeldung/socket/EchoServer.java b/core-java/src/main/java/com/baeldung/socket/EchoServer.java index dfd281d51c..a869e98966 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoServer.java @@ -1,9 +1,15 @@ package com.baeldung.socket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.net.*; import java.io.*; public class EchoServer { + + private static final Logger LOG = LoggerFactory.getLogger(EchoServer.class); + private ServerSocket serverSocket; private Socket clientSocket; private PrintWriter out; @@ -24,7 +30,7 @@ public class EchoServer { out.println(inputLine); } } catch (IOException e) { - e.printStackTrace(); + LOG.debug(e.getMessage()); } } @@ -36,7 +42,7 @@ public class EchoServer { clientSocket.close(); serverSocket.close(); } catch (IOException e) { - e.printStackTrace(); + LOG.debug(e.getMessage()); } } diff --git a/core-java/src/main/java/com/baeldung/socket/GreetClient.java b/core-java/src/main/java/com/baeldung/socket/GreetClient.java index e6f14bb2b6..38ad016919 100644 --- a/core-java/src/main/java/com/baeldung/socket/GreetClient.java +++ b/core-java/src/main/java/com/baeldung/socket/GreetClient.java @@ -1,5 +1,8 @@ package com.baeldung.socket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -7,6 +10,9 @@ import java.io.PrintWriter; import java.net.Socket; public class GreetClient { + + private static final Logger LOG = LoggerFactory.getLogger(EchoMultiServer.class); + private Socket clientSocket; private PrintWriter out; private BufferedReader in; @@ -17,7 +23,7 @@ public class GreetClient { out = new PrintWriter(clientSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); } catch (IOException e) { - + LOG.debug(e.getMessage()); } } @@ -37,7 +43,7 @@ public class GreetClient { out.close(); clientSocket.close(); } catch (IOException e) { - e.printStackTrace(); + LOG.debug(e.getMessage()); } } diff --git a/core-java/src/main/java/com/baeldung/socket/GreetServer.java b/core-java/src/main/java/com/baeldung/socket/GreetServer.java index 05bc65a65e..f46db91959 100644 --- a/core-java/src/main/java/com/baeldung/socket/GreetServer.java +++ b/core-java/src/main/java/com/baeldung/socket/GreetServer.java @@ -1,9 +1,15 @@ package com.baeldung.socket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.net.*; import java.io.*; public class GreetServer { + + private static final Logger LOG = LoggerFactory.getLogger(GreetServer.class); + private ServerSocket serverSocket; private Socket clientSocket; private PrintWriter out; @@ -21,7 +27,7 @@ public class GreetServer { else out.println("unrecognised greeting"); } catch (IOException e) { - e.printStackTrace(); + LOG.debug(e.getMessage()); } } @@ -33,7 +39,7 @@ public class GreetServer { clientSocket.close(); serverSocket.close(); } catch (IOException e) { - e.printStackTrace(); + LOG.debug(e.getMessage()); } } diff --git a/core-java/src/main/java/com/baeldung/stream/InfiniteStreams.java b/core-java/src/main/java/com/baeldung/stream/InfiniteStreams.java index 097b516f8c..ae00fc7cb4 100644 --- a/core-java/src/main/java/com/baeldung/stream/InfiniteStreams.java +++ b/core-java/src/main/java/com/baeldung/stream/InfiniteStreams.java @@ -1,9 +1,15 @@ package com.baeldung.stream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.stream.Stream; public class InfiniteStreams { + + private static final Logger LOG = LoggerFactory.getLogger(InfiniteStreams.class); + public static void main(String[] args) { doWhileOldWay(); @@ -15,7 +21,7 @@ public class InfiniteStreams { int i = 0; while (i < 10) { - System.out.println(i); + LOG.debug("{}", i); i++; } } diff --git a/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java b/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java index 0d6a7e5572..de7e4a0369 100644 --- a/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java +++ b/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java @@ -1,7 +1,11 @@ package com.baeldung.threadlocal; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ThreadLocalWithUserContext implements Runnable { + private static final Logger LOG = LoggerFactory.getLogger(ThreadLocalWithUserContext.class); + private static final ThreadLocal userContext = new ThreadLocal<>(); private final Integer userId; private UserRepository userRepository = new UserRepository(); @@ -15,6 +19,6 @@ public class ThreadLocalWithUserContext implements Runnable { public void run() { String userName = userRepository.getUserNameForUserId(userId); userContext.set(new Context(userName)); - System.out.println("thread context for given userId: " + userId + " is: " + userContext.get()); + LOG.debug("thread context for given userId: " + userId + " is: " + userContext.get()); } } diff --git a/core-java/src/main/java/com/baeldung/transferqueue/Consumer.java b/core-java/src/main/java/com/baeldung/transferqueue/Consumer.java index a498d08041..69d7ff2390 100644 --- a/core-java/src/main/java/com/baeldung/transferqueue/Consumer.java +++ b/core-java/src/main/java/com/baeldung/transferqueue/Consumer.java @@ -1,9 +1,15 @@ package com.baeldung.transferqueue; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.concurrent.TransferQueue; import java.util.concurrent.atomic.AtomicInteger; public class Consumer implements Runnable { + private static final Logger LOG = LoggerFactory.getLogger(Consumer.class); + + private final TransferQueue transferQueue; private final String name; private final int numberOfMessagesToConsume; @@ -19,10 +25,10 @@ public class Consumer implements Runnable { public void run() { for (int i = 0; i < numberOfMessagesToConsume; i++) { try { - System.out.println("Consumer: " + name + " is waiting to take element..."); + LOG.debug("Consumer: " + name + " is waiting to take element..."); String element = transferQueue.take(); longProcessing(element); - System.out.println("Consumer: " + name + " received element: " + element); + LOG.debug("Consumer: " + name + " received element: " + element); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/core-java/src/main/java/com/baeldung/transferqueue/Producer.java b/core-java/src/main/java/com/baeldung/transferqueue/Producer.java index c6edc99bb5..c7df7c410a 100644 --- a/core-java/src/main/java/com/baeldung/transferqueue/Producer.java +++ b/core-java/src/main/java/com/baeldung/transferqueue/Producer.java @@ -1,10 +1,15 @@ package com.baeldung.transferqueue; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.concurrent.TimeUnit; import java.util.concurrent.TransferQueue; import java.util.concurrent.atomic.AtomicInteger; public class Producer implements Runnable { + private static final Logger LOG = LoggerFactory.getLogger(Producer.class); + private final TransferQueue transferQueue; private final String name; private final Integer numberOfMessagesToProduce; @@ -20,13 +25,13 @@ public class Producer implements Runnable { public void run() { for (int i = 0; i < numberOfMessagesToProduce; i++) { try { - System.out.println("Producer: " + name + " is waiting to transfer..."); + LOG.debug("Producer: " + name + " is waiting to transfer..."); boolean added = transferQueue.tryTransfer("A" + i, 4000, TimeUnit.MILLISECONDS); if (added) { numberOfProducedMessages.incrementAndGet(); - System.out.println("Producer: " + name + " transferred element: A" + i); + LOG.debug("Producer: " + name + " transferred element: A" + i); } else { - System.out.println("can not add an element due to the timeout"); + LOG.debug("can not add an element due to the timeout"); } } catch (InterruptedException e) { e.printStackTrace(); diff --git a/core-java/src/main/resources/log4j.properties b/core-java/src/main/resources/log4j.properties new file mode 100644 index 0000000000..621cf01735 --- /dev/null +++ b/core-java/src/main/resources/log4j.properties @@ -0,0 +1,6 @@ +log4j.rootLogger=DEBUG, A1 + +log4j.appender.A1=org.apache.log4j.ConsoleAppender + +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/PrimitiveConversionsJUnitTest.java b/core-java/src/test/java/com/baeldung/PrimitiveConversionsJUnitTest.java index 10ceaf85a4..69a6c18dfd 100644 --- a/core-java/src/test/java/com/baeldung/PrimitiveConversionsJUnitTest.java +++ b/core-java/src/test/java/com/baeldung/PrimitiveConversionsJUnitTest.java @@ -1,13 +1,14 @@ package com.baeldung; import org.junit.Test; -import static org.junit.Assert.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.junit.Assert.assertEquals; -/** - * - * @author paulo.motta - */ public class PrimitiveConversionsJUnitTest { + + private static final Logger LOG = LoggerFactory.getLogger(PrimitiveConversionsJUnitTest.class); @Test public void givenDataWithLessBits_whenAttributingToLargerSizeVariable_thenNoSpecialNotation() { @@ -60,36 +61,36 @@ public class PrimitiveConversionsJUnitTest { @Test public void givenByteValue_whenConvertingToChar_thenWidenAndNarrowTakesPlace(){ byte myLargeValueByte = (byte) 130; //0b10000010 - System.out.println(myLargeValueByte); //0b10000010 -126 + LOG.debug("{}", myLargeValueByte); //0b10000010 -126 assertEquals( -126, myLargeValueByte); int myLargeValueInt = myLargeValueByte; - System.out.println(myLargeValueInt); //0b11111111 11111111 11111111 10000010 -126 + LOG.debug("{}", myLargeValueInt); //0b11111111 11111111 11111111 10000010 -126 assertEquals( -126, myLargeValueInt); char myLargeValueChar = (char) myLargeValueByte; - System.out.println(myLargeValueChar);//0b11111111 10000010 unsigned 0xFF82 + LOG.debug("{}", myLargeValueChar);//0b11111111 10000010 unsigned 0xFF82 assertEquals(0xFF82, myLargeValueChar); myLargeValueInt = myLargeValueChar; - System.out.println(myLargeValueInt); //0b11111111 10000010 65410 + LOG.debug("{}", myLargeValueInt); //0b11111111 10000010 65410 assertEquals(65410, myLargeValueInt); byte myOtherByte = (byte) myLargeValueInt; - System.out.println(myOtherByte); //0b10000010 -126 + LOG.debug("{}", myOtherByte); //0b10000010 -126 assertEquals( -126, myOtherByte); char myLargeValueChar2 = 130; //This is an int not a byte! - System.out.println(myLargeValueChar2);//0b00000000 10000010 unsigned 0x0082 + LOG.debug("{}", myLargeValueChar2);//0b00000000 10000010 unsigned 0x0082 assertEquals(0x0082, myLargeValueChar2); int myLargeValueInt2 = myLargeValueChar2; - System.out.println(myLargeValueInt2); //0b00000000 10000010 130 + LOG.debug("{}", myLargeValueInt2); //0b00000000 10000010 130 assertEquals(130, myLargeValueInt2); byte myOtherByte2 = (byte) myLargeValueInt2; - System.out.println(myOtherByte2); //0b10000010 -126 + LOG.debug("{}", myOtherByte2); //0b10000010 -126 assertEquals( -126, myOtherByte2); } diff --git a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureUnitTest.java b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureUnitTest.java index df12c3d79e..501cb1afa0 100644 --- a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureUnitTest.java +++ b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureUnitTest.java @@ -1,20 +1,21 @@ package com.baeldung.completablefuture; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import java.util.concurrent.CancellationException; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.junit.Test; - public class CompletableFutureUnitTest { + private static final Logger LOG = LoggerFactory.getLogger(CompletableFutureUnitTest.class); + + @Test public void whenRunningCompletableFutureAsynchronously_thenGetMethodWaitsForResult() throws InterruptedException, ExecutionException { Future completableFuture = calculateAsync(); @@ -72,7 +73,7 @@ public class CompletableFutureUnitTest { public void whenAddingThenAcceptToFuture_thenFunctionExecutesAfterComputationIsFinished() throws ExecutionException, InterruptedException { CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello"); - CompletableFuture future = completableFuture.thenAccept(s -> System.out.println("Computation returned: " + s)); + CompletableFuture future = completableFuture.thenAccept(s -> LOG.debug("Computation returned: " + s)); future.get(); } @@ -81,7 +82,7 @@ public class CompletableFutureUnitTest { public void whenAddingThenRunToFuture_thenFunctionExecutesAfterComputationIsFinished() throws ExecutionException, InterruptedException { CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello"); - CompletableFuture future = completableFuture.thenRun(() -> System.out.println("Computation finished.")); + CompletableFuture future = completableFuture.thenRun(() -> LOG.debug("Computation finished.")); future.get(); } @@ -111,7 +112,7 @@ public class CompletableFutureUnitTest { @Test public void whenUsingThenAcceptBoth_thenWaitForExecutionOfBothFutures() throws ExecutionException, InterruptedException { - CompletableFuture.supplyAsync(() -> "Hello").thenAcceptBoth(CompletableFuture.supplyAsync(() -> " World"), (s1, s2) -> System.out.println(s1 + s2)); + CompletableFuture.supplyAsync(() -> "Hello").thenAcceptBoth(CompletableFuture.supplyAsync(() -> " World"), (s1, s2) -> LOG.debug(s1 + s2)); } @Test diff --git a/core-java/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorTest.java b/core-java/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorTest.java index 46e107b607..3a0092cf24 100644 --- a/core-java/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorTest.java +++ b/core-java/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorTest.java @@ -17,25 +17,26 @@ public class LongAccumulatorTest { public void givenLongAccumulator_whenApplyActionOnItFromMultipleThrads_thenShouldProduceProperResult() throws InterruptedException { //given ExecutorService executorService = Executors.newFixedThreadPool(8); - LongBinaryOperator higherValueFinder = (currentValue, previousValue) -> currentValue > previousValue ? currentValue : previousValue; - LongAccumulator accumulator = new LongAccumulator(higherValueFinder, 0L); - + LongBinaryOperator sum = Long::sum; + LongAccumulator accumulator = new LongAccumulator(sum, 0L); int numberOfThreads = 4; int numberOfIncrements = 100; //when Runnable accumulateAction = () -> IntStream - .rangeClosed(0, numberOfIncrements) - .forEach(accumulator::accumulate); + .rangeClosed(0, numberOfIncrements) + .forEach(accumulator::accumulate); for (int i = 0; i < numberOfThreads; i++) { executorService.execute(accumulateAction); } + //then executorService.awaitTermination(500, TimeUnit.MILLISECONDS); executorService.shutdown(); + assertEquals(accumulator.get(), 20200); + - assertEquals(accumulator.get(), 100); } } diff --git a/core-java/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListTest.java b/core-java/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListTest.java new file mode 100644 index 0000000000..c71c193372 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListTest.java @@ -0,0 +1,53 @@ +package com.baeldung.concurrent.copyonwrite; + + +import org.junit.Test; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +import static org.assertj.core.api.Assertions.assertThat; + + +public class CopyOnWriteArrayListTest { + + @Test + public void givenCopyOnWriteList_whenIterateAndAddElementToUnderneathList_thenShouldNotChangeIterator() { + //given + final CopyOnWriteArrayList numbers = + new CopyOnWriteArrayList<>(new Integer[]{1, 3, 5, 8}); + + //when + Iterator iterator = numbers.iterator(); + numbers.add(10); + + //then + List result = new LinkedList<>(); + iterator.forEachRemaining(result::add); + assertThat(result).containsOnly(1, 3, 5, 8); + + //and + Iterator iterator2 = numbers.iterator(); + List result2 = new LinkedList<>(); + iterator2.forEachRemaining(result2::add); + + //then + assertThat(result2).containsOnly(1, 3, 5, 8, 10); + + } + + @Test(expected = UnsupportedOperationException.class) + public void givenCopyOnWriteList_whenIterateOverItAndTryToRemoveElement_thenShouldThrowException() { + //given + final CopyOnWriteArrayList numbers = + new CopyOnWriteArrayList<>(new Integer[]{1, 3, 5, 8}); + + //when + Iterator iterator = numbers.iterator(); + while (iterator.hasNext()) { + iterator.remove(); + } + } +} diff --git a/core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorUnitTest.java b/core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java similarity index 77% rename from core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorUnitTest.java rename to core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java index 69c802feb8..84d7a55504 100644 --- a/core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorUnitTest.java +++ b/core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java @@ -1,22 +1,22 @@ package com.baeldung.concurrent.future; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.concurrent.CancellationException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.*; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class SquareCalculatorIntegrationTest { + + private static final Logger LOG = LoggerFactory.getLogger(SquareCalculatorIntegrationTest.class); -public class SquareCalculatorUnitTest { @Rule public TestName name = new TestName(); @@ -33,7 +33,7 @@ public class SquareCalculatorUnitTest { Future result2 = squareCalculator.calculate(1000); while (!result1.isDone() || !result2.isDone()) { - System.out.println(String.format("Task 1 is %s and Task 2 is %s.", result1.isDone() ? "done" : "not done", result2.isDone() ? "done" : "not done")); + LOG.debug(String.format("Task 1 is %s and Task 2 is %s.", result1.isDone() ? "done" : "not done", result2.isDone() ? "done" : "not done")); Thread.sleep(300); } @@ -59,7 +59,7 @@ public class SquareCalculatorUnitTest { Future result2 = squareCalculator.calculate(1000); while (!result1.isDone() || !result2.isDone()) { - System.out.println(String.format("Task 1 is %s and Task 2 is %s.", result1.isDone() ? "done" : "not done", result2.isDone() ? "done" : "not done")); + LOG.debug(String.format("Task 1 is %s and Task 2 is %s.", result1.isDone() ? "done" : "not done", result2.isDone() ? "done" : "not done")); Thread.sleep(300); } @@ -89,6 +89,6 @@ public class SquareCalculatorUnitTest { @After public void end() { - System.out.println(String.format("Test %s took %s ms \n", name.getMethodName(), System.currentTimeMillis() - start)); + LOG.debug(String.format("Test %s took %s ms \n", name.getMethodName(), System.currentTimeMillis() - start)); } } diff --git a/core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueUnitTest.java b/core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java similarity index 80% rename from core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueUnitTest.java rename to core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java index 0272726465..9f7b828a9c 100644 --- a/core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueUnitTest.java +++ b/core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java @@ -1,6 +1,8 @@ package com.baeldung.concurrent.priorityblockingqueue; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.concurrent.PriorityBlockingQueue; @@ -9,7 +11,10 @@ import java.util.concurrent.TimeUnit; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.util.Lists.newArrayList; -public class PriorityBlockingQueueUnitTest { +public class PriorityBlockingQueueIntegrationTest { + + private static final Logger LOG = LoggerFactory.getLogger(PriorityBlockingQueueIntegrationTest.class); + @Test public void givenUnorderedValues_whenPolling_thenShouldOrderQueue() throws InterruptedException { @@ -32,11 +37,11 @@ public class PriorityBlockingQueueUnitTest { PriorityBlockingQueue queue = new PriorityBlockingQueue<>(); final Thread thread = new Thread(() -> { - System.out.println("Polling..."); + LOG.debug("Polling..."); while (true) { try { Integer poll = queue.take(); - System.out.println("Polled: " + poll); + LOG.debug("Polled: " + poll); } catch (InterruptedException e) { } } @@ -44,7 +49,7 @@ public class PriorityBlockingQueueUnitTest { thread.start(); Thread.sleep(TimeUnit.SECONDS.toMillis(5)); - System.out.println("Adding to queue"); + LOG.debug("Adding to queue"); queue.addAll(newArrayList(1, 5, 6, 1, 2, 6, 7)); Thread.sleep(TimeUnit.SECONDS.toMillis(1)); diff --git a/core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetTest.java b/core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetTest.java rename to core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java index a2dbbae520..92fff8446b 100644 --- a/core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetTest.java +++ b/core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java @@ -13,7 +13,7 @@ import java.util.stream.IntStream; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -public class ConcurrentSkipListSetTest { +public class ConcurrentSkipListSetIntegrationTest { @Test public void givenThreadsProducingEvents_whenGetForEventsFromLastMinute_thenReturnThoseEventsInTheLockFreeWay() throws InterruptedException { diff --git a/core-java/src/test/java/com/baeldung/dynamicproxy/DynamicProxyTest.java b/core-java/src/test/java/com/baeldung/dynamicproxy/DynamicProxyTest.java new file mode 100644 index 0000000000..dc7f9366ba --- /dev/null +++ b/core-java/src/test/java/com/baeldung/dynamicproxy/DynamicProxyTest.java @@ -0,0 +1,57 @@ +package com.baeldung.dynamicproxy; + +import org.junit.Test; + +import java.lang.reflect.Proxy; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +public class DynamicProxyTest { + + @Test + public void givenDynamicProxy_thenPutWorks() { + Map proxyInstance = (Map) Proxy.newProxyInstance(DynamicProxyTest.class.getClassLoader(), new Class[] { Map.class }, new DynamicInvocationHandler()); + + proxyInstance.put("hello", "world"); + } + + @Test + public void givenInlineDynamicProxy_thenGetWorksOtherMethodsDoNot() { + Map proxyInstance = (Map) Proxy.newProxyInstance(DynamicProxyTest.class.getClassLoader(), new Class[] { Map.class }, (proxy, method, methodArgs) -> { + + if (method.getName().equals("get")) { + return 42; + } else { + throw new UnsupportedOperationException("Unsupported method: " + method.getName()); + } + }); + + int result = (int) proxyInstance.get("hello"); + + assertEquals(42, result); + + try { + proxyInstance.put("hello", "world"); + fail(); + } catch(UnsupportedOperationException e) { + // expected + } + } + + @Test + public void givenTimingDynamicProxy_thenMethodInvokationsProduceTiming() { + Map mapProxyInstance = (Map) Proxy.newProxyInstance(DynamicProxyTest.class.getClassLoader(), new Class[] { Map.class }, new TimingDynamicInvocationHandler(new HashMap<>())); + + mapProxyInstance.put("hello", "world"); + assertEquals("world", mapProxyInstance.get("hello")); + + CharSequence csProxyInstance = (CharSequence) Proxy.newProxyInstance(DynamicProxyTest.class.getClassLoader(), new Class[] { CharSequence.class }, new TimingDynamicInvocationHandler("Hello World")); + + assertEquals('l', csProxyInstance.charAt(2)); + assertEquals(11, csProxyInstance.length()); + } + +} diff --git a/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java b/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java index 6f3384c8eb..1036df0bb8 100644 --- a/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java +++ b/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java @@ -1,8 +1,9 @@ package com.baeldung.functionalinterface; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import com.google.common.util.concurrent.Uninterruptibles; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.HashMap; @@ -14,12 +15,13 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.junit.Test; - -import com.google.common.util.concurrent.Uninterruptibles; +import static org.junit.Assert.*; public class FunctionalInterfaceUnitTest { + private static final Logger LOG = LoggerFactory.getLogger(FunctionalInterfaceUnitTest.class); + + @Test public void whenPassingLambdaToComputeIfAbsent_thenTheValueGetsComputedAndPutIntoMap() { Map nameMap = new HashMap<>(); @@ -65,7 +67,7 @@ public class FunctionalInterfaceUnitTest { @Test public void whenPassingLambdaToThreadConstructor_thenLambdaInferredToRunnable() { - Thread thread = new Thread(() -> System.out.println("Hello From Another Thread")); + Thread thread = new Thread(() -> LOG.debug("Hello From Another Thread")); thread.start(); } @@ -93,7 +95,7 @@ public class FunctionalInterfaceUnitTest { @Test public void whenUsingConsumerInForEach_thenConsumerExecutesForEachListElement() { List names = Arrays.asList("John", "Freddy", "Samuel"); - names.forEach(name -> System.out.println("Hello, " + name)); + names.forEach(name -> LOG.debug("Hello, " + name)); } @Test @@ -103,7 +105,7 @@ public class FunctionalInterfaceUnitTest { ages.put("Freddy", 24); ages.put("Samuel", 30); - ages.forEach((name, age) -> System.out.println(name + " is " + age + " years old")); + ages.forEach((name, age) -> LOG.debug(name + " is " + age + " years old")); } @Test diff --git a/core-java/src/test/java/com/baeldung/http/HttpRequestTest.java b/core-java/src/test/java/com/baeldung/http/HttpRequestTest.java new file mode 100644 index 0000000000..f238f7df7c --- /dev/null +++ b/core-java/src/test/java/com/baeldung/http/HttpRequestTest.java @@ -0,0 +1,126 @@ +package com.baeldung.http; + +import org.apache.commons.lang.StringUtils; +import org.junit.Test; +import static org.junit.Assert.*; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.CookieManager; +import java.net.HttpCookie; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class HttpRequestTest { + + @Test + public void whenGetRequest_thenOk() throws IOException { + URL url = new URL("http://example.com"); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + + Map parameters = new HashMap<>(); + parameters.put("param1", "val"); + con.setDoOutput(true); + DataOutputStream out = new DataOutputStream(con.getOutputStream()); + out.writeBytes(ParameterStringBuilder.getParamsString(parameters)); + out.flush(); + out.close(); + + con.setConnectTimeout(5000); + con.setReadTimeout(5000); + + int status = con.getResponseCode(); + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer content = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + in.close(); + + assertEquals("status code incorrect", status, 200); + assertTrue("content incorrect", content.toString().contains("Example Domain")); + } + + @Test + public void whenPostRequest_thenOk() throws IOException { + URL url = new URL("http://example.com"); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("POST"); + con.setRequestProperty("Content-Type", "application/json"); + + Map parameters = new HashMap<>(); + parameters.put("param1", "val"); + con.setDoOutput(true); + DataOutputStream out = new DataOutputStream(con.getOutputStream()); + out.writeBytes(ParameterStringBuilder.getParamsString(parameters)); + out.flush(); + out.close(); + + int status = con.getResponseCode(); + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer content = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + in.close(); + + assertEquals("status code incorrect", status, 200); + } + + @Test + public void whenGetCookies_thenOk() throws IOException { + URL url = new URL("http://example.com"); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + + CookieManager cookieManager = new CookieManager(); + String cookiesHeader = con.getHeaderField("Set-Cookie"); + Optional usernameCookie = null; + if (cookiesHeader != null) { + List cookies = HttpCookie.parse(cookiesHeader); + cookies.forEach(cookie -> cookieManager.getCookieStore().add(null, cookie)); + usernameCookie = cookies.stream().findAny().filter(cookie -> cookie.getName().equals("username")); + } + + if (usernameCookie == null) { + cookieManager.getCookieStore().add(null, new HttpCookie("username", "john")); + } + + con.disconnect(); + + con = (HttpURLConnection) url.openConnection(); + con.setRequestProperty("Cookie", StringUtils.join(cookieManager.getCookieStore().getCookies(), ";")); + + int status = con.getResponseCode(); + + assertEquals("status code incorrect", status, 200); + } + + @Test + public void whenRedirect_thenOk() throws IOException { + URL url = new URL("http://example.com"); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + + con.setInstanceFollowRedirects(true); + int status = con.getResponseCode(); + + if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM) { + String location = con.getHeaderField("Location"); + URL newUrl = new URL(location); + con = (HttpURLConnection) newUrl.openConnection(); + } + + assertEquals("status code incorrect", con.getResponseCode(), 200); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionTest.java b/core-java/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionTest.java index 100d25ab8d..d12f07286b 100644 --- a/core-java/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionTest.java +++ b/core-java/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionTest.java @@ -6,9 +6,10 @@ import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import static java.util.Arrays.asList; -import static org.testng.Assert.assertEquals; +import static org.junit.Assert.assertEquals; public class ConcurrentModificationExceptionTest { + @Test public void changingContentWithSetDoesNotThrowConcurrentModificationException() throws Exception { ArrayList array = new ArrayList<>(asList(0, "one", 2, "three")); diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTests.java b/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTests.java index d102680aa4..3cd93a4d44 100644 --- a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTests.java +++ b/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTests.java @@ -8,7 +8,9 @@ import java.util.TreeMap; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; -import static org.testng.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; public class ConcurrentNavigableMapManualTests { diff --git a/core-java/src/test/java/com/baeldung/java/map/MapTest.java b/core-java/src/test/java/com/baeldung/java/map/MapTest.java index ce2710e176..ecdc3c5c70 100644 --- a/core-java/src/test/java/com/baeldung/java/map/MapTest.java +++ b/core-java/src/test/java/com/baeldung/java/map/MapTest.java @@ -1,24 +1,18 @@ package com.baeldung.java.map; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import java.util.Collection; -import java.util.Comparator; -import java.util.ConcurrentModificationException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.TreeMap; - import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; +import java.util.Map.Entry; + +import static org.junit.Assert.*; public class MapTest { + private static final Logger LOG = LoggerFactory.getLogger(MapTest.class); + + @Test public void givenHashMap_whenRetrievesKeyset_thenCorrect() { Map map = new HashMap<>(); @@ -208,22 +202,22 @@ public class MapTest { MyKey k2 = new MyKey(2, "secondKey"); MyKey k3 = new MyKey(2, "thirdKey"); - System.out.println("storing value for k1"); + LOG.debug("storing value for k1"); map.put(k1, "firstValue"); - System.out.println("storing value for k2"); + LOG.debug("storing value for k2"); map.put(k2, "secondValue"); - System.out.println("storing value for k3"); + LOG.debug("storing value for k3"); map.put(k3, "thirdValue"); - System.out.println("retrieving value for k1"); + LOG.debug("retrieving value for k1"); String v1 = map.get(k1); - System.out.println("retrieving value for k2"); + LOG.debug("retrieving value for k2"); String v2 = map.get(k2); - System.out.println("retrieving value for k3"); + LOG.debug("retrieving value for k3"); String v3 = map.get(k3); assertEquals("firstValue", v1); diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java index da586706a2..ebab715306 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -1,5 +1,8 @@ package com.baeldung.java.nio2.async; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -10,6 +13,8 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; public class AsyncEchoClient { + private static final Logger LOG = LoggerFactory.getLogger(AsyncEchoClient.class); + private AsynchronousSocketChannel client; private Future future; private static AsyncEchoClient instance; @@ -75,11 +80,11 @@ public class AsyncEchoClient { client.start(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line; - System.out.println("Message to server:"); + LOG.debug("Message to server:"); while ((line = br.readLine()) != null) { String response = client.sendMessage(line); - System.out.println("response from server: " + response); - System.out.println("Message to server:"); + LOG.debug("response from server: " + response); + LOG.debug("Message to server:"); } } diff --git a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java index 24097542d0..2fef04e9d4 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java @@ -2,6 +2,8 @@ package com.baeldung.java.nio2.attributes; import org.junit.BeforeClass; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.nio.file.Files; @@ -15,6 +17,10 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class BasicAttribsTest { + + private static final Logger LOG = LoggerFactory.getLogger(BasicAttribsTest.class); + + private static final String HOME = System.getProperty("user.home"); private static BasicFileAttributes basicAttribs; @@ -31,9 +37,9 @@ public class BasicAttribsTest { FileTime modified = basicAttribs.lastModifiedTime(); FileTime accessed = basicAttribs.lastAccessTime(); - System.out.println("Created: " + created); - System.out.println("Modified: " + modified); - System.out.println("Accessed: " + accessed); + LOG.debug("Created: " + created); + LOG.debug("Modified: " + modified); + LOG.debug("Accessed: " + accessed); } diff --git a/core-java/src/test/java/com/baeldung/java/set/SetTest.java b/core-java/src/test/java/com/baeldung/java/set/SetTest.java index 59e135283f..d669333b5c 100644 --- a/core-java/src/test/java/com/baeldung/java/set/SetTest.java +++ b/core-java/src/test/java/com/baeldung/java/set/SetTest.java @@ -1,18 +1,18 @@ package com.baeldung.java.set; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import java.util.ConcurrentModificationException; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; -import java.util.TreeSet; - -import org.junit.Test; - public class SetTest { + private static final Logger LOG = LoggerFactory.getLogger(SetTest.class); + @Test public void givenTreeSet_whenRetrievesObjects_thenNaturalOrder() { Set set = new TreeSet<>(); @@ -44,22 +44,23 @@ public class SetTest { @Test public void givenHashSetAndTreeSet_whenAddObjects_thenHashSetIsFaster() { - Set set = new HashSet<>(); - long startTime = System.nanoTime(); - set.add("Baeldung"); - set.add("is"); - set.add("Awesome"); - long endTime = System.nanoTime(); - long duration1 = (endTime - startTime); - Set set2 = new TreeSet<>(); - startTime = System.nanoTime(); - set2.add("Baeldung"); - set2.add("is"); - set2.add("Awesome"); - endTime = System.nanoTime(); - long duration2 = (endTime - startTime); - assertTrue(duration1 < duration2); + long hashSetInsertionTime = measureExecution(() -> { + Set set = new HashSet<>(); + set.add("Baeldung"); + set.add("is"); + set.add("Awesome"); + }); + + long treeSetInsertionTime = measureExecution(() -> { + Set set = new TreeSet<>(); + set.add("Baeldung"); + set.add("is"); + set.add("Awesome"); + }); + + LOG.debug("HashSet insertion time: {}", hashSetInsertionTime); + LOG.debug("TreeSet insertion time: {}", treeSetInsertionTime); } @Test @@ -86,4 +87,13 @@ public class SetTest { it.next(); } } + + private static long measureExecution(Runnable task) { + long startTime = System.nanoTime(); + task.run(); + long endTime = System.nanoTime(); + long executionTime = endTime - startTime; + LOG.debug(String.valueOf(executionTime)); + return executionTime; + } } diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ForEachTest.java b/core-java/src/test/java/com/baeldung/java8/Java8ForEachTest.java index d9b0aa9d98..07d2411e49 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8ForEachTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8ForEachTest.java @@ -1,13 +1,17 @@ package com.baeldung.java8; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; -import org.junit.Test; - public class Java8ForEachTest { + private static final Logger LOG = LoggerFactory.getLogger(Java8ForEachTest.class); + @Test public void compareForEachMethods_thenPrintResults() { @@ -19,33 +23,33 @@ public class Java8ForEachTest { names.add("Ellen"); // Java 5 - for-loop - System.out.println("--- Enhanced for-loop ---"); + LOG.debug("--- Enhanced for-loop ---"); for (String name : names) { - System.out.println(name); + LOG.debug(name); } // Java 8 - forEach - System.out.println("--- forEach method ---"); - names.forEach(name -> System.out.println(name)); + LOG.debug("--- forEach method ---"); + names.forEach(name -> LOG.debug(name)); // Anonymous inner class that implements Consumer interface - System.out.println("--- Anonymous inner class ---"); + LOG.debug("--- Anonymous inner class ---"); names.forEach(new Consumer() { public void accept(String name) { - System.out.println(name); + LOG.debug(name); } }); // Create a Consumer implementation to then use in a forEach method Consumer consumerNames = name -> { - System.out.println(name); + LOG.debug(name); }; - System.out.println("--- Implementation of Consumer interface ---"); + LOG.debug("--- Implementation of Consumer interface ---"); names.forEach(consumerNames); // Print elements using a Method Reference - System.out.println("--- Method Reference ---"); - names.forEach(System.out::println); + LOG.debug("--- Method Reference ---"); + names.forEach(LOG::debug); } diff --git a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java b/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java index b5281f5bf4..28fea0fd31 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java @@ -2,6 +2,8 @@ package com.baeldung.java8; import org.junit.Assert; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.PrintWriter; import java.io.StringWriter; @@ -10,6 +12,9 @@ import java.util.Scanner; public class JavaTryWithResourcesLongRunningUnitTest { + private static final Logger LOG = LoggerFactory.getLogger(JavaTryWithResourcesLongRunningUnitTest.class); + + private static final String TEST_STRING_HELLO_WORLD = "Hello World"; private Date resource1Date, resource2Date; @@ -52,32 +57,32 @@ public class JavaTryWithResourcesLongRunningUnitTest { class AutoCloseableResourcesFirst implements AutoCloseable { public AutoCloseableResourcesFirst() { - System.out.println("Constructor -> AutoCloseableResources_First"); + LOG.debug("Constructor -> AutoCloseableResources_First"); } public void doSomething() { - System.out.println("Something -> AutoCloseableResources_First"); + LOG.debug("Something -> AutoCloseableResources_First"); } @Override public void close() throws Exception { - System.out.println("Closed AutoCloseableResources_First"); + LOG.debug("Closed AutoCloseableResources_First"); resource1Date = new Date(); } } class AutoCloseableResourcesSecond implements AutoCloseable { public AutoCloseableResourcesSecond() { - System.out.println("Constructor -> AutoCloseableResources_Second"); + LOG.debug("Constructor -> AutoCloseableResources_Second"); } public void doSomething() { - System.out.println("Something -> AutoCloseableResources_Second"); + LOG.debug("Something -> AutoCloseableResources_Second"); } @Override public void close() throws Exception { - System.out.println("Closed AutoCloseableResources_Second"); + LOG.debug("Closed AutoCloseableResources_Second"); resource2Date = new Date(); Thread.sleep(10000); } diff --git a/core-java/src/test/java/com/baeldung/java8/comparator/Employee.java b/core-java/src/test/java/com/baeldung/java8/comparator/Employee.java index 0ef10410a9..bec0c37880 100644 --- a/core-java/src/test/java/com/baeldung/java8/comparator/Employee.java +++ b/core-java/src/test/java/com/baeldung/java8/comparator/Employee.java @@ -1,6 +1,4 @@ package com.baeldung.java8.comparator; -/* - import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -22,4 +20,3 @@ public class Employee implements Comparable{ } } -*/ \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/comparator/Java8ComparatorTest.java b/core-java/src/test/java/com/baeldung/java8/comparator/Java8ComparatorTest.java index 8e1cfa67af..62dd18972e 100644 --- a/core-java/src/test/java/com/baeldung/java8/comparator/Java8ComparatorTest.java +++ b/core-java/src/test/java/com/baeldung/java8/comparator/Java8ComparatorTest.java @@ -1,5 +1,4 @@ package com.baeldung.java8.comparator; -/* import java.util.Arrays; import java.util.Comparator; @@ -164,5 +163,3 @@ public class Java8ComparatorTest { } - -*/ \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersTest.java b/core-java/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersTest.java index 05e84e2dab..db9631655f 100644 --- a/core-java/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersTest.java +++ b/core-java/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersTest.java @@ -2,6 +2,8 @@ package com.baeldung.java8.lambda.exceptions; import org.junit.Before; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.Arrays; @@ -11,6 +13,9 @@ import static com.baeldung.java8.lambda.exceptions.LambdaExceptionWrappers.*; public class LambdaExceptionWrappersTest { + private static final Logger LOG = LoggerFactory.getLogger(LambdaExceptionWrappersTest.class); + + private List integers; @Before @@ -20,12 +25,12 @@ public class LambdaExceptionWrappersTest { @Test public void whenNoExceptionFromLambdaWrapper_thenSuccess() { - integers.forEach(lambdaWrapper(i -> System.out.println(50 / i))); + integers.forEach(lambdaWrapper(i -> LOG.debug("{}", 50 / i))); } @Test public void whenNoExceptionFromConsumerWrapper_thenSuccess() { - integers.forEach(consumerWrapper(i -> System.out.println(50 / i), ArithmeticException.class)); + integers.forEach(consumerWrapper(i -> LOG.debug("{}", 50 / i), ArithmeticException.class)); } @Test(expected = RuntimeException.class) diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index bf2078186c..13e42e0806 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -3,6 +3,8 @@ package com.baeldung.java8.optional; import com.baeldung.optional.Modem; import com.baeldung.optional.Person; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.List; @@ -12,6 +14,10 @@ import java.util.Optional; import static org.junit.Assert.*; public class OptionalTest { + + private static final Logger LOG = LoggerFactory.getLogger(OptionalTest.class); + + // creating Optional @Test public void whenCreatesEmptyOptional_thenCorrect() { @@ -66,7 +72,7 @@ public class OptionalTest { @Test public void givenOptional_whenIfPresentWorks_thenCorrect() { Optional opt = Optional.of("baeldung"); - opt.ifPresent(name -> System.out.println(name.length())); + opt.ifPresent(name -> LOG.debug("{}", name.length())); } // returning Value With get() @@ -200,11 +206,11 @@ public class OptionalTest { @Test public void whenOrElseGetAndOrElseOverlap_thenCorrect() { String text = null; - System.out.println("Using orElseGet:"); + LOG.debug("Using orElseGet:"); String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); assertEquals("Default Value", defaultText); - System.out.println("Using orElse:"); + LOG.debug("Using orElse:"); defaultText = Optional.ofNullable(text).orElse(getMyDefault()); assertEquals("Default Value", defaultText); } @@ -212,11 +218,11 @@ public class OptionalTest { @Test public void whenOrElseGetAndOrElseDiffer_thenCorrect() { String text = "Text present"; - System.out.println("Using orElseGet:"); + LOG.debug("Using orElseGet:"); String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); assertEquals("Text present", defaultText); - System.out.println("Using orElse:"); + LOG.debug("Using orElse:"); defaultText = Optional.ofNullable(text).orElse(getMyDefault()); assertEquals("Text present", defaultText); } @@ -229,7 +235,7 @@ public class OptionalTest { } public String getMyDefault() { - System.out.println("Getting default value..."); + LOG.debug("Getting default value..."); return "Default Value"; } } \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/jdbc/JdbcTest.java b/core-java/src/test/java/com/baeldung/jdbc/JdbcTest.java new file mode 100644 index 0000000000..ff786c7267 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/jdbc/JdbcTest.java @@ -0,0 +1,158 @@ +package com.baeldung.jdbc; + +import static org.junit.Assert.*; + +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Types; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.IntStream; + +import org.apache.log4j.Logger; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JdbcTest { + + private static final Logger LOG = Logger.getLogger(JdbcTest.class); + + private Connection con; + + @Before + public void setup() throws ClassNotFoundException, SQLException { + Class.forName("com.mysql.cj.jdbc.Driver"); + + con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDb?noAccessToProcedureBodies=true", "user1", "pass"); + + Statement stmt = con.createStatement(); + + String tableSql = "CREATE TABLE IF NOT EXISTS employees (emp_id int PRIMARY KEY AUTO_INCREMENT, name varchar(30), position varchar(30), salary double)"; + stmt.execute(tableSql); + + } + + @Test + public void whenInsertUpdateRecord_thenCorrect() throws SQLException { + Statement stmt = con.createStatement(); + + String insertSql = "INSERT INTO employees(name, position, salary) values ('john', 'developer', 2000)"; + stmt.executeUpdate(insertSql); + + String selectSql = "SELECT * FROM employees"; + ResultSet resultSet = stmt.executeQuery(selectSql); + + List employees = new ArrayList<>(); + + while (resultSet.next()) { + Employee emp = new Employee(); + emp.setId(resultSet.getInt("emp_id")); + emp.setName(resultSet.getString("name")); + emp.setSalary(resultSet.getDouble("salary")); + emp.setPosition(resultSet.getString("position")); + employees.add(emp); + } + + assertEquals("employees list size incorrect", 1, employees.size()); + assertEquals("name incorrect", "john", employees.iterator().next().getName()); + assertEquals("position incorrect", "developer", employees.iterator().next().getPosition()); + assertEquals("salary incorrect", 2000, employees.iterator().next().getSalary(), 0.1); + + Statement updatableStmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); + ResultSet updatableResultSet = updatableStmt.executeQuery(selectSql); + + updatableResultSet.moveToInsertRow(); + updatableResultSet.updateString("name", "mark"); + updatableResultSet.updateString("position", "analyst"); + updatableResultSet.updateDouble("salary", 2000); + updatableResultSet.insertRow(); + + String updatePositionSql = "UPDATE employees SET position=? WHERE emp_id=?"; + PreparedStatement pstmt = con.prepareStatement(updatePositionSql); + pstmt.setString(1, "lead developer"); + pstmt.setInt(2, 1); + + String updateSalarySql = "UPDATE employees SET salary=? WHERE emp_id=?"; + PreparedStatement pstmt2 = con.prepareStatement(updateSalarySql); + pstmt.setDouble(1, 3000); + pstmt.setInt(2, 1); + + boolean autoCommit = con.getAutoCommit(); + + try { + con.setAutoCommit(false); + pstmt.executeUpdate(); + pstmt2.executeUpdate(); + con.commit(); + } catch (SQLException exc) { + con.rollback(); + } finally { + con.setAutoCommit(autoCommit); + } + } + + @Test + public void whenCallProcedure_thenCorrect() { + + try { + String preparedSql = "{call insertEmployee(?,?,?,?)}"; + CallableStatement cstmt = con.prepareCall(preparedSql); + cstmt.setString(2, "ana"); + cstmt.setString(3, "tester"); + cstmt.setDouble(4, 2000); + cstmt.registerOutParameter(1, Types.INTEGER); + cstmt.execute(); + int new_id = cstmt.getInt(1); + assertTrue(new_id > 0); + } catch (SQLException exc) { + LOG.error("Procedure incorrect or does not exist!"); + } + } + + @Test + public void whenReadMetadata_thenCorrect() throws SQLException { + + DatabaseMetaData dbmd = con.getMetaData(); + ResultSet tablesResultSet = dbmd.getTables(null, null, "%", null); + while (tablesResultSet.next()) { + LOG.info(tablesResultSet.getString("TABLE_NAME")); + } + + String selectSql = "SELECT * FROM employees"; + Statement stmt = con.createStatement(); + ResultSet resultSet = stmt.executeQuery(selectSql); + ResultSetMetaData rsmd = resultSet.getMetaData(); + int nrColumns = rsmd.getColumnCount(); + assertEquals(nrColumns, 4); + + IntStream.range(1, nrColumns).forEach(i -> { + try { + LOG.info(rsmd.getColumnName(i)); + } catch (SQLException e) { + e.printStackTrace(); + } + }); + } + + @After + public void closeConnection() throws SQLException { + + Statement updatableStmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); + ResultSet updatableResultSet = updatableStmt.executeQuery("SELECT * FROM employees"); + + while (updatableResultSet.next()) { + updatableResultSet.deleteRow(); + } + + con.close(); + } + +} diff --git a/core-java/src/test/java/com/baeldung/mappedbytebuffer/MappedByteBufferTest.java b/core-java/src/test/java/com/baeldung/mappedbytebuffer/MappedByteBufferTest.java new file mode 100644 index 0000000000..4064d38267 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/mappedbytebuffer/MappedByteBufferTest.java @@ -0,0 +1,68 @@ +package com.baeldung.mappedbytebuffer; + +import org.junit.Test; + +import java.nio.CharBuffer; +import java.nio.MappedByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.EnumSet; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class MappedByteBufferTest { + + + @Test + public void givenFileChannel_whenReadToTheMappedByteBuffer_thenShouldSuccess() throws Exception { + //given + CharBuffer charBuffer = null; + Path pathToRead = getFileURIFromResources("fileToRead.txt"); + + //when + try (FileChannel fileChannel = (FileChannel) Files.newByteChannel(pathToRead, EnumSet.of(StandardOpenOption.READ))) { + MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, fileChannel.size()); + + if (mappedByteBuffer != null) { + charBuffer = Charset.forName("UTF-8").decode(mappedByteBuffer); + } + } + + //then + assertNotNull(charBuffer); + assertEquals(charBuffer.toString(), "This is a content of the file"); + } + + @Test + public void givenPath_whenWriteToItUsingMappedByteBuffer_thenShouldSuccessfullyWrite() throws Exception { + //given + CharBuffer charBuffer = CharBuffer.wrap("This will be written to the file"); + Path pathToWrite = getFileURIFromResources("fileToWriteTo.txt"); + + //when + try (FileChannel fileChannel = (FileChannel) Files.newByteChannel(pathToWrite, + EnumSet.of(StandardOpenOption.READ, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING))) { + MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_WRITE, 0, charBuffer.length()); + + if (mappedByteBuffer != null) { + mappedByteBuffer.put(Charset.forName("utf-8").encode(charBuffer)); + } + } + + //then + List fileContent = Files.readAllLines(pathToWrite); + assertEquals(fileContent.get(0), "This will be written to the file"); + + } + + public Path getFileURIFromResources(String fileName) throws Exception { + ClassLoader classLoader = getClass().getClassLoader(); + return Paths.get(classLoader.getResource(fileName).getPath()); + } +} diff --git a/core-java/src/test/java/com/baeldung/string/SplitTest.java b/core-java/src/test/java/com/baeldung/string/SplitTest.java new file mode 100644 index 0000000000..d2e307e68d --- /dev/null +++ b/core-java/src/test/java/com/baeldung/string/SplitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.string; + +import org.apache.commons.lang.StringUtils; +import org.junit.Test; + +import java.util.Arrays; + +import static org.junit.Assert.assertArrayEquals; + +public class SplitTest { + + @Test + public void givenString_whenSplit_thenRetrunsArray_through_JavaLangString() { + assertArrayEquals("split by comma", Arrays.asList("peter", "james", "thomas").toArray(), "peter,james,thomas".split(",")); + assertArrayEquals("split by whitespace", Arrays.asList("car", "jeep", "scooter").toArray(), "car jeep scooter".split(" ")); + assertArrayEquals("split by hyphen", Arrays.asList("1", "120", "232323").toArray(), "1-120-232323".split("-")); + assertArrayEquals("split by dot", Arrays.asList("192", "168", "1", "178").toArray(), "192.168.1.178".split("\\.")); + assertArrayEquals("split by a regex", Arrays.asList("b", "a", "e", "l", "d", "u", "n", "g").toArray(), + "b a, e, l.d u, n g".split("\\s+|,\\s*|\\.\\s*")); + } + + @Test + public void givenString_whenSplit_thenRetrunsArray_through_StringUtils() { + StringUtils.split("car jeep scooter"); + + assertArrayEquals("split by whitespace", Arrays.asList("car", "jeep", "scooter").toArray(), StringUtils.split("car jeep scooter")); + assertArrayEquals("split by space, extra spaces ignored", Arrays.asList("car", "jeep", "scooter").toArray(), + StringUtils.split("car jeep scooter")); + assertArrayEquals("split by colon", Arrays.asList("car", "jeep", "scooter").toArray(), StringUtils.split("car:jeep:scooter", ":")); + assertArrayEquals("split by dot", Arrays.asList("car", "jeep", "scooter").toArray(), StringUtils.split("car.jeep.scooter", ".")); + } +} diff --git a/core-java/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueTest.java b/core-java/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueTest.java index 5d73e02e4f..86e1c0825d 100644 --- a/core-java/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueTest.java +++ b/core-java/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueTest.java @@ -3,6 +3,8 @@ package com.baeldung.synchronousqueue; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; @@ -12,6 +14,9 @@ import static junit.framework.TestCase.assertEquals; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class SynchronousQueueTest { + private static final Logger LOG = LoggerFactory.getLogger(SynchronousQueueTest.class); + + @Test public void givenTwoThreads_whenWantToExchangeUsingLockGuardedVariable_thenItSucceed() throws InterruptedException { //given @@ -21,7 +26,7 @@ public class SynchronousQueueTest { Runnable producer = () -> { Integer producedElement = ThreadLocalRandom.current().nextInt(); - System.out.println("Saving an element: " + producedElement + " to the exchange point"); + LOG.debug("Saving an element: " + producedElement + " to the exchange point"); sharedState.set(producedElement); countDownLatch.countDown(); }; @@ -30,7 +35,7 @@ public class SynchronousQueueTest { try { countDownLatch.await(); Integer consumedElement = sharedState.get(); - System.out.println("consumed an element: " + consumedElement + " from the exchange point"); + LOG.debug("consumed an element: " + consumedElement + " from the exchange point"); } catch (InterruptedException ex) { ex.printStackTrace(); } @@ -55,7 +60,7 @@ public class SynchronousQueueTest { Runnable producer = () -> { Integer producedElement = ThreadLocalRandom.current().nextInt(); try { - System.out.println("Saving an element: " + producedElement + " to the exchange point"); + LOG.debug("Saving an element: " + producedElement + " to the exchange point"); queue.put(producedElement); } catch (InterruptedException ex) { ex.printStackTrace(); @@ -65,7 +70,7 @@ public class SynchronousQueueTest { Runnable consumer = () -> { try { Integer consumedElement = queue.take(); - System.out.println("consumed an element: " + consumedElement + " from the exchange point"); + LOG.debug("consumed an element: " + consumedElement + " from the exchange point"); } catch (InterruptedException ex) { ex.printStackTrace(); } diff --git a/core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalTest.java b/core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalIntegrationTest.java similarity index 96% rename from core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalTest.java rename to core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalIntegrationTest.java index ac2e8fbe63..cc4b4f021a 100644 --- a/core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalTest.java +++ b/core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalIntegrationTest.java @@ -7,7 +7,7 @@ import java.util.concurrent.ExecutionException; import static org.junit.Assert.assertEquals; -public class ThreadLocalTest { +public class ThreadLocalIntegrationTest { @Test public void givenThreadThatStoresContextInAMap_whenStartThread_thenShouldSetContextForBothUsers() throws ExecutionException, InterruptedException { //when diff --git a/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java b/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java index a62ec99043..9d8d3c884b 100644 --- a/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java +++ b/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java @@ -1,24 +1,19 @@ package com.baeldung.threadpool; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicInteger; + import static org.junit.Assert.assertEquals; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.Future; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import org.junit.Test; - public class CoreThreadPoolIntegrationTest { + private static final Logger LOG = LoggerFactory.getLogger(CoreThreadPoolIntegrationTest.class); + + @Test(timeout = 1000) public void whenCallingExecuteWithRunnable_thenRunnableIsExecuted() throws InterruptedException { @@ -26,7 +21,7 @@ public class CoreThreadPoolIntegrationTest { Executor executor = Executors.newSingleThreadExecutor(); executor.execute(() -> { - System.out.println("Hello World"); + LOG.debug("Hello World"); lock.countDown(); }); @@ -115,7 +110,7 @@ public class CoreThreadPoolIntegrationTest { ScheduledExecutorService executor = Executors.newScheduledThreadPool(5); executor.schedule(() -> { - System.out.println("Hello World"); + LOG.debug("Hello World"); lock.countDown(); }, 500, TimeUnit.MILLISECONDS); @@ -130,7 +125,7 @@ public class CoreThreadPoolIntegrationTest { ScheduledExecutorService executor = Executors.newScheduledThreadPool(5); ScheduledFuture future = executor.scheduleAtFixedRate(() -> { - System.out.println("Hello World"); + LOG.debug("Hello World"); lock.countDown(); }, 500, 100, TimeUnit.MILLISECONDS); diff --git a/core-java/src/test/java/com/baeldung/transferqueue/TransferQueueTest.java b/core-java/src/test/java/com/baeldung/transferqueue/TransferQueueIntegrationTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/transferqueue/TransferQueueTest.java rename to core-java/src/test/java/com/baeldung/transferqueue/TransferQueueIntegrationTest.java index 1af9821ed0..e49738e983 100644 --- a/core-java/src/test/java/com/baeldung/transferqueue/TransferQueueTest.java +++ b/core-java/src/test/java/com/baeldung/transferqueue/TransferQueueIntegrationTest.java @@ -9,7 +9,7 @@ import java.util.concurrent.*; import static junit.framework.TestCase.assertEquals; @FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class TransferQueueTest { +public class TransferQueueIntegrationTest { @Test public void whenMultipleConsumersAndProducers_thenProcessAllMessages() throws InterruptedException { diff --git a/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java b/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java index e8007ad4c4..3f48049fe3 100644 --- a/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java +++ b/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java @@ -1,15 +1,10 @@ package org.baeldung.core.exceptions; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - +import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.junit.Test; +import java.io.*; public class FileNotFoundExceptionUnitTest { @@ -22,7 +17,7 @@ public class FileNotFoundExceptionUnitTest { try { readFailingFile(); } catch (FileNotFoundException ex) { - throw new BusinessException("BusinessException: necessary file was not present.", ex); + throw new BusinessException("BusinessException: necessary file was not present."); } } @@ -35,7 +30,7 @@ public class FileNotFoundExceptionUnitTest { new File(fileName).createNewFile(); readFailingFile(); } catch (IOException ioe) { - throw new RuntimeException("BusinessException: even creation is not possible.", ioe); + throw new RuntimeException("BusinessException: even creation is not possible."); } } } @@ -45,7 +40,7 @@ public class FileNotFoundExceptionUnitTest { try { readFailingFile(); } catch (FileNotFoundException ex) { - LOG.error("Optional file " + fileName + " was not found.", ex); + LOG.error("Optional file " + fileName + " was not found."); } } @@ -56,8 +51,8 @@ public class FileNotFoundExceptionUnitTest { } private class BusinessException extends RuntimeException { - BusinessException(String string, FileNotFoundException ex) { - super(string, ex); + BusinessException(String string) { + super(string); } } } diff --git a/core-java/src/test/java/org/baeldung/java/JavaRandomUnitTest.java b/core-java/src/test/java/org/baeldung/java/JavaRandomUnitTest.java index 08f98025c3..f058e5d862 100644 --- a/core-java/src/test/java/org/baeldung/java/JavaRandomUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/JavaRandomUnitTest.java @@ -3,26 +3,31 @@ package org.baeldung.java; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.math3.random.RandomDataGenerator; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.nio.charset.Charset; import java.util.Random; public class JavaRandomUnitTest { + private static final Logger LOG = LoggerFactory.getLogger(JavaRandomUnitTest.class); + + // tests - random long @Test public void givenUsingPlainJava_whenGeneratingRandomLongUnbounded_thenCorrect() { final long generatedLong = new Random().nextLong(); - System.out.println(generatedLong); + LOG.debug("{}", generatedLong); } @Test public void givenUsingApacheCommons_whenGeneratingRandomLongUnbounded_thenCorrect() { final long generatedLong = new RandomDataGenerator().getRandomGenerator().nextLong(); - System.out.println(generatedLong); + LOG.debug("{}", generatedLong); } @Test @@ -31,7 +36,7 @@ public class JavaRandomUnitTest { final long rightLimit = 10L; final long generatedLong = leftLimit + (long) (Math.random() * (rightLimit - leftLimit)); - System.out.println(generatedLong); + LOG.debug("{}", generatedLong); } @Test @@ -40,7 +45,7 @@ public class JavaRandomUnitTest { final long rightLimit = 100L; final long generatedLong = new RandomDataGenerator().nextLong(leftLimit, rightLimit); - System.out.println(generatedLong); + LOG.debug("{}", generatedLong); } // tests - random int @@ -49,7 +54,7 @@ public class JavaRandomUnitTest { public void givenUsingPlainJava_whenGeneratingRandomIntegerUnbounded_thenCorrect() { final int generatedInteger = new Random().nextInt(); - System.out.println(generatedInteger); + LOG.debug("{}", generatedInteger); } @Test @@ -58,14 +63,14 @@ public class JavaRandomUnitTest { final int rightLimit = 10; final int generatedInteger = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit)); - System.out.println(generatedInteger); + LOG.debug("{}", generatedInteger); } @Test public void givenUsingApache_whenGeneratingRandomIntegerUnbounded_thenCorrect() { final Integer generatedInteger = new RandomDataGenerator().getRandomGenerator().nextInt(); - System.out.println(generatedInteger); + LOG.debug("{}", generatedInteger); } @Test @@ -74,7 +79,7 @@ public class JavaRandomUnitTest { final int rightLimit = 10; final int generatedInteger = new RandomDataGenerator().nextInt(leftLimit, rightLimit); - System.out.println(generatedInteger); + LOG.debug("{}", generatedInteger); } // tests - random float @@ -83,14 +88,14 @@ public class JavaRandomUnitTest { public void givenUsingPlainJava_whenGeneratingRandomFloatUnbouned_thenCorrect() { final float generatedFloat = new Random().nextFloat(); - System.out.println(generatedFloat); + LOG.debug("{}", generatedFloat); } @Test public void givenUsingApache_whenGeneratingRandomFloatUnbounded_thenCorrect() { final float generatedFloat = new RandomDataGenerator().getRandomGenerator().nextFloat(); - System.out.println(generatedFloat); + LOG.debug("{}", generatedFloat); } @Test @@ -99,7 +104,7 @@ public class JavaRandomUnitTest { final float rightLimit = 10F; final float generatedFloat = leftLimit + new Random().nextFloat() * (rightLimit - leftLimit); - System.out.println(generatedFloat); + LOG.debug("{}", generatedFloat); } @Test @@ -109,7 +114,7 @@ public class JavaRandomUnitTest { final float randomFloat = new RandomDataGenerator().getRandomGenerator().nextFloat(); final float generatedFloat = leftLimit + randomFloat * (rightLimit - leftLimit); - System.out.println(generatedFloat); + LOG.debug("{}", generatedFloat); } // tests - random double @@ -118,14 +123,14 @@ public class JavaRandomUnitTest { public void givenUsingPlainJava_whenGeneratingRandomDoubleUnbounded_thenCorrect() { final double generatedDouble = Math.random(); - System.out.println(generatedDouble); + LOG.debug("{}", generatedDouble); } @Test public void givenUsingApache_whenGeneratingRandomDoubleUnbounded_thenCorrect() { final double generatedDouble = new RandomDataGenerator().getRandomGenerator().nextDouble(); - System.out.println(generatedDouble); + LOG.debug("{}", generatedDouble); } @Test @@ -134,7 +139,7 @@ public class JavaRandomUnitTest { final double rightLimit = 10D; final double generatedDouble = leftLimit + new Random().nextDouble() * (rightLimit - leftLimit); - System.out.println(generatedDouble); + LOG.debug("{}", generatedDouble); } @Test @@ -143,7 +148,7 @@ public class JavaRandomUnitTest { final double rightLimit = 100D; final double generatedDouble = new RandomDataGenerator().nextUniform(leftLimit, rightLimit); - System.out.println(generatedDouble); + LOG.debug("{}", generatedDouble); } // tests - random String @@ -154,7 +159,7 @@ public class JavaRandomUnitTest { new Random().nextBytes(array); final String generatedString = new String(array, Charset.forName("UTF-8")); - System.out.println(generatedString); + LOG.debug(generatedString); } @Test @@ -169,28 +174,28 @@ public class JavaRandomUnitTest { } final String generatedString = buffer.toString(); - System.out.println(generatedString); + LOG.debug(generatedString); } @Test public void givenUsingApache_whenGeneratingRandomString_thenCorrect() { final String generatedString = RandomStringUtils.random(10); - System.out.println(generatedString); + LOG.debug(generatedString); } @Test public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() { final String generatedString = RandomStringUtils.randomAlphabetic(10); - System.out.println(generatedString); + LOG.debug(generatedString); } @Test public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() { final String generatedString = RandomStringUtils.randomAlphanumeric(10); - System.out.println(generatedString); + LOG.debug(generatedString); } @Test @@ -200,7 +205,7 @@ public class JavaRandomUnitTest { final boolean useNumbers = false; final String generatedString = RandomStringUtils.random(length, useLetters, useNumbers); - System.out.println(generatedString); + LOG.debug(generatedString); } } diff --git a/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java b/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java index 3b126464ab..7a03070e82 100644 --- a/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java @@ -1,5 +1,9 @@ package org.baeldung.java; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.Date; import java.util.Timer; import java.util.TimerTask; @@ -7,10 +11,11 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import org.junit.Test; - public class JavaTimerLongRunningUnitTest { + private static final Logger LOG = LoggerFactory.getLogger(JavaTimerLongRunningUnitTest.class); + + // tests @Test @@ -18,7 +23,7 @@ public class JavaTimerLongRunningUnitTest { final TimerTask timerTask = new TimerTask() { @Override public void run() { - System.out.println("Task performed on: " + new Date() + "\n" + "Thread's name: " + Thread.currentThread().getName()); + LOG.debug("Task performed on: " + new Date() + "\n" + "Thread's name: " + Thread.currentThread().getName()); } }; final Timer timer = new Timer("Timer"); @@ -35,7 +40,7 @@ public class JavaTimerLongRunningUnitTest { final TimerTask repeatedTask = new TimerTask() { @Override public void run() { - System.out.println("Task performed on " + new Date()); + LOG.debug("Task performed on " + new Date()); } }; final Timer timer = new Timer("Timer"); @@ -53,7 +58,7 @@ public class JavaTimerLongRunningUnitTest { final TimerTask repeatedTask = new TimerTask() { @Override public void run() { - System.out.println("Task performed on " + new Date()); + LOG.debug("Task performed on " + new Date()); } }; final Timer timer = new Timer("Timer"); @@ -71,7 +76,7 @@ public class JavaTimerLongRunningUnitTest { final TimerTask task = new TimerTask() { @Override public void run() { - System.out.println("Task performed on " + new Date()); + LOG.debug("Task performed on " + new Date()); cancel(); } }; @@ -89,7 +94,7 @@ public class JavaTimerLongRunningUnitTest { final TimerTask task = new TimerTask() { @Override public void run() { - System.out.println("Task performed on " + new Date()); + LOG.debug("Task performed on " + new Date()); } }; final Timer timer = new Timer("Timer"); @@ -104,7 +109,7 @@ public class JavaTimerLongRunningUnitTest { final TimerTask task = new TimerTask() { @Override public void run() { - System.out.println("Task performed on " + new Date()); + LOG.debug("Task performed on " + new Date()); } }; final Timer timer = new Timer("Timer"); @@ -120,7 +125,7 @@ public class JavaTimerLongRunningUnitTest { final TimerTask repeatedTask = new TimerTask() { @Override public void run() { - System.out.println("Task performed on " + new Date()); + LOG.debug("Task performed on " + new Date()); } }; final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); diff --git a/core-java/src/test/java/org/baeldung/java/collections/CoreJavaCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/CoreJavaCollectionsUnitTest.java index fb7bfe51a2..ecf68e0b2c 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/CoreJavaCollectionsUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/CoreJavaCollectionsUnitTest.java @@ -1,24 +1,28 @@ package org.baeldung.java.collections; +import com.google.common.collect.ImmutableList; +import org.apache.commons.collections4.ListUtils; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; -import org.apache.commons.collections4.ListUtils; -import org.junit.Test; - -import com.google.common.collect.ImmutableList; - public class CoreJavaCollectionsUnitTest { + private static final Logger LOG = LoggerFactory.getLogger(CoreJavaCollectionsUnitTest.class); + + // tests - @Test public final void givenUsingTheJdk_whenArrayListIsSynchronized_thenCorrect() { final List list = new ArrayList(Arrays.asList("one", "two", "three")); final List synchronizedList = Collections.synchronizedList(list); - System.out.println("Synchronized List is: " + synchronizedList); + LOG.debug("Synchronized List is: " + synchronizedList); } @Test(expected = UnsupportedOperationException.class) diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java index b1aa58424d..41d0a8a02a 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java @@ -1,18 +1,10 @@ package org.baeldung.java.io; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.RandomAccessFile; -import java.io.SequenceInputStream; -import java.io.StreamTokenizer; +import java.io.*; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.Charset; @@ -21,10 +13,14 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Scanner; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class JavaReadFromFileUnitTest { + + private static final Logger LOG = LoggerFactory.getLogger(JavaReadFromFileUnitTest.class); + @Test public void whenReadWithBufferedReader_thenCorrect() throws IOException { final String expected_value = "Hello world"; @@ -115,7 +111,7 @@ public class JavaReadFromFileUnitTest { final BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("src/test/resources/test_read7.in"), "UTF-8")); final String currentLine = reader.readLine(); reader.close(); - System.out.println(currentLine); + LOG.debug(currentLine); assertEquals(expected_value, currentLine); } diff --git a/core-java/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java b/core-java/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java index b7c2bd7272..86493f6e5d 100644 --- a/core-java/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java @@ -1,11 +1,12 @@ package org.baeldung.java.lists; -import org.testng.Assert; -import org.testng.annotations.Test; +import org.junit.Test; import java.util.Arrays; import java.util.List; +import static org.junit.Assert.*; + public class ListTestNgUnitTest { private final List list1 = Arrays.asList("1", "2", "3", "4"); @@ -14,8 +15,8 @@ public class ListTestNgUnitTest { @Test public void whenTestingForEquality_ShouldBeEqual() throws Exception { - Assert.assertEquals(list1, list2); - Assert.assertNotSame(list1, list2); - Assert.assertNotEquals(list1, list3); + assertEquals(list1, list2); + assertNotSame(list1, list2); + assertNotEquals(list1, list3); } } diff --git a/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaManualTest.java b/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaManualTest.java index bb849d6a13..877122ce40 100644 --- a/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaManualTest.java +++ b/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaManualTest.java @@ -1,25 +1,30 @@ package org.baeldung.java.sandbox; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.Date; import java.util.Timer; import java.util.TimerTask; -import org.junit.Test; - public class SandboxJavaManualTest { + + private static final Logger LOG = LoggerFactory.getLogger(SandboxJavaManualTest.class); + @Test public void givenUsingTimer_whenSchedulingTimerTaskOnce_thenCorrect() throws InterruptedException { final TimerTask timerTask = new TimerTask() { @Override public void run() { - System.out.println("Time when was task performed" + new Date()); - System.out.println("Thread's name: " + Thread.currentThread().getName()); + LOG.debug("Time when was task performed" + new Date()); + LOG.debug("Thread's name: " + Thread.currentThread().getName()); } }; final Timer timer = new Timer("Thread's name"); - System.out.println("Current time:" + new Date()); - System.out.println("Thread's name: " + Thread.currentThread().getName()); + LOG.debug("Current time:" + new Date()); + LOG.debug("Thread's name: " + Thread.currentThread().getName()); final long delay = 2L * 1000L; timer.schedule(timerTask, delay); Thread.sleep(delay); @@ -33,16 +38,16 @@ public class SandboxJavaManualTest { @Override public void run() { count++; - System.out.println("Time when task was performed: " + new Date()); - System.out.println("Thread's name: " + Thread.currentThread().getName()); + LOG.debug("Time when task was performed: " + new Date()); + LOG.debug("Thread's name: " + Thread.currentThread().getName()); if (count >= 5) { cancel(); } } }; final Timer timer = new Timer("Timer thread"); - System.out.println("Current time: " + new Date()); - System.out.println("Thread's name: " + Thread.currentThread().getName()); + LOG.debug("Current time: " + new Date()); + LOG.debug("Thread's name: " + Thread.currentThread().getName()); final long delay = 2L * 1000L; final long period = 1L * 1000L; timer.scheduleAtFixedRate(repeatedTask, delay, period); @@ -62,8 +67,8 @@ public class SandboxJavaManualTest { @Override public void run() { timesRunned++; - System.out.println("Task performed on: " + new Date()); - System.out.println("Thread's name: " + Thread.currentThread().getName()); + LOG.debug("Task performed on: " + new Date()); + LOG.debug("Thread's name: " + Thread.currentThread().getName()); if (timesRunned >= timesToRun) { cancel(); } @@ -72,10 +77,10 @@ public class SandboxJavaManualTest { final MyTask repeatedTask = new MyTask(); repeatedTask.setTimesToRun(5); final long delay = 2L * 1000L; - final long period = 1L * 1000L; + final long period = 1000L; final Timer timer = new Timer("Timer"); - System.out.println("Current time: " + new Date()); - System.out.println("Thread's name: " + Thread.currentThread().getName()); + LOG.debug("Current time: " + new Date()); + LOG.debug("Thread's name: " + Thread.currentThread().getName()); timer.scheduleAtFixedRate(repeatedTask, delay, period); Thread.sleep(delay + period * repeatedTask.timesToRun); } diff --git a/core-java/src/test/resources/fileToRead.txt b/core-java/src/test/resources/fileToRead.txt new file mode 100644 index 0000000000..45d73fa10d --- /dev/null +++ b/core-java/src/test/resources/fileToRead.txt @@ -0,0 +1 @@ +This is a content of the file \ No newline at end of file diff --git a/core-java/0.8260098203820962 b/core-java/src/test/resources/fileToWriteTo.txt similarity index 100% rename from core-java/0.8260098203820962 rename to core-java/src/test/resources/fileToWriteTo.txt diff --git a/cucumber/pom.xml b/cucumber/pom.xml index 77d04f96c2..23509f46f6 100644 --- a/cucumber/pom.xml +++ b/cucumber/pom.xml @@ -77,14 +77,14 @@ ${java.target.version} + org.apache.maven.plugins maven-surefire-plugin - ${surefire.plugin.version} - - **/CalculatorTest.java - + + **/*IntegrationTest.java + diff --git a/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorTest.java b/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorIntegrationTest.java similarity index 91% rename from cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorTest.java rename to cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorIntegrationTest.java index 6bbbca60d2..f44d38421d 100644 --- a/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorTest.java +++ b/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorIntegrationTest.java @@ -11,5 +11,5 @@ import cucumber.api.junit.Cucumber; , plugin = { "pretty", "json:target/reports/json/calculator.json" } , glue = {"com.baeldung.cucumber.calculator"} ) -public class CalculatorTest { +public class CalculatorIntegrationTest { } diff --git a/disruptor/src/test/java/com/baeldung/disruptor/DisruptorTest.java b/disruptor/src/test/java/com/baeldung/disruptor/DisruptorIntegrationTest.java similarity index 95% rename from disruptor/src/test/java/com/baeldung/disruptor/DisruptorTest.java rename to disruptor/src/test/java/com/baeldung/disruptor/DisruptorIntegrationTest.java index 28a5ff72ce..10929f21b0 100644 --- a/disruptor/src/test/java/com/baeldung/disruptor/DisruptorTest.java +++ b/disruptor/src/test/java/com/baeldung/disruptor/DisruptorIntegrationTest.java @@ -1,16 +1,17 @@ package com.baeldung.disruptor; -import java.util.concurrent.ThreadFactory; -import org.junit.Before; -import org.junit.Test; import com.lmax.disruptor.BusySpinWaitStrategy; import com.lmax.disruptor.RingBuffer; import com.lmax.disruptor.WaitStrategy; import com.lmax.disruptor.dsl.Disruptor; import com.lmax.disruptor.dsl.ProducerType; import com.lmax.disruptor.util.DaemonThreadFactory; +import org.junit.Before; +import org.junit.Test; -public class DisruptorTest { +import java.util.concurrent.ThreadFactory; + +public class DisruptorIntegrationTest { private Disruptor disruptor; private WaitStrategy waitStrategy; @@ -21,7 +22,7 @@ public class DisruptorTest { private void createDisruptor(final ProducerType producerType, final EventConsumer eventConsumer) { final ThreadFactory threadFactory = DaemonThreadFactory.INSTANCE; - disruptor = new Disruptor(ValueEvent.EVENT_FACTORY, 16, threadFactory, producerType, waitStrategy); + disruptor = new Disruptor<>(ValueEvent.EVENT_FACTORY, 16, threadFactory, producerType, waitStrategy); disruptor.handleEventsWith(eventConsumer.getEventHandler()); } diff --git a/guava/src/test/java/org/baeldung/guava/ClassToInstanceMapTests.java b/guava/src/test/java/org/baeldung/guava/ClassToInstanceMapTests.java new file mode 100644 index 0000000000..c8db9e573e --- /dev/null +++ b/guava/src/test/java/org/baeldung/guava/ClassToInstanceMapTests.java @@ -0,0 +1,70 @@ +package org.baeldung.guava; +import com.google.common.collect.ClassToInstanceMap; +import com.google.common.collect.ImmutableClassToInstanceMap; +import com.google.common.collect.MutableClassToInstanceMap; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class ClassToInstanceMapTests { + @Test + public void createEmptyImmutableMap() { + ClassToInstanceMap map = ImmutableClassToInstanceMap.of(); + assertTrue(map.isEmpty()); + } + + @Test + public void createEmptyMutableMap() { + ClassToInstanceMap map = MutableClassToInstanceMap.create(); + assertTrue(map.isEmpty()); + } + + @Test + public void createSingleEntryMap() { + ClassToInstanceMap map = ImmutableClassToInstanceMap.of(Save.class, new Save()); + assertEquals(1, map.size()); + } + + @Test + public void createMapWithBuilder() { + ClassToInstanceMap map = ImmutableClassToInstanceMap.builder() + .put(Save.class, new Save()) + .put(Open.class, new Open()) + .build(); + assertEquals(2, map.size()); + } + + @Test + public void shouldReturnElement() { + ClassToInstanceMap map = ImmutableClassToInstanceMap.of(Save.class, new Save()); + Action action = map.get(Save.class); + assertTrue(action instanceof Save); + + // Use getInstance to avoid casting + Save save = map.getInstance(Save.class); + } + + @Test + public void shouldPutElement() { + ClassToInstanceMap map = MutableClassToInstanceMap.create(); + map.put(Save.class, new Save()); + // Put again to get previous value returned + Action action = map.put(Save.class, new Save()); + assertTrue(action instanceof Save); + + // Use putInstance to avoid casting + Save save = map.putInstance(Save.class, new Save()); + } +} + +abstract class Action { +} + +class Save extends Action { +} + +class Open extends Action { +} + +class Delete extends Action { +} diff --git a/guava/src/test/java/org/baeldung/guava/GuavaBigIntegerMathTest.java b/guava/src/test/java/org/baeldung/guava/GuavaBigIntegerMathTest.java new file mode 100644 index 0000000000..4dd36fa58d --- /dev/null +++ b/guava/src/test/java/org/baeldung/guava/GuavaBigIntegerMathTest.java @@ -0,0 +1,112 @@ +package org.baeldung.guava; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.math.BigInteger; +import java.math.RoundingMode; + +import org.junit.Test; + +import com.google.common.math.BigIntegerMath; + +public class GuavaBigIntegerMathTest { + + @Test + public void whenPerformBinomialOnTwoIntValues_shouldReturnResult() { + BigInteger result = BigIntegerMath.binomial(6, 3); + assertEquals(new BigInteger("20"), result); + } + + @Test + public void whenProformCeilPowOfTwoBigIntegerValues_shouldReturnResult() { + BigInteger result = BigIntegerMath.ceilingPowerOfTwo(new BigInteger("20")); + assertEquals(new BigInteger("32"), result); + } + + @Test + public void whenDivideTwoBigIntegerValues_shouldDivideThemAndReturnTheResultForCeilingRounding() { + BigInteger result = BigIntegerMath.divide(new BigInteger("10"), new BigInteger("3"), RoundingMode.CEILING); + assertEquals(new BigInteger("4"), result); + } + + @Test + public void whenDivideTwoBigIntegerValues_shouldDivideThemAndReturnTheResultForFloorRounding() { + BigInteger result = BigIntegerMath.divide(new BigInteger("10"), new BigInteger("3"), RoundingMode.FLOOR); + assertEquals(new BigInteger("3"), result); + } + + @Test(expected = ArithmeticException.class) + public void whenDivideTwoBigIntegerValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + BigIntegerMath.divide(new BigInteger("10"), new BigInteger("3"), RoundingMode.UNNECESSARY); + } + + @Test + public void whenFactorailInteger_shouldFactorialThemAndReturnTheResultIfInIntRange() { + BigInteger result = BigIntegerMath.factorial(5); + assertEquals(new BigInteger("120"), result); + } + + @Test + public void whenFloorPowerOfInteger_shouldReturnValue() { + BigInteger result = BigIntegerMath.floorPowerOfTwo(new BigInteger("30")); + assertEquals(new BigInteger("16"), result); + } + + @Test + public void whenIsPowOfInteger_shouldReturnTrueIfPowerOfTwo() { + boolean result = BigIntegerMath.isPowerOfTwo(new BigInteger("16")); + assertTrue(result); + } + + @Test + public void whenLog10BigIntegerValues_shouldLog10ThemAndReturnTheResultForCeilingRounding() { + int result = BigIntegerMath.log10(new BigInteger("30"), RoundingMode.CEILING); + assertEquals(2, result); + } + + @Test + public void whenLog10BigIntegerValues_shouldog10ThemAndReturnTheResultForFloorRounding() { + int result = BigIntegerMath.log10(new BigInteger("30"), RoundingMode.FLOOR); + assertEquals(1, result); + } + + @Test(expected = ArithmeticException.class) + public void whenLog10BigIntegerValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + BigIntegerMath.log10(new BigInteger("30"), RoundingMode.UNNECESSARY); + } + + @Test + public void whenLog2BigIntegerValues_shouldLog2ThemAndReturnTheResultForCeilingRounding() { + int result = BigIntegerMath.log2(new BigInteger("30"), RoundingMode.CEILING); + assertEquals(5, result); + } + + @Test + public void whenLog2BigIntegerValues_shouldog2ThemAndReturnTheResultForFloorRounding() { + int result = BigIntegerMath.log2(new BigInteger("30"), RoundingMode.FLOOR); + assertEquals(4, result); + } + + @Test(expected = ArithmeticException.class) + public void whenLog2BigIntegerValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + BigIntegerMath.log2(new BigInteger("30"), RoundingMode.UNNECESSARY); + } + + @Test + public void whenSqrtBigIntegerValues_shouldSqrtThemAndReturnTheResultForCeilingRounding() { + BigInteger result = BigIntegerMath.sqrt(new BigInteger("30"), RoundingMode.CEILING); + assertEquals(new BigInteger("6"), result); + } + + @Test + public void whenSqrtBigIntegerValues_shouldSqrtThemAndReturnTheResultForFloorRounding() { + BigInteger result = BigIntegerMath.sqrt(new BigInteger("30"), RoundingMode.FLOOR); + assertEquals(new BigInteger("5"), result); + } + + @Test(expected = ArithmeticException.class) + public void whenSqrtBigIntegerValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + BigIntegerMath.sqrt(new BigInteger("30"), RoundingMode.UNNECESSARY); + } +} diff --git a/guava/src/test/java/org/baeldung/guava/GuavaDoubleMathTest.java b/guava/src/test/java/org/baeldung/guava/GuavaDoubleMathTest.java new file mode 100644 index 0000000000..ad06b37e36 --- /dev/null +++ b/guava/src/test/java/org/baeldung/guava/GuavaDoubleMathTest.java @@ -0,0 +1,98 @@ +package org.baeldung.guava; + +import static org.junit.Assert.*; + +import java.math.RoundingMode; + +import org.junit.Test; + +import com.google.common.math.DoubleMath; +import com.google.common.math.IntMath; + +public class GuavaDoubleMathTest { + + @Test + public void whenFactorailDouble_shouldFactorialThemAndReturnTheResultIfInDoubleRange() { + double result = DoubleMath.factorial(5); + assertEquals(120, result, 0); + } + + @Test + public void whenFactorailDouble_shouldFactorialThemAndReturnDoubkeInfIfNotInDoubletRange() { + double result = DoubleMath.factorial(Integer.MAX_VALUE); + assertEquals(Double.POSITIVE_INFINITY, result, 0); + } + + @Test + public void whenFuzzyCompareDouble_shouldReturnZeroIfInRange() { + int result = DoubleMath.fuzzyCompare(4, 4.05, 0.6); + assertEquals(0, result); + } + + @Test + public void whenFuzzyCompareDouble_shouldReturnNonZeroIfNotInRange() { + int result = DoubleMath.fuzzyCompare(4, 5, 0.1); + assertEquals(-1, result); + } + + @Test + public void whenFuzzyEqualDouble_shouldReturnZeroIfInRange() { + boolean result = DoubleMath.fuzzyEquals(4, 4.05, 0.6); + assertTrue(result); + } + + @Test + public void whenFuzzyEqualDouble_shouldReturnNonZeroIfNotInRange() { + boolean result = DoubleMath.fuzzyEquals(4, 5, 0.1); + assertFalse(result); + } + + @Test + public void whenMathematicalIntDouble_shouldReturnTrueIfInRange() { + boolean result = DoubleMath.isMathematicalInteger(5); + assertTrue(result); + } + + @Test + public void whenMathematicalIntDouble_shouldReturnFalseIfNotInRange() { + boolean result = DoubleMath.isMathematicalInteger(5.2); + assertFalse(result); + } + + @Test + public void whenIsPowerOfTwoDouble_shouldReturnTrueIfIsPowerOfTwo() { + boolean result = DoubleMath.isMathematicalInteger(4); + assertTrue(result); + } + + @Test + public void whenIsPowerOfTwoDouble_shouldReturnFalseIsNotPowerOfTwoe() { + boolean result = DoubleMath.isMathematicalInteger(5.2); + assertFalse(result); + } + + @Test + public void whenLog2Double_shouldReturnResult() { + double result = DoubleMath.log2(4); + assertEquals(2, result, 0); + } + + + @Test + public void whenLog2DoubleValues_shouldLog2ThemAndReturnTheResultForCeilingRounding() { + int result = DoubleMath.log2(30, RoundingMode.CEILING); + assertEquals(5, result); + } + + @Test + public void whenLog2DoubleValues_shouldog2ThemAndReturnTheResultForFloorRounding() { + int result = DoubleMath.log2(30, RoundingMode.FLOOR); + assertEquals(4, result); + } + + @Test(expected = ArithmeticException.class) + public void whenLog2DoubleValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + DoubleMath.log2(30, RoundingMode.UNNECESSARY); + } + +} diff --git a/guava/src/test/java/org/baeldung/guava/GuavaIntMathTest.java b/guava/src/test/java/org/baeldung/guava/GuavaIntMathTest.java new file mode 100644 index 0000000000..9c8f3923d3 --- /dev/null +++ b/guava/src/test/java/org/baeldung/guava/GuavaIntMathTest.java @@ -0,0 +1,274 @@ +package org.baeldung.guava; + +import static org.junit.Assert.*; + +import java.math.RoundingMode; + +import com.google.common.math.IntMath; +import org.junit.Test; + +public class GuavaIntMathTest { + + @Test + public void whenPerformBinomialOnTwoIntegerValues_shouldReturnResultIfUnderInt() { + int result = IntMath.binomial(6, 3); + assertEquals(20, result); + } + + @Test + public void whenPerformBinomialOnTwoIntegerValues_shouldReturnIntMaxIfUnderInt() { + int result = IntMath.binomial(Integer.MAX_VALUE, 3); + assertEquals(Integer.MAX_VALUE, result); + } + + @Test + public void whenProformCeilPowOfTwoIntegerValues_shouldReturnResult() { + int result = IntMath.ceilingPowerOfTwo(20); + assertEquals(32, result); + } + + @Test + public void whenCheckedAddTwoIntegerValues_shouldAddThemAndReturnTheSumIfNotOverflow() { + int result = IntMath.checkedAdd(1, 2); + assertEquals(3, result); + } + + @Test(expected = ArithmeticException.class) + public void gwhenCheckedAddTwoIntegerValues_shouldThrowArithmeticExceptionIfOverflow() { + IntMath.checkedAdd(Integer.MAX_VALUE, 100); + } + + @Test + public void whenCheckedMultiplyTwoIntegerValues_shouldMultiplyThemAndReturnTheResultIfNotOverflow() { + int result = IntMath.checkedMultiply(1, 2); + assertEquals(2, result); + } + + @Test(expected = ArithmeticException.class) + public void gwhenCheckedMultiplyTwoIntegerValues_shouldThrowArithmeticExceptionIfOverflow() { + IntMath.checkedMultiply(Integer.MAX_VALUE, 100); + } + + @Test + public void whenCheckedPowTwoIntegerValues_shouldPowThemAndReturnTheResultIfNotOverflow() { + int result = IntMath.checkedPow(2, 3); + assertEquals(8, result); + } + + @Test(expected = ArithmeticException.class) + public void gwhenCheckedPowTwoIntegerValues_shouldThrowArithmeticExceptionIfOverflow() { + IntMath.checkedPow(Integer.MAX_VALUE, 100); + } + + @Test + public void whenCheckedSubstractTwoIntegerValues_shouldSubstractThemAndReturnTheResultIfNotOverflow() { + int result = IntMath.checkedSubtract(4, 1); + assertEquals(3, result); + } + + @Test(expected = ArithmeticException.class) + public void gwhenCheckedSubstractTwoIntegerValues_shouldThrowArithmeticExceptionIfOverflow() { + IntMath.checkedSubtract(Integer.MAX_VALUE, -100); + } + + @Test + public void whenDivideTwoIntegerValues_shouldDivideThemAndReturnTheResultForCeilingRounding() { + int result = IntMath.divide(10, 3, RoundingMode.CEILING); + assertEquals(4, result); + } + + @Test + public void whenDivideTwoIntegerValues_shouldDivideThemAndReturnTheResultForFloorRounding() { + int result = IntMath.divide(10, 3, RoundingMode.FLOOR); + assertEquals(3, result); + } + + @Test(expected = ArithmeticException.class) + public void whenDivideTwoIntegerValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + IntMath.divide(10, 3, RoundingMode.UNNECESSARY); + } + + @Test + public void whenFactorailInteger_shouldFactorialThemAndReturnTheResultIfInIntRange() { + int result = IntMath.factorial(5); + assertEquals(120, result); + } + + @Test + public void whenFactorailInteger_shouldFactorialThemAndReturnIntMaxIfNotInIntRange() { + int result = IntMath.factorial(Integer.MAX_VALUE); + assertEquals(Integer.MAX_VALUE, result); + } + + @Test + public void whenFloorPowerOfInteger_shouldReturnValue() { + int result = IntMath.floorPowerOfTwo(30); + assertEquals(16, result); + } + + @Test + public void whenGcdOfTwoIntegers_shouldReturnValue() { + int result = IntMath.gcd(30, 40); + assertEquals(10, result); + } + + @Test + public void whenIsPowOfInteger_shouldReturnTrueIfPowerOfTwo() { + boolean result = IntMath.isPowerOfTwo(16); + assertTrue(result); + } + + @Test + public void whenIsPowOfInteger_shouldReturnFalseeIfNotPowerOfTwo() { + boolean result = IntMath.isPowerOfTwo(20); + assertFalse(result); + } + + @Test + public void whenIsPrineOfInteger_shouldReturnFalseeIfNotPrime() { + boolean result = IntMath.isPrime(20); + assertFalse(result); + } + + @Test + public void whenLog10IntegerValues_shouldLog10ThemAndReturnTheResultForCeilingRounding() { + int result = IntMath.log10(30, RoundingMode.CEILING); + assertEquals(2, result); + } + + @Test + public void whenLog10IntegerValues_shouldog10ThemAndReturnTheResultForFloorRounding() { + int result = IntMath.log10(30, RoundingMode.FLOOR); + assertEquals(1, result); + } + + @Test(expected = ArithmeticException.class) + public void whenLog10IntegerValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + IntMath.log10(30, RoundingMode.UNNECESSARY); + } + + @Test + public void whenLog2IntegerValues_shouldLog2ThemAndReturnTheResultForCeilingRounding() { + int result = IntMath.log2(30, RoundingMode.CEILING); + assertEquals(5, result); + } + + @Test + public void whenLog2IntegerValues_shouldog2ThemAndReturnTheResultForFloorRounding() { + int result = IntMath.log2(30, RoundingMode.FLOOR); + assertEquals(4, result); + } + + @Test(expected = ArithmeticException.class) + public void whenLog2IntegerValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + IntMath.log2(30, RoundingMode.UNNECESSARY); + } + + @Test + public void whenMeanTwoIntegerValues_shouldMeanThemAndReturnTheResult() { + int result = IntMath.mean(30, 20); + assertEquals(25, result); + } + + @Test + public void whenModTwoIntegerValues_shouldModThemAndReturnTheResult() { + int result = IntMath.mod(30, 4); + assertEquals(2, result); + } + + @Test + public void whenPowTwoIntegerValues_shouldPowThemAndReturnTheResult() { + int result = IntMath.pow(6, 4); + assertEquals(1296, result); + } + + @Test + public void whenSaturatedAddTwoIntegerValues_shouldAddThemAndReturnTheResult() { + int result = IntMath.saturatedAdd(6, 4); + assertEquals(10, result); + } + + @Test + public void whenSaturatedAddTwoIntegerValues_shouldAddThemAndReturnIntMaxIfOverflow() { + int result = IntMath.saturatedAdd(Integer.MAX_VALUE, 1000); + assertEquals(Integer.MAX_VALUE, result); + } + + @Test + public void whenSaturatedAddTwoIntegerValues_shouldAddThemAndReturnIntMinIfUnderflow() { + int result = IntMath.saturatedAdd(Integer.MIN_VALUE, -1000); + assertEquals(Integer.MIN_VALUE, result); + } + + @Test + public void whenSaturatedMultiplyTwoIntegerValues_shouldMultiplyThemAndReturnTheResult() { + int result = IntMath.saturatedMultiply(6, 4); + assertEquals(24, result); + } + + @Test + public void whenSaturatedMultiplyTwoIntegerValues_shouldMultiplyThemAndReturnIntMaxIfOverflow() { + int result = IntMath.saturatedMultiply(Integer.MAX_VALUE, 1000); + assertEquals(Integer.MAX_VALUE, result); + } + + @Test + public void whenSaturatedMultiplyTwoIntegerValues_shouldMultiplyThemAndReturnIntMinIfUnderflow() { + int result = IntMath.saturatedMultiply(Integer.MIN_VALUE, 1000); + assertEquals(Integer.MIN_VALUE, result); + } + + @Test + public void whenSaturatedPowTwoIntegerValues_shouldPowThemAndReturnTheResult() { + int result = IntMath.saturatedPow(6, 2); + assertEquals(36, result); + } + + @Test + public void whenSaturatedPowTwoIntegerValues_shouldPowThemAndReturnIntMaxIfOverflow() { + int result = IntMath.saturatedPow(Integer.MAX_VALUE, 2); + assertEquals(Integer.MAX_VALUE, result); + } + + @Test + public void whenSaturatedPowTwoIntegerValues_shouldPowThemAndReturnIntMinIfUnderflow() { + int result = IntMath.saturatedPow(Integer.MIN_VALUE, 3); + assertEquals(Integer.MIN_VALUE, result); + } + + @Test + public void whenSaturatedSubstractTwoIntegerValues_shouldSubstractThemAndReturnTheResult() { + int result = IntMath.saturatedSubtract(6, 2); + assertEquals(4, result); + } + + @Test + public void whenSaturatedSubstractTwoIntegerValues_shouldSubstractwThemAndReturnIntMaxIfOverflow() { + int result = IntMath.saturatedSubtract(Integer.MAX_VALUE, -2); + assertEquals(Integer.MAX_VALUE, result); + } + + @Test + public void whenSaturatedSubstractTwoIntegerValues_shouldSubstractThemAndReturnIntMinIfUnderflow() { + int result = IntMath.saturatedSubtract(Integer.MIN_VALUE, 3); + assertEquals(Integer.MIN_VALUE, result); + } + + @Test + public void whenSqrtIntegerValues_shouldSqrtThemAndReturnTheResultForCeilingRounding() { + int result = IntMath.sqrt(30, RoundingMode.CEILING); + assertEquals(6, result); + } + + @Test + public void whenSqrtIntegerValues_shouldSqrtThemAndReturnTheResultForFloorRounding() { + int result = IntMath.sqrt(30, RoundingMode.FLOOR); + assertEquals(5, result); + } + + @Test(expected = ArithmeticException.class) + public void whenSqrtIntegerValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + IntMath.sqrt(30, RoundingMode.UNNECESSARY); + } + +} diff --git a/guava/src/test/java/org/baeldung/guava/GuavaLongMathTest.java b/guava/src/test/java/org/baeldung/guava/GuavaLongMathTest.java new file mode 100644 index 0000000000..5d6d06c571 --- /dev/null +++ b/guava/src/test/java/org/baeldung/guava/GuavaLongMathTest.java @@ -0,0 +1,268 @@ +package org.baeldung.guava; + +import static org.junit.Assert.*; + +import java.math.RoundingMode; + +import com.google.common.math.LongMath; +import org.junit.Test; + +public class GuavaLongMathTest { + + @Test + public void whenPerformBinomialOnTwoLongValues_shouldReturnResultIfUnderLong() { + long result = LongMath.binomial(6, 3); + assertEquals(20L, result); + } + + @Test + public void whenProformCeilPowOfTwoLongValues_shouldReturnResult() { + long result = LongMath.ceilingPowerOfTwo(20L); + assertEquals(32L, result); + } + + @Test + public void whenCheckedAddTwoLongValues_shouldAddThemAndReturnTheSumIfNotOverflow() { + long result = LongMath.checkedAdd(1L, 2L); + assertEquals(3L, result); + } + + @Test(expected = ArithmeticException.class) + public void whenCheckedAddTwoLongValues_shouldThrowArithmeticExceptionIfOverflow() { + LongMath.checkedAdd(Long.MAX_VALUE, 100L); + } + + @Test + public void whenCheckedMultiplyTwoLongValues_shouldMultiplyThemAndReturnTheResultIfNotOverflow() { + long result = LongMath.checkedMultiply(3L, 2L); + assertEquals(6L, result); + } + + @Test(expected = ArithmeticException.class) + public void whenCheckedMultiplyTwoLongValues_shouldThrowArithmeticExceptionIfOverflow() { + LongMath.checkedMultiply(Long.MAX_VALUE, 100L); + } + + @Test + public void whenCheckedPowTwoLongValues_shouldPowThemAndReturnTheResultIfNotOverflow() { + long result = LongMath.checkedPow(2L, 3); + assertEquals(8L, result); + } + + @Test(expected = ArithmeticException.class) + public void gwhenCheckedPowTwoLongValues_shouldThrowArithmeticExceptionIfOverflow() { + LongMath.checkedPow(Long.MAX_VALUE, 100); + } + + @Test + public void whenCheckedSubstractTwoLongValues_shouldSubstractThemAndReturnTheResultIfNotOverflow() { + long result = LongMath.checkedSubtract(4L, 1L); + assertEquals(3L, result); + } + + @Test(expected = ArithmeticException.class) + public void gwhenCheckedSubstractTwoLongValues_shouldThrowArithmeticExceptionIfOverflow() { + LongMath.checkedSubtract(Long.MAX_VALUE, -100); + } + + @Test + public void whenDivideTwoLongValues_shouldDivideThemAndReturnTheResultForCeilingRounding() { + long result = LongMath.divide(10L, 3L, RoundingMode.CEILING); + assertEquals(4L, result); + } + + @Test + public void whenDivideTwoLongValues_shouldDivideThemAndReturnTheResultForFloorRounding() { + long result = LongMath.divide(10L, 3L, RoundingMode.FLOOR); + assertEquals(3L, result); + } + + @Test(expected = ArithmeticException.class) + public void whenDivideTwoLongValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + LongMath.divide(10L, 3L, RoundingMode.UNNECESSARY); + } + + @Test + public void whenFactorailLong_shouldFactorialThemAndReturnTheResultIfInIntRange() { + long result = LongMath.factorial(5); + assertEquals(120L, result); + } + + @Test + public void whenFactorailLong_shouldFactorialThemAndReturnIntMaxIfNotInIntRange() { + long result = LongMath.factorial(Integer.MAX_VALUE); + assertEquals(Long.MAX_VALUE, result); + } + + @Test + public void whenFloorPowerOfLong_shouldReturnValue() { + long result = LongMath.floorPowerOfTwo(30L); + assertEquals(16L, result); + } + + @Test + public void whenGcdOfTwoLongs_shouldReturnValue() { + long result = LongMath.gcd(30L, 40L); + assertEquals(10L, result); + } + + @Test + public void whenIsPowOfLong_shouldReturnTrueIfPowerOfTwo() { + boolean result = LongMath.isPowerOfTwo(16L); + assertTrue(result); + } + + @Test + public void whenIsPowOfLong_shouldReturnFalseeIfNotPowerOfTwo() { + boolean result = LongMath.isPowerOfTwo(20L); + assertFalse(result); + } + + @Test + public void whenIsPrineOfLong_shouldReturnFalseeIfNotPrime() { + boolean result = LongMath.isPrime(20L); + assertFalse(result); + } + + @Test + public void whenLog10LongValues_shouldLog10ThemAndReturnTheResultForCeilingRounding() { + int result = LongMath.log10(30L, RoundingMode.CEILING); + assertEquals(2, result); + } + + @Test + public void whenLog10LongValues_shouldog10ThemAndReturnTheResultForFloorRounding() { + int result = LongMath.log10(30L, RoundingMode.FLOOR); + assertEquals(1, result); + } + + @Test(expected = ArithmeticException.class) + public void whenLog10LongValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + LongMath.log10(30L, RoundingMode.UNNECESSARY); + } + + @Test + public void whenLog2LongValues_shouldLog2ThemAndReturnTheResultForCeilingRounding() { + int result = LongMath.log2(30L, RoundingMode.CEILING); + assertEquals(5, result); + } + + @Test + public void whenLog2LongValues_shouldog2ThemAndReturnTheResultForFloorRounding() { + int result = LongMath.log2(30L, RoundingMode.FLOOR); + assertEquals(4, result); + } + + @Test(expected = ArithmeticException.class) + public void whenLog2LongValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + LongMath.log2(30L, RoundingMode.UNNECESSARY); + } + + @Test + public void whenMeanTwoLongValues_shouldMeanThemAndReturnTheResult() { + long result = LongMath.mean(30L, 20L); + assertEquals(25L, result); + } + + @Test + public void whenModLongAndIntegerValues_shouldModThemAndReturnTheResult() { + int result = LongMath.mod(30L, 4); + assertEquals(2, result); + } + + @Test + public void whenModTwoLongValues_shouldModThemAndReturnTheResult() { + long result = LongMath.mod(30L, 4L); + assertEquals(2L, result); + } + + @Test + public void whenPowTwoLongValues_shouldPowThemAndReturnTheResult() { + long result = LongMath.pow(6L, 4); + assertEquals(1296L, result); + } + + @Test + public void whenSaturatedAddTwoLongValues_shouldAddThemAndReturnTheResult() { + long result = LongMath.saturatedAdd(6L, 4L); + assertEquals(10L, result); + } + + @Test + public void whenSaturatedAddTwoLongValues_shouldAddThemAndReturnIntMaxIfOverflow() { + long result = LongMath.saturatedAdd(Long.MAX_VALUE, 1000L); + assertEquals(Long.MAX_VALUE, result); + } + + @Test + public void whenSaturatedAddTwoLongValues_shouldAddThemAndReturnIntMinIfUnderflow() { + long result = LongMath.saturatedAdd(Long.MIN_VALUE, -1000); + assertEquals(Long.MIN_VALUE, result); + } + + @Test + public void whenSaturatedMultiplyTwoLongValues_shouldMultiplyThemAndReturnTheResult() { + long result = LongMath.saturatedMultiply(6L, 4L); + assertEquals(24L, result); + } + + @Test + public void whenSaturatedMultiplyTwoLongValues_shouldMultiplyThemAndReturnIntMaxIfOverflow() { + long result = LongMath.saturatedMultiply(Long.MAX_VALUE, 1000L); + assertEquals(Long.MAX_VALUE, result); + } + + @Test + public void whenSaturatedPowTwoLongValues_shouldPowThemAndReturnTheResult() { + long result = LongMath.saturatedPow(6L, 2); + assertEquals(36L, result); + } + + @Test + public void whenSaturatedPowTwoLongValues_shouldPowThemAndReturnIntMaxIfOverflow() { + long result = LongMath.saturatedPow(Long.MAX_VALUE, 2); + assertEquals(Long.MAX_VALUE, result); + } + + @Test + public void whenSaturatedPowTwoLongValues_shouldPowThemAndReturnIntMinIfUnderflow() { + long result = LongMath.saturatedPow(Long.MIN_VALUE, 3); + assertEquals(Long.MIN_VALUE, result); + } + + @Test + public void whenSaturatedSubstractTwoLongValues_shouldSubstractThemAndReturnTheResult() { + long result = LongMath.saturatedSubtract(6L, 2L); + assertEquals(4L, result); + } + + @Test + public void whenSaturatedSubstractTwoLongValues_shouldSubstractwThemAndReturnIntMaxIfOverflow() { + long result = LongMath.saturatedSubtract(Long.MAX_VALUE, -2L); + assertEquals(Long.MAX_VALUE, result); + } + + @Test + public void whenSaturatedSubstractTwoLongValues_shouldSubstractThemAndReturnIntMinIfUnderflow() { + long result = LongMath.saturatedSubtract(Long.MIN_VALUE, 3L); + assertEquals(Long.MIN_VALUE, result); + } + + @Test + public void whenSqrtLongValues_shouldSqrtThemAndReturnTheResultForCeilingRounding() { + long result = LongMath.sqrt(30L, RoundingMode.CEILING); + assertEquals(6L, result); + } + + @Test + public void whenSqrtLongValues_shouldSqrtThemAndReturnTheResultForFloorRounding() { + long result = LongMath.sqrt(30L, RoundingMode.FLOOR); + assertEquals(5L, result); + } + + @Test(expected = ArithmeticException.class) + public void whenSqrtLongValues_shouldThrowArithmeticExceptionIfRoundingNotDefinedButNecessary() { + LongMath.sqrt(30L, RoundingMode.UNNECESSARY); + } + +} diff --git a/guava21/src/test/java/GauavaStreamsTests.java b/guava21/src/test/java/GuavaStreamsTests.java similarity index 99% rename from guava21/src/test/java/GauavaStreamsTests.java rename to guava21/src/test/java/GuavaStreamsTests.java index 1482d685cf..cc5fcff229 100644 --- a/guava21/src/test/java/GauavaStreamsTests.java +++ b/guava21/src/test/java/GuavaStreamsTests.java @@ -9,7 +9,7 @@ import java.util.stream.IntStream; import java.util.stream.LongStream; import java.util.stream.Stream; -public class GauavaStreamsTests { +public class GuavaStreamsTests { List numbers; diff --git a/hibernate5/pom.xml b/hibernate5/pom.xml index b7473ec5b7..32712fba2a 100644 --- a/hibernate5/pom.xml +++ b/hibernate5/pom.xml @@ -55,6 +55,19 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + 3 + true + + **/*IntegrationTest.java + **/*LiveTest.java + + + + diff --git a/hibernate5/src/main/java/hibernate.cfg.xml b/hibernate5/src/main/resources/hibernate.cfg.xml similarity index 100% rename from hibernate5/src/main/java/hibernate.cfg.xml rename to hibernate5/src/main/resources/hibernate.cfg.xml diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantHibernateTest.java b/hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantHibernateIntegrationTest.java similarity index 93% rename from hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantHibernateTest.java rename to hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantHibernateIntegrationTest.java index 4a701de48d..8f2e88ac3d 100644 --- a/hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantHibernateTest.java +++ b/hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantHibernateIntegrationTest.java @@ -1,21 +1,14 @@ package com.baeldung.hibernate; -import static org.junit.Assert.assertNotEquals; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.sql.Statement; - +import com.baeldung.hibernate.pojo.Supplier; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; -import org.junit.Before; import org.junit.Test; -import com.baeldung.hibernate.pojo.Supplier; +import static org.junit.Assert.assertNotEquals; -public class MultiTenantHibernateTest { +public class MultiTenantHibernateIntegrationTest { @Test public void givenDBMode_whenFetchingSuppliers_thenComparingFromDbs () { SessionFactory sessionFactory; diff --git a/jackson/src/main/java/com/baeldung/jackson/serialization/DistanceSerializer.java b/jackson/src/main/java/com/baeldung/jackson/serialization/DistanceSerializer.java index ca013ff921..f5951dfd8e 100644 --- a/jackson/src/main/java/com/baeldung/jackson/serialization/DistanceSerializer.java +++ b/jackson/src/main/java/com/baeldung/jackson/serialization/DistanceSerializer.java @@ -23,7 +23,7 @@ public class DistanceSerializer extends StdSerializer { public void serialize(Distance distance, JsonGenerator generator, SerializerProvider provider) throws IOException, JsonProcessingException { generator.writeStartObject(); generator.writeFieldName("name"); - generator.writeNumber(distance.name()); + generator.writeString(distance.name()); generator.writeFieldName("unit"); generator.writeString(distance.getUnit()); generator.writeFieldName("meters"); diff --git a/jee7/README.md b/jee7/README.md index 8381bcbf34..fdd260468c 100644 --- a/jee7/README.md +++ b/jee7/README.md @@ -2,3 +2,4 @@ - [Scheduling in Java EE](http://www.baeldung.com/scheduling-in-java-enterprise-edition) - [JSON Processing in Java EE 7](http://www.baeldung.com/jee7-json) - [Converters, Listeners and Validators in Java EE 7](http://www.baeldung.com/java-ee7-converter-listener-validator) +- [Introduction to JAX-WS](http://www.baeldung.com/jax-ws) diff --git a/core-java/log4j.properties b/libraries/log4j.properties similarity index 100% rename from core-java/log4j.properties rename to libraries/log4j.properties diff --git a/libraries/myPersistence.xml b/libraries/myPersistence.xml new file mode 100644 index 0000000000..de2c250957 --- /dev/null +++ b/libraries/myPersistence.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libraries/pom.xml b/libraries/pom.xml index 021e081eb5..445a238540 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -59,6 +59,26 @@ + + + org.datanucleus + datanucleus-maven-plugin + 5.0.2 + + JDO + ${basedir}/datanucleus.properties + ${basedir}/log4j.properties + true + + + + process-classes + + enhance + + + + @@ -200,6 +220,42 @@ jackson-databind ${jackson.version} + + + org.datanucleus + javax.jdo + 3.2.0-m6 + + + org.datanucleus + datanucleus-core + 5.1.0-m1 + + + org.datanucleus + datanucleus-api-jdo + 5.1.0-m1 + + + org.datanucleus + datanucleus-rdbms + 5.1.0-m1 + + + org.datanucleus + datanucleus-maven-plugin + 5.0.2 + + + com.h2database + h2 + 1.4.194 + + + org.datanucleus + datanucleus-xml + 5.0.0-release + @@ -227,4 +283,4 @@ 2.19.1 - \ No newline at end of file + diff --git a/libraries/src/main/java/com/baeldung/http/HttpRequestBuilder.java b/libraries/src/main/java/com/baeldung/http/HttpRequestBuilder.java deleted file mode 100644 index bfa7cc121b..0000000000 --- a/libraries/src/main/java/com/baeldung/http/HttpRequestBuilder.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.baeldung.http; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.Map; - -import org.apache.log4j.Logger; - -public class HttpRequestBuilder { - - private static final Logger LOG = Logger.getLogger(HttpRequestBuilder.class); - - public HttpResponseWrapper sendRequest(String urlString, String method, Map parameters, Map properties) throws IOException{ - URL url = new URL(urlString); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); - con.setRequestMethod(method); - if (properties != null) { - properties.forEach((key, value) -> con.setRequestProperty(key, value)); - } - if (parameters != null) { - con.setDoOutput(true); - DataOutputStream out = new DataOutputStream(con.getOutputStream()); - out.writeBytes(ParameterStringBuilder.getParamsString(parameters)); - out.flush(); - out.close(); - } - - int status = con.getResponseCode(); - - BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer content = new StringBuffer(); - while ((inputLine = in.readLine()) != null) { - content.append(inputLine); - } - in.close(); - - HttpResponseWrapper responseWrapper = new HttpResponseWrapper(); - responseWrapper.setStatus(status); - responseWrapper.setContent(content.toString()); - - return responseWrapper; - } - -} diff --git a/libraries/src/main/java/com/baeldung/http/HttpResponseWrapper.java b/libraries/src/main/java/com/baeldung/http/HttpResponseWrapper.java deleted file mode 100644 index c0f68ac18b..0000000000 --- a/libraries/src/main/java/com/baeldung/http/HttpResponseWrapper.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.http; - -public class HttpResponseWrapper { - private int status; - private String content; - - public HttpResponseWrapper(){ } - - public HttpResponseWrapper(int status, String content) { - super(); - this.status = status; - this.content = content; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - -} diff --git a/libraries/src/main/java/com/baeldung/http/ParameterStringBuilder.java b/libraries/src/main/java/com/baeldung/http/ParameterStringBuilder.java deleted file mode 100644 index b148ddb3fd..0000000000 --- a/libraries/src/main/java/com/baeldung/http/ParameterStringBuilder.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.baeldung.http; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.Map; - -public class ParameterStringBuilder { - public static String getParamsString(Map params) { - StringBuilder result = new StringBuilder(); - - params.forEach((key, value) -> { - try { - result.append(URLEncoder.encode(key, "UTF-8")); - result.append("="); - result.append(URLEncoder.encode(value, "UTF-8")); - result.append("&"); - } catch (UnsupportedEncodingException exc) { - } - }); - - String resultString = result.toString(); - if (resultString.length() > 0) { - resultString = resultString.substring(0, resultString.length() - 1); - } - return resultString; - } -} diff --git a/libraries/src/main/java/com/baeldung/httpclient/HttpClientRequestBuilder.java b/libraries/src/main/java/com/baeldung/httpclient/HttpClientRequestBuilder.java deleted file mode 100644 index b2f6c36a4f..0000000000 --- a/libraries/src/main/java/com/baeldung/httpclient/HttpClientRequestBuilder.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.baeldung.httpclient; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.message.BasicNameValuePair; - -import com.baeldung.http.HttpResponseWrapper; -import com.baeldung.http.ParameterStringBuilder; - -public class HttpClientRequestBuilder { - - public HttpResponseWrapper sendGetRequest(String url, Map parameters) { - HttpClient client = HttpClientBuilder.create() - .build(); - if (parameters != null) { - url += "?" + ParameterStringBuilder.getParamsString(parameters); - } - HttpGet request = new HttpGet(url); - try { - HttpResponse response = client.execute(request); - - HttpResponseWrapper responseWrapper = new HttpResponseWrapper(); - responseWrapper.setStatus(response.getStatusLine() - .getStatusCode()); - BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity() - .getContent())); - - String line = "", content = ""; - while ((line = in.readLine()) != null) { - content += line; - } - responseWrapper.setContent(content); - return responseWrapper; - } catch (ClientProtocolException e) { - e.printStackTrace(); - return null; - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - public HttpResponseWrapper sendPostRequestWithParameters(String url, Map parameters) { - HttpClient client = HttpClientBuilder.create() - .build(); - HttpPost request = new HttpPost(url); - - try { - if (parameters != null) { - List nameValuePairs = new ArrayList<>(); - parameters.forEach((key, value) -> nameValuePairs.add(new BasicNameValuePair(key, value))); - request.setEntity(new UrlEncodedFormEntity(nameValuePairs)); - } - - HttpResponse response = client.execute(request); - - HttpResponseWrapper responseWrapper = new HttpResponseWrapper(); - responseWrapper.setStatus(response.getStatusLine() - .getStatusCode()); - BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity() - .getContent())); - - String line = "", content = ""; - while ((line = in.readLine()) != null) { - content += line; - } - responseWrapper.setContent(content); - return responseWrapper; - } catch (ClientProtocolException e) { - e.printStackTrace(); - return null; - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - public HttpResponseWrapper sendPostRequestWithJson(String url, String json) { - HttpClient client = HttpClientBuilder.create() - .build(); - HttpPost request = new HttpPost(url); - - try { - request.addHeader("Content-Type", "application/json"); - request.setEntity(new StringEntity(json)); - - HttpResponse response = client.execute(request); - - HttpResponseWrapper responseWrapper = new HttpResponseWrapper(); - responseWrapper.setStatus(response.getStatusLine() - .getStatusCode()); - BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity() - .getContent())); - - String line = "", content = ""; - while ((line = in.readLine()) != null) { - content += line; - } - responseWrapper.setContent(content); - return responseWrapper; - } catch (ClientProtocolException e) { - e.printStackTrace(); - return null; - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - -} diff --git a/libraries/src/main/java/com/baeldung/jdo/GuideToJDO.java b/libraries/src/main/java/com/baeldung/jdo/GuideToJDO.java new file mode 100644 index 0000000000..387c8c4e00 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jdo/GuideToJDO.java @@ -0,0 +1,299 @@ +package com.baeldung.jdo; + +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.jdo.PersistenceManager; +import javax.jdo.PersistenceManagerFactory; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; +import org.datanucleus.metadata.PersistenceUnitMetaData; + +public class GuideToJDO { + + private static final Logger LOGGER = Logger.getLogger(GuideToJDO.class.getName()); + private Random rnd = new Random(); + private PersistenceUnitMetaData pumd; + private PersistenceUnitMetaData pumdXML; + + public static void main(String[] args) { + new GuideToJDO(); + } + + public GuideToJDO() { + CreateH2Properties(); + CreateXMLProperties(); + CreateProducts(); + ListProducts(); + QueryJDOQL(); + QuerySQL(); + QueryJPQL(); + UpdateProducts(); + ListProducts(); + DeleteProducts(); + ListProducts(); + persistXML(); + listXMLProducts(); + } + + public void CreateH2Properties(){ + + pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); + pumd.addClassName("com.baeldung.jdo.Product"); + pumd.setExcludeUnlistedClasses(); + pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); + pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); + pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); + pumd.addProperty("javax.jdo.option.ConnectionPassword", ""); + pumd.addProperty("datanucleus.autoCreateSchema", "true"); + + } + + public void CreateXMLProperties(){ + pumdXML = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); + pumdXML.addClassName("com.baeldung.jdo.ProductXML"); + pumdXML.setExcludeUnlistedClasses(); + pumdXML.addProperty("javax.jdo.option.ConnectionURL", "xml:file:myPersistence.xml"); + pumdXML.addProperty("datanucleus.autoCreateSchema", "true"); + } + + public void CreateProducts() { + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + Product product = new Product("Tablet", 80.0); + pm.makePersistent(product); + Product product2 = new Product("Phone", 20.0); + pm.makePersistent(product2); + Product product3 = new Product("Laptop", 200.0); + pm.makePersistent(product3); + for (int i = 0; i < 100; i++) { + String nam = "Product-" + i; + double price = rnd.nextDouble(); + Product productx = new Product(nam, price); + pm.makePersistent(productx); + } + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + pm.close(); + } + } + + @SuppressWarnings("rawtypes") + public void UpdateProducts(){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + Query query = pm.newQuery(Product.class, "name == \"Phone\""); + Collection result = (Collection) query.execute(); + Product product = (Product) result.iterator().next(); + product.setName("Android Phone"); + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + pm.close(); + } + } + + @SuppressWarnings("rawtypes") + public void DeleteProducts(){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + Query query = pm.newQuery(Product.class, "name == \"Android Phone\""); + Collection result = (Collection) query.execute(); + Product product = (Product) result.iterator().next(); + pm.deletePersistent(product); + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + pm.close(); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void ListProducts() { + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + Query q = pm.newQuery("SELECT FROM " + Product.class.getName() + " WHERE price > 10"); + List products = (List) q.execute(); + Iterator iter = products.iterator(); + while (iter.hasNext()) { + Product p = iter.next(); + LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); + } + LOGGER.log(Level.INFO, "--------------------------------------------------------------"); + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + + pm.close(); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void QueryJDOQL (){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + // Declarative JDOQL : + LOGGER.log(Level.INFO, "Declarative JDOQL --------------------------------------------------------------"); + Query qDJDOQL = pm.newQuery(Product.class); + qDJDOQL.setFilter("name == 'Tablet' && price == price_value"); + qDJDOQL.declareParameters("double price_value"); + List resultsqDJDOQL = qDJDOQL.setParameters(80.0).executeList(); + + Iterator iterDJDOQL = resultsqDJDOQL.iterator(); + while (iterDJDOQL.hasNext()) { + Product p = iterDJDOQL.next(); + LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); + } + LOGGER.log(Level.INFO, "--------------------------------------------------------------"); + + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + + pm.close(); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void QuerySQL (){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + //SQL : + LOGGER.log(Level.INFO, "SQL --------------------------------------------------------------"); + Query query = pm.newQuery("javax.jdo.query.SQL", "SELECT * FROM PRODUCT"); + query.setClass(Product.class); + List results = query.executeList(); + + Iterator iter = results.iterator(); + while (iter.hasNext()) { + Product p = iter.next(); + LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); + } + LOGGER.log(Level.INFO, "--------------------------------------------------------------"); + + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + + pm.close(); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void QueryJPQL (){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + //JPQL : + LOGGER.log(Level.INFO, "JPQL --------------------------------------------------------------"); + Query q = pm.newQuery("JPQL", "SELECT p FROM "+Product.class.getName()+" p WHERE p.name = 'Laptop'"); + List results = (List)q.execute(); + + Iterator iter = results.iterator(); + while (iter.hasNext()) { + Product p = iter.next(); + LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); + } + LOGGER.log(Level.INFO, "--------------------------------------------------------------"); + + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + + pm.close(); + } + } + + public void persistXML(){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumdXML, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + ProductXML productXML = new ProductXML(0,"Tablet", 80.0); + pm.makePersistent(productXML); + ProductXML productXML2 = new ProductXML(1,"Phone", 20.0); + pm.makePersistent(productXML2); + ProductXML productXML3 = new ProductXML(2,"Laptop", 200.0); + pm.makePersistent(productXML3); + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + pm.close(); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void listXMLProducts(){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumdXML, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + Query q = pm.newQuery("SELECT FROM " + ProductXML.class.getName()); + List products = (List) q.execute(); + Iterator iter = products.iterator(); + while (iter.hasNext()) { + ProductXML p = iter.next(); + LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.getName(), p.getPrice() }); + pm.deletePersistent(p); + } + LOGGER.log(Level.INFO, "--------------------------------------------------------------"); + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + + pm.close(); + } + } +} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/jdo/Product.java b/libraries/src/main/java/com/baeldung/jdo/Product.java similarity index 100% rename from core-java/src/main/java/com/baeldung/jdo/Product.java rename to libraries/src/main/java/com/baeldung/jdo/Product.java diff --git a/libraries/src/main/java/com/baeldung/jdo/ProductXML.java b/libraries/src/main/java/com/baeldung/jdo/ProductXML.java new file mode 100644 index 0000000000..d702a8ac90 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jdo/ProductXML.java @@ -0,0 +1,44 @@ +package com.baeldung.jdo; + +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.PrimaryKey; +import javax.xml.bind.annotation.XmlAttribute; + +@PersistenceCapable() +public class ProductXML { + + @XmlAttribute + private long productNumber = 0; + @PrimaryKey + private String name = null; + private Double price = 0.0; + + public ProductXML() { + this.productNumber = 0; + this.name = null; + this.price = 0.0; + } + + public ProductXML(long productNumber, String name, Double price) { + this.productNumber = productNumber; + this.name = name; + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Double getPrice() { + return price; + } + + public void setPrice(Double price) { + this.price = price; + } + +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/http/HttpRequestBuilderTest.java b/libraries/src/test/java/com/baeldung/http/HttpRequestBuilderTest.java deleted file mode 100644 index 7f5992fbd9..0000000000 --- a/libraries/src/test/java/com/baeldung/http/HttpRequestBuilderTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.baeldung.http; - -import org.junit.Test; -import static org.junit.Assert.*; - -import java.util.HashMap; -import java.util.Map; - -import org.junit.Before; - -import java.io.IOException; - -public class HttpRequestBuilderTest { - - private HttpRequestBuilder requestPerformer; - - @Before - public void setup() { - requestPerformer = new HttpRequestBuilder(); - } - - @Test - public void whenGetRequest_thenOk() throws IOException { - HttpResponseWrapper response = requestPerformer.sendRequest("http://www.example.com", "GET", null, null); - assertEquals("status code incorrect", response.getStatus(), 200); - assertTrue("content incorrect", response.getContent() - .contains("Example Domain")); - } - - @Test - public void whenPostRequest_thenOk() throws IOException { - Map parameters = new HashMap<>(); - parameters.put("param1", "val"); - Map properties = new HashMap<>(); - properties.put("Content-Type", "application/json"); - HttpResponseWrapper response = requestPerformer.sendRequest("http://www.example.com", "POST", parameters, properties); - assertEquals("status code incorrect", response.getStatus(), 200); - } - -} diff --git a/libraries/src/test/java/com/baeldung/httpclient/HttpClientRequestBuilderTest.java b/libraries/src/test/java/com/baeldung/httpclient/HttpClientRequestBuilderTest.java deleted file mode 100644 index 886d2649a3..0000000000 --- a/libraries/src/test/java/com/baeldung/httpclient/HttpClientRequestBuilderTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.baeldung.httpclient; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.HashMap; -import java.util.Map; - -import org.junit.Before; -import org.junit.Test; - -import com.baeldung.http.HttpResponseWrapper; - -public class HttpClientRequestBuilderTest { - private HttpClientRequestBuilder requestBuilder; - - @Before - public void setup() { - requestBuilder = new HttpClientRequestBuilder(); - } - - @Test - public void whenGetRequest_thenOk() { - Map parameters = new HashMap<>(); - parameters.put("param1", "val"); - HttpResponseWrapper response = requestBuilder.sendGetRequest("http://www.example.com",parameters); - assertEquals("status code incorrect", response.getStatus(), 200); - assertTrue("content incorrect", response.getContent() - .contains("Example Domain")); - } - - @Test - public void whenPostRequestWithParameters_thenOk() { - Map parameters = new HashMap<>(); - parameters.put("param1", "val"); - HttpResponseWrapper response = requestBuilder.sendPostRequestWithParameters("http://www.example.com", parameters); - assertEquals("status code incorrect", response.getStatus(), 200); - } - - @Test - public void whenPostRequestWithJson_thenOk() { - String json = "{\"id\":\"1\"}"; - HttpResponseWrapper response = requestBuilder.sendPostRequestWithJson("http://www.example.com",json); - assertEquals("status code incorrect", response.getStatus(), 200); - } -} diff --git a/core-java/src/test/java/com/baeldung/jdo/GuideToJDOTest.java b/libraries/src/test/java/com/baeldung/jdo/GuideToJDOIntegrationTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/jdo/GuideToJDOTest.java rename to libraries/src/test/java/com/baeldung/jdo/GuideToJDOIntegrationTest.java index b8a8d2adb3..65f89d75b2 100644 --- a/core-java/src/test/java/com/baeldung/jdo/GuideToJDOTest.java +++ b/libraries/src/test/java/com/baeldung/jdo/GuideToJDOIntegrationTest.java @@ -1,21 +1,20 @@ package com.baeldung.jdo; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import java.util.Iterator; -import java.util.List; - -import javax.jdo.PersistenceManager; -import javax.jdo.PersistenceManagerFactory; -import javax.jdo.Query; -import javax.jdo.Transaction; - import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; import org.datanucleus.metadata.PersistenceUnitMetaData; import org.junit.Test; -public class GuideToJDOTest { +import javax.jdo.PersistenceManager; +import javax.jdo.PersistenceManagerFactory; +import javax.jdo.Query; +import javax.jdo.Transaction; +import java.util.Iterator; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +public class GuideToJDOIntegrationTest { @Test public void givenProduct_WhenNewThenPerformTransaction() { PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); @@ -34,8 +33,7 @@ public class GuideToJDOTest { tx.begin(); for (int i = 0; i < 100; i++){ String nam = "Product-" + i; - double price = i; - Product productx = new Product(nam, price); + Product productx = new Product(nam, (double) i); pm.makePersistent(productx); } tx.commit(); diff --git a/pom.xml b/pom.xml index 57041f2340..3f8eeb6264 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,7 @@ handling-spring-static-resources hazelcast hbase + httpclient hystrix @@ -200,12 +201,8 @@ video-tutorials - wicket - xml xmlunit2 - xstream - struts2 apache-velocity apache-solrj @@ -215,6 +212,7 @@ spring-data-gemfire cucumber mybatis + spring-drools @@ -225,8 +223,6 @@ 1.6.0 maven - hibernate5 - diff --git a/reactor-core/pom.xml b/reactor-core/pom.xml index 3aeb4af3d5..2f9b096fd2 100644 --- a/reactor-core/pom.xml +++ b/reactor-core/pom.xml @@ -16,6 +16,17 @@ 1.8 + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LongRunningUnitTest.java + **/*IntegrationTest.java + + + @@ -56,4 +67,6 @@ 1.1.3 + + diff --git a/reactor-core/src/test/java/com/baeldung/reactor/ReactorTest.java b/reactor-core/src/test/java/com/baeldung/reactor/ReactorIntegrationTest.java similarity index 98% rename from reactor-core/src/test/java/com/baeldung/reactor/ReactorTest.java rename to reactor-core/src/test/java/com/baeldung/reactor/ReactorIntegrationTest.java index 0e534e7d61..56650ba306 100644 --- a/reactor-core/src/test/java/com/baeldung/reactor/ReactorTest.java +++ b/reactor-core/src/test/java/com/baeldung/reactor/ReactorIntegrationTest.java @@ -12,7 +12,7 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -public class ReactorTest { +public class ReactorIntegrationTest { @Test public void givenFlux_whenSubscribing_thenStream() throws InterruptedException { diff --git a/spring-all/src/test/java/org/baeldung/shell/simple/SimpleCLIUnitTest.java b/spring-all/src/test/java/org/baeldung/shell/simple/SimpleCLIIntegrationTest.java similarity index 98% rename from spring-all/src/test/java/org/baeldung/shell/simple/SimpleCLIUnitTest.java rename to spring-all/src/test/java/org/baeldung/shell/simple/SimpleCLIIntegrationTest.java index cc5ac863b5..3ec756e238 100644 --- a/spring-all/src/test/java/org/baeldung/shell/simple/SimpleCLIUnitTest.java +++ b/spring-all/src/test/java/org/baeldung/shell/simple/SimpleCLIIntegrationTest.java @@ -1,7 +1,5 @@ package org.baeldung.shell.simple; -import java.io.File; - import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; @@ -10,7 +8,9 @@ import org.springframework.shell.Bootstrap; import org.springframework.shell.core.CommandResult; import org.springframework.shell.core.JLineShellComponent; -public class SimpleCLIUnitTest { +import java.io.File; + +public class SimpleCLIIntegrationTest { static JLineShellComponent shell; diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index b00af7fc94..7477c78b58 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -125,7 +125,23 @@ mysql-connector-java 6.0.6 + + + org.togglz + togglz-spring-boot-starter + ${togglz.version} + + + + org.togglz + togglz-spring-security + ${togglz.version} + + + org.apache.activemq + artemis-server + @@ -262,6 +278,7 @@ 3.1.7 8.5.11 1.4.194 + 2.4.1.Final diff --git a/spring-boot/src/main/java/com/baeldung/toggle/Employee.java b/spring-boot/src/main/java/com/baeldung/toggle/Employee.java new file mode 100644 index 0000000000..64a8b3ce5b --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/Employee.java @@ -0,0 +1,37 @@ +package com.baeldung.toggle; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class Employee { + + @Id + private long id; + private double salary; + + public Employee() { + } + + public Employee(long id, double salary) { + this.id = id; + this.salary = salary; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public double getSalary() { + return salary; + } + + public void setSalary(double salary) { + this.salary = salary; + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/toggle/EmployeeRepository.java b/spring-boot/src/main/java/com/baeldung/toggle/EmployeeRepository.java new file mode 100644 index 0000000000..7ea7c11fde --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/EmployeeRepository.java @@ -0,0 +1,7 @@ +package com.baeldung.toggle; + +import org.springframework.data.repository.CrudRepository; + +public interface EmployeeRepository extends CrudRepository{ + +} diff --git a/spring-boot/src/main/java/com/baeldung/toggle/FeatureAssociation.java b/spring-boot/src/main/java/com/baeldung/toggle/FeatureAssociation.java new file mode 100644 index 0000000000..4578b8498e --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/FeatureAssociation.java @@ -0,0 +1,12 @@ +package com.baeldung.toggle; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.TYPE }) +public @interface FeatureAssociation { + MyFeatures value(); +} diff --git a/spring-boot/src/main/java/com/baeldung/toggle/FeaturesAspect.java b/spring-boot/src/main/java/com/baeldung/toggle/FeaturesAspect.java new file mode 100644 index 0000000000..9bc643fccc --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/FeaturesAspect.java @@ -0,0 +1,27 @@ +package com.baeldung.toggle; + +import org.apache.log4j.Logger; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.stereotype.Component; + +@Aspect +@Component +public class FeaturesAspect { + + private static final Logger LOG = Logger.getLogger(FeaturesAspect.class); + + @Around(value = "@within(featureAssociation) || @annotation(featureAssociation)") + public Object checkAspect(ProceedingJoinPoint joinPoint, FeatureAssociation featureAssociation) throws Throwable { + if (featureAssociation.value() + .isActive()) { + return joinPoint.proceed(); + } else { + LOG.info("Feature " + featureAssociation.value() + .name() + " is not enabled!"); + return null; + } + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/toggle/MyFeatures.java b/spring-boot/src/main/java/com/baeldung/toggle/MyFeatures.java new file mode 100644 index 0000000000..245415a2a0 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/MyFeatures.java @@ -0,0 +1,22 @@ +package com.baeldung.toggle; + +import org.togglz.core.Feature; +import org.togglz.core.activation.SystemPropertyActivationStrategy; +import org.togglz.core.annotation.ActivationParameter; +import org.togglz.core.annotation.DefaultActivationStrategy; +import org.togglz.core.annotation.EnabledByDefault; +import org.togglz.core.annotation.Label; +import org.togglz.core.context.FeatureContext; + +public enum MyFeatures implements Feature { + + @Label("Employee Management Feature") @EnabledByDefault @DefaultActivationStrategy(id = SystemPropertyActivationStrategy.ID, + parameters = { @ActivationParameter(name = SystemPropertyActivationStrategy.PARAM_PROPERTY_NAME, value = "employee.feature"), + @ActivationParameter(name = SystemPropertyActivationStrategy.PARAM_PROPERTY_VALUE, value = "true") }) + EMPLOYEE_MANAGEMENT_FEATURE; + + public boolean isActive() { + return FeatureContext.getFeatureManager().isActive(this); + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/toggle/SalaryController.java b/spring-boot/src/main/java/com/baeldung/toggle/SalaryController.java new file mode 100644 index 0000000000..5d72f0105a --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/SalaryController.java @@ -0,0 +1,20 @@ +package com.baeldung.toggle; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class SalaryController { + + @Autowired + SalaryService salaryService; + + @PostMapping(value = "/increaseSalary") + @ResponseBody + public void increaseSalary(@RequestParam long id) { + salaryService.increaseSalary(id); + } +} diff --git a/spring-boot/src/main/java/com/baeldung/toggle/SalaryService.java b/spring-boot/src/main/java/com/baeldung/toggle/SalaryService.java new file mode 100644 index 0000000000..df65033d6b --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/SalaryService.java @@ -0,0 +1,19 @@ +package com.baeldung.toggle; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class SalaryService { + + @Autowired + EmployeeRepository employeeRepository; + + @FeatureAssociation(value = MyFeatures.EMPLOYEE_MANAGEMENT_FEATURE) + public void increaseSalary(long id) { + Employee employee = employeeRepository.findOne(id); + employee.setSalary(employee.getSalary() + employee.getSalary() * 0.1); + employeeRepository.save(employee); + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/toggle/ToggleApplication.java b/spring-boot/src/main/java/com/baeldung/toggle/ToggleApplication.java new file mode 100644 index 0000000000..c269262ab2 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/ToggleApplication.java @@ -0,0 +1,17 @@ +package com.baeldung.toggle; + +import javax.annotation.security.RolesAllowed; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import com.baeldung.autoconfiguration.MySQLAutoconfiguration; + +@SpringBootApplication(exclude = MySQLAutoconfiguration.class) +public class ToggleApplication { + @RolesAllowed("*") + public static void main(String[] args) { + System.setProperty("security.basic.enabled", "false"); + SpringApplication.run(ToggleApplication.class, args); + } +} diff --git a/spring-boot/src/main/java/com/baeldung/toggle/ToggleConfiguration.java b/spring-boot/src/main/java/com/baeldung/toggle/ToggleConfiguration.java new file mode 100644 index 0000000000..ee0b251479 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/toggle/ToggleConfiguration.java @@ -0,0 +1,20 @@ +package com.baeldung.toggle; + +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.togglz.core.manager.EnumBasedFeatureProvider; +import org.togglz.core.spi.FeatureProvider; + +@Configuration +@EnableJpaRepositories("com.baeldung.toggle") +@EntityScan("com.baeldung.toggle") +public class ToggleConfiguration { + + @Bean + public FeatureProvider featureProvider() { + return new EnumBasedFeatureProvider(MyFeatures.class); + } + +} diff --git a/spring-boot/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java new file mode 100644 index 0000000000..e40678603b --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java @@ -0,0 +1,66 @@ +package com.baeldung.toggle; + +import static org.junit.Assert.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +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.SpringBootTest.WebEnvironment; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = ToggleApplication.class) +@AutoConfigureMockMvc +public class ToggleIntegrationTest { + + @Autowired + SalaryService salaryService; + + @Autowired + EmployeeRepository employeeRepository; + + @Autowired + private MockMvc mockMvc; + + @Autowired + private WebApplicationContext wac; + + @Before + public void setup() { + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + } + + @Test + public void givenFeaturePropertyFalse_whenIncreaseSalary_thenNoIncrease() throws Exception { + Employee emp = new Employee(1, 2000); + employeeRepository.save(emp); + + System.setProperty("employee.feature", "false"); + + mockMvc.perform(post("/increaseSalary").param("id", emp.getId() + "")).andExpect(status().is(200)); + + emp = employeeRepository.findOne(1L); + assertEquals("salary incorrect", 2000, emp.getSalary(), 0.5); + } + + @Test + public void givenFeaturePropertyTrue_whenIncreaseSalary_thenIncrease() throws Exception { + Employee emp = new Employee(1, 2000); + employeeRepository.save(emp); + + System.setProperty("employee.feature", "true"); + + mockMvc.perform(post("/increaseSalary").param("id", emp.getId() + "")).andExpect(status().is(200)); + + emp = employeeRepository.findOne(1L); + assertEquals("salary incorrect", 2200, emp.getSalary(), 0.5); + } +} diff --git a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerIntegrationTest.java index 110092d293..4c3a50f933 100644 --- a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerIntegrationTest.java +++ b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerIntegrationTest.java @@ -19,18 +19,19 @@ import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.MediaType; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = DemoApplication.class) @AutoConfigureMockMvc -@TestPropertySource(locations = "classpath:application-integrationtest.properties") +// @TestPropertySource(locations = "classpath:application-integrationtest.properties") +@AutoConfigureTestDatabase public class EmployeeRestControllerIntegrationTest { @Autowired diff --git a/spring-boot/src/test/resources/application-integrationtest.properties b/spring-boot/src/test/resources/application-integrationtest.properties index 508acf45e0..bcd03226d3 100644 --- a/spring-boot/src/test/resources/application-integrationtest.properties +++ b/spring-boot/src/test/resources/application-integrationtest.properties @@ -1,2 +1,4 @@ -spring.datasource.url = jdbc:h2:mem:test -spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.H2Dialect \ No newline at end of file +spring.datasource.url=jdbc:mysql://localhost:3306/employee_int_test +spring.datasource.username=root +spring.datasource.password=root + diff --git a/spring-drools/pom.xml b/spring-drools/pom.xml new file mode 100644 index 0000000000..8afdae0d84 --- /dev/null +++ b/spring-drools/pom.xml @@ -0,0 +1,130 @@ + + + 4.0.0 + + com.baeldung + spring-drools + 1.0.0-SNAPSHOT + + 1.1.1.RELEASE + 4.0-alpha6 + 7.0.0.CR1 + 3.13 + 2.19.1 + + + + + io.spring.platform + platform-bom + ${spring-boot-version} + pom + import + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-actuator + + + org.apache.httpcomponents + httpcore + ${http-component-version} + + + + org.kie + kie-ci + ${drools-version} + + + org.drools + drools-decisiontables + ${drools-version} + + + + org.drools + drools-core + ${drools-version} + + + org.drools + drools-compiler + ${drools-version} + + + org.apache.poi + poi + ${apache-poi-version} + + + + org.apache.poi + poi-ooxml + ${apache-poi-version} + + + org.kie + kie-spring + 6.4.0.Final + + + org.springframework + spring-tx + + + org.springframework + spring-beans + + + org.springframework + spring-core + + + org.springframework + spring-context + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire-plugin-version} + + + **/*IntegrationTest.java + + + + + + \ No newline at end of file diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/Application.java b/spring-drools/src/main/java/com/baeldung/spring/drools/Application.java new file mode 100644 index 0000000000..8f5b915f88 --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/Application.java @@ -0,0 +1,30 @@ +package com.baeldung.spring.drools; + + +import com.baeldung.spring.drools.model.Applicant; +import com.baeldung.spring.drools.model.Product; +import com.baeldung.spring.drools.model.SuggestedRole; +import com.baeldung.spring.drools.service.ApplicantService; +import com.baeldung.spring.drools.service.ProductService; +import org.kie.api.KieServices; +import org.kie.api.runtime.KieContainer; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; + +@SpringBootApplication +@Import(DroolConfiguration.class) +public class Application { + + public static void main(String[] args) { + ApplicationContext ctx = SpringApplication.run(Application.class, args); + ApplicantService applicantService=(ApplicantService)ctx.getBean("applicantService"); + applicantService.suggestARoleForApplicant(new Applicant("Baljeet",37,1200000.0,8),new SuggestedRole()); + + ProductService productService=(ProductService)ctx.getBean("productService"); + Product returnedProduct=productService.applyLabelToProduct(new Product("Microwave","Book")); + } + +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/DroolConfiguration.java b/spring-drools/src/main/java/com/baeldung/spring/drools/DroolConfiguration.java new file mode 100644 index 0000000000..7a5e833ed5 --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/DroolConfiguration.java @@ -0,0 +1,83 @@ +package com.baeldung.spring.drools; + +import com.baeldung.spring.drools.service.ApplicantService; +import com.baeldung.spring.drools.service.ProductService; +import org.kie.api.KieBase; +import org.kie.api.KieServices; +import org.kie.api.builder.*; +import org.kie.api.runtime.KieContainer; +import org.kie.api.runtime.KieSession; +import org.kie.internal.io.ResourceFactory; +import org.kie.spring.KModuleBeanFactoryPostProcessor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; + +import java.io.IOException; + +@Configuration +public class DroolConfiguration { + + private static final String RULES_PATH = "com/baeldung/spring/drools/rules/"; + + @Bean + public KieFileSystem kieFileSystem() throws IOException { + KieFileSystem kieFileSystem = getKieServices().newKieFileSystem(); + for (Resource file : getRuleFiles()) { + kieFileSystem.write(ResourceFactory.newClassPathResource(RULES_PATH + file.getFilename(), "UTF-8")); + } + return kieFileSystem; + } + + private Resource[] getRuleFiles() throws IOException { + ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); + return resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "**/*.*"); + } + + @Bean + public KieContainer kieContainer() throws IOException { + final KieRepository kieRepository = getKieServices().getRepository(); + + kieRepository.addKieModule(new KieModule() { + public ReleaseId getReleaseId() { + return kieRepository.getDefaultReleaseId(); + } + }); + + KieBuilder kieBuilder = getKieServices().newKieBuilder(kieFileSystem()); + kieBuilder.buildAll(); + + return getKieServices().newKieContainer(kieRepository.getDefaultReleaseId()); + } + + private KieServices getKieServices() { + return KieServices.Factory.get(); + } + + @Bean + public KieBase kieBase() throws IOException { + return kieContainer().getKieBase(); + } + + @Bean + public KieSession kieSession() throws IOException { + return kieContainer().newKieSession(); + } + + @Bean + public ApplicantService getApplicantService(){ + return new ApplicantService(); + } + + @Bean + public ProductService getProductService(KieContainer kieContainer){ + return new ProductService(); + } + + @Bean + public KModuleBeanFactoryPostProcessor kiePostProcessor() { + return new KModuleBeanFactoryPostProcessor(); + } +} \ No newline at end of file diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/model/Applicant.java b/spring-drools/src/main/java/com/baeldung/spring/drools/model/Applicant.java new file mode 100644 index 0000000000..f28d0fcab7 --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/model/Applicant.java @@ -0,0 +1,48 @@ +package com.baeldung.spring.drools.model; + +public class Applicant { + + private String name; + private int age; + private double currentSalary; + private int experienceInYears; + + public Applicant(String name, int age, Double currentSalary, int experienceInYears) { + this.name = name; + this.age = age; + this.currentSalary = currentSalary; + this.experienceInYears = experienceInYears; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public Double getCurrentSalary() { + return currentSalary; + } + + public void setCurrentSalary(Double currentSalary) { + this.currentSalary = currentSalary; + } + + public int getExperienceInYears() { + return experienceInYears; + } + + public void setExperienceInYears(int experienceInYears) { + this.experienceInYears = experienceInYears; + } +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/model/Product.java b/spring-drools/src/main/java/com/baeldung/spring/drools/model/Product.java new file mode 100644 index 0000000000..a861df5834 --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/model/Product.java @@ -0,0 +1,38 @@ +package com.baeldung.spring.drools.model; + +public class Product { + private String name; + private String type; + + private String label; + + public Product(String name, String type) { + this.name = name; + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/model/SuggestedRole.java b/spring-drools/src/main/java/com/baeldung/spring/drools/model/SuggestedRole.java new file mode 100644 index 0000000000..1ace5aa4ae --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/model/SuggestedRole.java @@ -0,0 +1,14 @@ +package com.baeldung.spring.drools.model; + +public class SuggestedRole { + + private String role; + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/service/ApplicantService.java b/spring-drools/src/main/java/com/baeldung/spring/drools/service/ApplicantService.java new file mode 100644 index 0000000000..f78ffe668b --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/service/ApplicantService.java @@ -0,0 +1,25 @@ +package com.baeldung.spring.drools.service; + +import com.baeldung.spring.drools.model.Applicant; +import com.baeldung.spring.drools.model.SuggestedRole; +import org.kie.api.runtime.KieContainer; +import org.kie.api.runtime.KieSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ApplicantService { + + @Autowired + private KieContainer kieContainer; + + public SuggestedRole suggestARoleForApplicant(Applicant applicant,SuggestedRole suggestedRole){ + KieSession kieSession = kieContainer.newKieSession(); + kieSession.insert(applicant); + kieSession.setGlobal("suggestedRole",suggestedRole); + kieSession.fireAllRules(); + System.out.println(suggestedRole.getRole()); + return suggestedRole; + + } +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/service/ProductService.java b/spring-drools/src/main/java/com/baeldung/spring/drools/service/ProductService.java new file mode 100644 index 0000000000..21ca9c9730 --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/service/ProductService.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.drools.service; + +import com.baeldung.spring.drools.model.Product; +import org.kie.api.runtime.KieContainer; +import org.kie.api.runtime.KieSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ProductService { + + @Autowired + private KieContainer kieContainer; + + public Product applyLabelToProduct(Product product){ + KieSession kieSession = kieContainer.newKieSession(); + kieSession.insert(product); + kieSession.fireAllRules(); + System.out.println(product.getLabel()); + return product; + + } + +} diff --git a/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/Product_rules.xls b/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/Product_rules.xls new file mode 100644 index 0000000000..24caaf2470 Binary files /dev/null and b/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/Product_rules.xls differ diff --git a/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/SuggestApplicant.drl b/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/SuggestApplicant.drl new file mode 100644 index 0000000000..baaf29d0b4 --- /dev/null +++ b/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/SuggestApplicant.drl @@ -0,0 +1,31 @@ +package com.baeldung.spring.drools.rules; + +import com.baeldung.spring.drools.model.Applicant; + +global com.baeldung.spring.drools.model.SuggestedRole suggestedRole; + +dialect "mvel" + +rule "Suggest Manager Role" + when + Applicant(experienceInYears > 10) + Applicant(currentSalary > 1000000 && currentSalary <= 2500000) + then + suggestedRole.setRole("Manager"); +end + +rule "Suggest Senior developer Role" + when + Applicant(experienceInYears > 5 && experienceInYears <= 10) + Applicant(currentSalary > 500000 && currentSalary <= 1500000) + then + suggestedRole.setRole("Senior developer"); +end + +rule "Suggest Developer Role" + when + Applicant(experienceInYears > 0 && experienceInYears <= 5) + Applicant(currentSalary > 200000 && currentSalary <= 1000000) + then + suggestedRole.setRole("Developer"); +end diff --git a/spring-drools/src/test/java/com/baeldung/spring/drools/service/ApplicantServiceIntegrationTest.java b/spring-drools/src/test/java/com/baeldung/spring/drools/service/ApplicantServiceIntegrationTest.java new file mode 100644 index 0000000000..d7e7634c00 --- /dev/null +++ b/spring-drools/src/test/java/com/baeldung/spring/drools/service/ApplicantServiceIntegrationTest.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.drools.service; + +import com.baeldung.spring.drools.Application; +import com.baeldung.spring.drools.DroolConfiguration; +import com.baeldung.spring.drools.model.Applicant; +import com.baeldung.spring.drools.model.SuggestedRole; +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 static junit.framework.Assert.assertNull; +import static junit.framework.TestCase.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = {DroolConfiguration.class}) +public class ApplicantServiceIntegrationTest { + + @Autowired + ApplicantService applicantService; + + @Test + public void whenCriteriaMatching_ThenSuggestManagerRole(){ + Applicant applicant=new Applicant("Davis",37,1600000.0,11); + SuggestedRole suggestedRole=new SuggestedRole(); + applicantService.suggestARoleForApplicant(applicant,suggestedRole); + assertEquals("Manager",suggestedRole.getRole()); + } + + @Test + public void whenCriteriaMatching_ThenSuggestSeniorDeveloperRole(){ + Applicant applicant=new Applicant("John",37,1200000.0,8); + SuggestedRole suggestedRole=new SuggestedRole(); + applicantService.suggestARoleForApplicant(applicant,suggestedRole); + assertEquals("Senior developer",suggestedRole.getRole()); + } + @Test + public void whenCriteriaMatching_ThenSuggestDeveloperRole(){ + Applicant applicant=new Applicant("Davis",37,800000.0,3); + SuggestedRole suggestedRole=new SuggestedRole(); + applicantService.suggestARoleForApplicant(applicant,suggestedRole); + assertEquals("Developer",suggestedRole.getRole()); + } + @Test + public void whenCriteriaNotMatching_ThenNoRole(){ + Applicant applicant=new Applicant("John",37,1200000.0,5); + SuggestedRole suggestedRole=new SuggestedRole(); + applicantService.suggestARoleForApplicant(applicant,suggestedRole); + assertNull(suggestedRole.getRole()); + } +} diff --git a/spring-drools/src/test/java/com/baeldung/spring/drools/service/ProductServiceIntegrationTest.java b/spring-drools/src/test/java/com/baeldung/spring/drools/service/ProductServiceIntegrationTest.java new file mode 100644 index 0000000000..7a442e48fd --- /dev/null +++ b/spring-drools/src/test/java/com/baeldung/spring/drools/service/ProductServiceIntegrationTest.java @@ -0,0 +1,34 @@ +package com.baeldung.spring.drools.service; + +import com.baeldung.spring.drools.Application; +import com.baeldung.spring.drools.DroolConfiguration; +import com.baeldung.spring.drools.model.Product; +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 static junit.framework.TestCase.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = {DroolConfiguration.class}) +public class ProductServiceIntegrationTest { + + @Autowired + ProductService productService; + + @Test + public void whenProductTypeElectronic_ThenLabelBarcode(){ + Product product=new Product("Microwave","Electronic"); + product=productService.applyLabelToProduct(product); + assertEquals("BarCode",product.getLabel()); + } + + @Test + public void whenProductTypeBook_ThenLabelIsbn(){ + Product product=new Product("AutoBiography","Book"); + product=productService.applyLabelToProduct(product); + assertEquals("ISBN",product.getLabel()); + } +} diff --git a/spring-jpa/src/test/java/org/baeldung/persistence/repository/InMemoryDBTest.java b/spring-jpa/src/test/java/org/baeldung/persistence/repository/InMemoryDBIntegrationTest.java similarity index 93% rename from spring-jpa/src/test/java/org/baeldung/persistence/repository/InMemoryDBTest.java rename to spring-jpa/src/test/java/org/baeldung/persistence/repository/InMemoryDBIntegrationTest.java index 2c40c5b117..1fcc4be45d 100644 --- a/spring-jpa/src/test/java/org/baeldung/persistence/repository/InMemoryDBTest.java +++ b/spring-jpa/src/test/java/org/baeldung/persistence/repository/InMemoryDBIntegrationTest.java @@ -1,7 +1,8 @@ package org.baeldung.persistence.repository; -import javax.annotation.Resource; - +import org.baeldung.config.StudentJpaConfig; +import org.baeldung.persistence.dao.StudentRepository; +import org.baeldung.persistence.model.Student; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; @@ -9,16 +10,14 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; import org.springframework.transaction.annotation.Transactional; -import org.baeldung.config.StudentJpaConfig; -import org.baeldung.persistence.model.Student; -import org.baeldung.persistence.dao.StudentRepository; +import javax.annotation.Resource; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { StudentJpaConfig.class }, loader = AnnotationConfigContextLoader.class) @Transactional -public class InMemoryDBTest { +public class InMemoryDBIntegrationTest { @Resource private StudentRepository studentRepository; diff --git a/spring-rest/src/test/java/org/baeldung/web/controller/HeavyResourceControllerTest.java b/spring-rest/src/test/java/org/baeldung/web/controller/HeavyResourceControllerIntegrationTest.java similarity index 98% rename from spring-rest/src/test/java/org/baeldung/web/controller/HeavyResourceControllerTest.java rename to spring-rest/src/test/java/org/baeldung/web/controller/HeavyResourceControllerIntegrationTest.java index a1f9e71bec..1dae559371 100644 --- a/spring-rest/src/test/java/org/baeldung/web/controller/HeavyResourceControllerTest.java +++ b/spring-rest/src/test/java/org/baeldung/web/controller/HeavyResourceControllerIntegrationTest.java @@ -26,7 +26,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = WebConfig.class) @WebAppConfiguration -public class HeavyResourceControllerTest { +public class HeavyResourceControllerIntegrationTest { private MockMvc mockMvc; diff --git a/spring-rest/src/test/java/org/baeldung/web/controller/mediatypes/CustomMediaTypeControllerTest.java b/spring-rest/src/test/java/org/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java similarity index 96% rename from spring-rest/src/test/java/org/baeldung/web/controller/mediatypes/CustomMediaTypeControllerTest.java rename to spring-rest/src/test/java/org/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java index a38177f78b..9ef2dfa215 100644 --- a/spring-rest/src/test/java/org/baeldung/web/controller/mediatypes/CustomMediaTypeControllerTest.java +++ b/spring-rest/src/test/java/org/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java @@ -18,7 +18,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = WebConfig.class) @WebAppConfiguration -public class CustomMediaTypeControllerTest { +public class CustomMediaTypeControllerIntegrationTest { private MockMvc mockMvc; diff --git a/spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerTest.java b/spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerIntegrationTest.java similarity index 88% rename from spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerTest.java rename to spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerIntegrationTest.java index f2f00a40d8..7bd16a3e97 100644 --- a/spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerTest.java +++ b/spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerIntegrationTest.java @@ -1,15 +1,6 @@ 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; @@ -22,11 +13,17 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.is; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = WebConfig.class) @WebAppConfiguration -public class BazzNewMappingsExampleControllerTest { +public class BazzNewMappingsExampleControllerIntegrationTest { private MockMvc mockMvc; diff --git a/spring-session/pom.xml b/spring-session/pom.xml index 2c8b15a6eb..79095cbfbb 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -59,7 +59,7 @@ maven-surefire-plugin - **/*ControllerTest.java + **/*IntegrationTest.java diff --git a/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java b/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerIntegrationTest.java similarity index 97% rename from spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java rename to spring-session/src/test/java/com/baeldung/spring/session/SessionControllerIntegrationTest.java index c8138889b2..84dd2bc139 100644 --- a/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java +++ b/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerIntegrationTest.java @@ -11,7 +11,7 @@ import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -public class SessionControllerTest { +public class SessionControllerIntegrationTest { private Jedis jedis; private TestRestTemplate testRestTemplate; diff --git a/wicket/pom.xml b/wicket/pom.xml index 8b81ea4be8..f51ef0173e 100644 --- a/wicket/pom.xml +++ b/wicket/pom.xml @@ -4,10 +4,10 @@ 4.0.0 com.baeldung.wicket.examples - wicket-intro + wicket war 1.0-SNAPSHOT - WicketIntro + Wicket 7.5.0 9.2.13.v20150730 @@ -100,6 +100,16 @@ jetty-maven-plugin ${jetty9.version} + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + + + diff --git a/xstream/pom.xml b/xstream/pom.xml index ee1882850a..a97bee27fa 100644 --- a/xstream/pom.xml +++ b/xstream/pom.xml @@ -2,9 +2,9 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.baeldung - xstream-introduction + xstream 0.0.1-SNAPSHOT - xstream-introduction + xstream An Introduction To XStream @@ -57,6 +57,17 @@ 1.8 + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LongRunningUnitTest.java + **/*IntegrationTest.java + + + diff --git a/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java b/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java index a15bea5481..27b8cc84f3 100644 --- a/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java +++ b/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java @@ -7,17 +7,14 @@ import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver; public class SimpleXstreamInitializer { public XStream getXstreamInstance() { - XStream xtreamInstance = new XStream(); - return xtreamInstance; + return new XStream(); } public XStream getXstreamJettisonMappedInstance() { - XStream xstreamInstance = new XStream(new JettisonMappedXmlDriver()); - return xstreamInstance; + return new XStream(new JettisonMappedXmlDriver()); } public XStream getXstreamJsonHierarchicalInstance() { - XStream xstreamInstance = new XStream(new JsonHierarchicalStreamDriver()); - return xstreamInstance; + return new XStream(new JsonHierarchicalStreamDriver()); } } \ No newline at end of file diff --git a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java index 479500c4a0..ed74086ed6 100644 --- a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java +++ b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java @@ -1,14 +1,15 @@ package com.baeldung.pojo.test; +import com.baeldung.complex.pojo.ContactDetails; import com.baeldung.complex.pojo.Customer; import com.baeldung.initializer.SimpleXstreamInitializer; import com.thoughtworks.xstream.XStream; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.io.FileReader; -import java.io.IOException; + +import static org.junit.Assert.assertNotNull; public class ComplexXmlToObjectAnnotationTest { @@ -22,17 +23,30 @@ public class ComplexXmlToObjectAnnotationTest { } @Test - public void convertXmlToObjectFromFile() { - try { - ClassLoader classLoader = getClass().getClassLoader(); - FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field-complex.xml").getFile()); - Customer customer = (Customer) xstream.fromXML(reader); - Assert.assertNotNull(customer); - Assert.assertNotNull(customer.getContactDetailsList()); + public void convertXmlToObjectFromFile() throws Exception { + ClassLoader classLoader = getClass().getClassLoader(); + FileReader reader = new FileReader(classLoader + .getResource("data-file-alias-field-complex.xml") + .getFile()); + Customer customer = (Customer) xstream.fromXML(reader); - } catch (IOException e) { - e.printStackTrace(); - } + assertNotNull(customer); + assertNotNull(customer.getContactDetailsList()); } + @Test + public void convertXmlToObjectAttributeFromFile() throws Exception { + ClassLoader classLoader = getClass().getClassLoader(); + FileReader reader = new FileReader(classLoader + .getResource("data-file-alias-field-complex.xml") + .getFile()); + Customer customer = (Customer) xstream.fromXML(reader); + + assertNotNull(customer); + assertNotNull(customer.getContactDetailsList()); + + for (ContactDetails contactDetails : customer.getContactDetailsList()) { + assertNotNull(contactDetails.getContactType()); + } + } } diff --git a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java deleted file mode 100644 index 8c569aa11e..0000000000 --- a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.pojo.test; - -import com.baeldung.complex.pojo.ContactDetails; -import com.baeldung.complex.pojo.Customer; -import com.baeldung.initializer.SimpleXstreamInitializer; -import com.thoughtworks.xstream.XStream; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.io.FileReader; -import java.io.IOException; - -public class ComplexXmlToObjectAttributeCollectionTest { - - private XStream xstream = null; - - @Before - public void dataSetup() { - SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer(); - xstream = simpleXstreamInitializer.getXstreamInstance(); - xstream.processAnnotations(Customer.class); - } - - @Test - public void convertXmlToObjectFromFile() { - try { - ClassLoader classLoader = getClass().getClassLoader(); - FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field-complex.xml").getFile()); - Customer customer = (Customer) xstream.fromXML(reader); - Assert.assertNotNull(customer); - Assert.assertNotNull(customer.getContactDetailsList()); - for (ContactDetails contactDetails : customer.getContactDetailsList()) { - Assert.assertNotNull(contactDetails.getContactType()); - } - - } catch (IOException e) { - e.printStackTrace(); - } - } - -} diff --git a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java index 6b1ae9dbb3..02cdbd734f 100644 --- a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java +++ b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java @@ -7,8 +7,8 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.io.FileNotFoundException; import java.io.FileReader; -import java.io.IOException; public class ComplexXmlToObjectCollectionTest { @@ -22,18 +22,14 @@ public class ComplexXmlToObjectCollectionTest { } @Test - public void convertXmlToObjectFromFile() { - try { - ClassLoader classLoader = getClass().getClassLoader(); - FileReader reader = new FileReader(classLoader.getResource("data-file-alias-implicit-collection.xml").getFile()); - Customer customer = (Customer) xstream.fromXML(reader); - Assert.assertNotNull(customer); - Assert.assertNotNull(customer.getContactDetailsList()); - // System.out.println(customer); - - } catch (IOException e) { - e.printStackTrace(); - } + public void convertXmlToObjectFromFile() throws FileNotFoundException { + ClassLoader classLoader = getClass().getClassLoader(); + FileReader reader = new FileReader(classLoader + .getResource("data-file-alias-implicit-collection.xml") + .getFile()); + Customer customer = (Customer) xstream.fromXML(reader); + Assert.assertNotNull(customer); + Assert.assertNotNull(customer.getContactDetailsList()); } } diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java index 8a4de3b70a..b7c6a8b496 100644 --- a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java +++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java @@ -7,8 +7,8 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.io.FileNotFoundException; import java.io.FileReader; -import java.io.IOException; public class XmlToObjectAliasTest { @@ -22,16 +22,13 @@ public class XmlToObjectAliasTest { } @Test - public void convertXmlToObjectFromFile() { - try { - ClassLoader classLoader = getClass().getClassLoader(); - FileReader reader = new FileReader(classLoader.getResource("data-file-alias.xml").getFile()); - Customer customer = (Customer) xstream.fromXML(reader); - Assert.assertNotNull(customer); - - } catch (IOException e) { - e.printStackTrace(); - } + public void convertXmlToObjectFromFile() throws FileNotFoundException { + ClassLoader classLoader = getClass().getClassLoader(); + FileReader reader = new FileReader(classLoader + .getResource("data-file-alias.xml") + .getFile()); + Customer customer = (Customer) xstream.fromXML(reader); + Assert.assertNotNull(customer); } } diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java index 4a7ff2f74a..c2bb859e70 100644 --- a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java +++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java @@ -7,8 +7,8 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.io.FileNotFoundException; import java.io.FileReader; -import java.io.IOException; public class XmlToObjectAnnotationTest { @@ -22,17 +22,12 @@ public class XmlToObjectAnnotationTest { } @Test - public void convertXmlToObjectFromFile() { - try { + public void convertXmlToObjectFromFile() throws FileNotFoundException { ClassLoader classLoader = getClass().getClassLoader(); FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field.xml").getFile()); Customer customer = (Customer) xstream.fromXML(reader); Assert.assertNotNull(customer); Assert.assertNotNull(customer.getFirstName()); - - } catch (IOException e) { - e.printStackTrace(); - } } } diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java index 3b1b8326ab..71e1cee809 100644 --- a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java +++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java @@ -7,8 +7,8 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.io.FileNotFoundException; import java.io.FileReader; -import java.io.IOException; public class XmlToObjectFieldAliasTest { @@ -23,17 +23,14 @@ public class XmlToObjectFieldAliasTest { } @Test - public void convertXmlToObjectFromFile() { - try { - ClassLoader classLoader = getClass().getClassLoader(); - FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field.xml").getFile()); - Customer customer = (Customer) xstream.fromXML(reader); - Assert.assertNotNull(customer); - Assert.assertNotNull(customer.getFirstName()); - - } catch (IOException e) { - e.printStackTrace(); - } + public void convertXmlToObjectFromFile() throws FileNotFoundException { + ClassLoader classLoader = getClass().getClassLoader(); + FileReader reader = new FileReader(classLoader + .getResource("data-file-alias-field.xml") + .getFile()); + Customer customer = (Customer) xstream.fromXML(reader); + Assert.assertNotNull(customer); + Assert.assertNotNull(customer.getFirstName()); } } diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java index 3b8a83cf47..7726fef0fc 100644 --- a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java +++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java @@ -7,8 +7,8 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.io.FileNotFoundException; import java.io.FileReader; -import java.io.IOException; public class XmlToObjectIgnoreFieldsTest { @@ -23,16 +23,14 @@ public class XmlToObjectIgnoreFieldsTest { } @Test - public void convertXmlToObjectFromFile() { - try { - ClassLoader classLoader = getClass().getClassLoader(); - FileReader reader = new FileReader(classLoader.getResource("data-file-ignore-field.xml").getFile()); - Customer customer = (Customer) xstream.fromXML(reader); - Assert.assertNotNull(customer); - // System.out.println(customer); - } catch (IOException e) { - e.printStackTrace(); - } + public void convertXmlToObjectFromFile() throws FileNotFoundException { + ClassLoader classLoader = getClass().getClassLoader(); + FileReader reader = new FileReader(classLoader + .getResource("data-file-ignore-field.xml") + .getFile()); + Customer customer = (Customer) xstream.fromXML(reader); + Assert.assertNotNull(customer); + // System.out.println(customer); } } diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java index a36af81ec1..b7d8f27e5f 100644 --- a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java +++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java @@ -9,7 +9,6 @@ import org.junit.Before; import org.junit.Test; import java.io.FileReader; -import java.io.IOException; public class XmlToObjectTest { @@ -22,16 +21,13 @@ public class XmlToObjectTest { } @Test - public void convertXmlToObjectFromFile() { - try { - ClassLoader classLoader = getClass().getClassLoader(); - FileReader reader = new FileReader(classLoader.getResource("data-file.xml").getFile()); - Customer customer = (Customer) xstream.fromXML(reader); - Assert.assertNotNull(customer); - - } catch (IOException e) { - e.printStackTrace(); - } + public void convertXmlToObjectFromFile() throws Exception { + ClassLoader classLoader = getClass().getClassLoader(); + FileReader reader = new FileReader(classLoader + .getResource("data-file.xml") + .getFile()); + Customer customer = (Customer) xstream.fromXML(reader); + Assert.assertNotNull(customer); } @Test