diff --git a/libraries-2/pom.xml b/libraries-2/pom.xml
index 02e1da017a..efcb03f528 100644
--- a/libraries-2/pom.xml
+++ b/libraries-2/pom.xml
@@ -1,70 +1,71 @@
-
- 4.0.0
- libraries2
- libraries2
-
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
-
-
-
-
- jboss-public-repository-group
- JBoss Public Repository Group
- http://repository.jboss.org/nexus/content/groups/public/
-
- true
- never
-
-
- true
- daily
-
-
-
-
-
-
- com.pivovarit
- parallel-collectors
- 1.1.0
-
-
- org.assertj
- assertj-core
- ${assertj.version}
-
-
- io.github.classgraph
- classgraph
- ${classgraph.version}
-
-
- org.jbpm
- jbpm-test
- ${jbpm.version}
-
-
- info.picocli
- picocli
- ${picocli.version}
-
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ libraries2
+ libraries2
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+ jboss-public-repository-group
+ JBoss Public Repository Group
+ http://repository.jboss.org/nexus/content/groups/public/
+
+ true
+ never
+
+
+ true
+ daily
+
+
+
+
+
+ org.mapdb
+ mapdb
+ ${mapdb.version}
+
+
+ com.pivovarit
+ parallel-collectors
+ 1.1.0
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+
+
+ io.github.classgraph
+ classgraph
+ ${classgraph.version}
+
+
+ org.jbpm
+ jbpm-test
+ ${jbpm.version}
+
+
+ info.picocli
+ picocli
+ ${picocli.version}
+
org.ejml
ejml-all
${ejml.version}
-
- org.nd4j
- nd4j-native
- ${nd4j.version}
-
+
+ org.nd4j
+ nd4j-native
+ ${nd4j.version}
+
org.la4j
la4j
@@ -75,87 +76,79 @@
colt
${colt.version}
-
- org.springframework.boot
- spring-boot-starter
- ${spring-boot-starter.version}
-
-
- net.openhft
- chronicle-map
- ${chronicle.map.version}
-
-
- com.sun.java
- tools
-
-
-
-
-
-
- com.squareup.okhttp3
- okhttp
- 3.14.2
-
-
-
- com.fasterxml.jackson.core
- jackson-databind
- 2.9.9
-
-
-
- com.google.code.gson
- gson
- 2.8.5
-
-
-
- com.squareup.okhttp3
- mockwebserver
- 3.14.2
- test
-
-
+
+ org.springframework.boot
+ spring-boot-starter
+ ${spring-boot-starter.version}
+
+
+ net.openhft
+ chronicle-map
+ ${chronicle.map.version}
+
+
+ com.sun.java
+ tools
+
+
+
+
+
+ com.squareup.okhttp3
+ okhttp
+ 3.14.2
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.9.9
+
+
+ com.google.code.gson
+ gson
+ 2.8.5
+
+
+ com.squareup.okhttp3
+ mockwebserver
+ 3.14.2
+ test
+
edu.uci.ics
crawler4j
${crawler4j.version}
-
-
-
- com.github.jknack
- handlebars
- 4.1.2
-
-
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh.version}
-
-
-
-
-
- 3.6.2
- 4.8.28
- 6.0.0.Final
- 3.9.6
- 3.17.2
+
+
+ com.github.jknack
+ handlebars
+ 4.1.2
+
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+
+
+
+ 3.0.7
+ 3.6.2
+ 4.8.28
+ 6.0.0.Final
+ 3.9.6
+ 3.17.2
4.4.0
- 2.1.4.RELEASE
- 0.38
- 1.0.0-beta4
- 1.2.0
- 0.6.0
- 1.19
-
+ 2.1.4.RELEASE
+ 0.38
+ 1.0.0-beta4
+ 1.2.0
+ 0.6.0
+ 1.19
+
diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/CollectionsUnitTest.java b/libraries-2/src/test/java/com/baeldung/mapdb/CollectionsUnitTest.java
new file mode 100644
index 0000000000..6f5141b054
--- /dev/null
+++ b/libraries-2/src/test/java/com/baeldung/mapdb/CollectionsUnitTest.java
@@ -0,0 +1,33 @@
+package com.baeldung.mapdb;
+
+import org.junit.Test;
+import org.mapdb.DB;
+import org.mapdb.DBMaker;
+import org.mapdb.Serializer;
+
+import java.util.NavigableSet;
+
+import static junit.framework.Assert.assertEquals;
+
+public class CollectionsUnitTest {
+
+ @Test
+ public void givenSetCreatedInDB_whenMultipleElementsAdded_checkOnlyOneExists() {
+
+ DB db = DBMaker.memoryDB().make();
+
+ NavigableSet set = db.
+ treeSet("mySet")
+ .serializer(Serializer.STRING)
+ .createOrOpen();
+
+ String myString = "Baeldung!";
+
+ set.add(myString);
+ set.add(myString);
+
+ assertEquals(1, set.size());
+
+ db.close();
+ }
+}
diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/HTreeMapUnitTest.java b/libraries-2/src/test/java/com/baeldung/mapdb/HTreeMapUnitTest.java
new file mode 100644
index 0000000000..3b7cac04fb
--- /dev/null
+++ b/libraries-2/src/test/java/com/baeldung/mapdb/HTreeMapUnitTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.mapdb;
+
+import org.jetbrains.annotations.NotNull;
+import org.junit.Test;
+import org.mapdb.*;
+
+import java.io.IOException;
+
+import static junit.framework.Assert.assertEquals;
+
+public class HTreeMapUnitTest {
+
+ @Test
+ public void givenValidDB_whenHTreeMapAddedToAndRetrieved_CheckedRetrievalCorrect() {
+
+ DB db = DBMaker.memoryDB().make();
+
+ HTreeMap hTreeMap = db
+ .hashMap("myTreMap")
+ .keySerializer(Serializer.STRING)
+ .valueSerializer(Serializer.STRING)
+ .create();
+
+ hTreeMap.put("key1", "value1");
+ hTreeMap.put("key2", "value2");
+
+ assertEquals(2, hTreeMap.size());
+
+ //add another value with the same key
+
+ hTreeMap.put("key1", "value3");
+
+ assertEquals(2, hTreeMap.size());
+ assertEquals("value3", hTreeMap.get("key1"));
+
+ }
+
+}
diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/HelloBaeldungUnitTest.java b/libraries-2/src/test/java/com/baeldung/mapdb/HelloBaeldungUnitTest.java
new file mode 100644
index 0000000000..952efd0639
--- /dev/null
+++ b/libraries-2/src/test/java/com/baeldung/mapdb/HelloBaeldungUnitTest.java
@@ -0,0 +1,49 @@
+package com.baeldung.mapdb;
+
+import org.junit.Test;
+import org.mapdb.DB;
+import org.mapdb.DBMaker;
+import org.mapdb.HTreeMap;
+
+import java.util.concurrent.ConcurrentMap;
+
+import static junit.framework.Assert.assertEquals;
+
+public class HelloBaeldungUnitTest {
+
+ @Test
+ public void givenInMemoryDBInstantiateCorrectly_whenDataSavedAndRetrieved_checkRetrievalCorrect() {
+
+ DB db = DBMaker.memoryDB().make();
+
+ String welcomeMessageKey = "Welcome Message";
+ String welcomeMessageString = "Hello Baeldung!";
+
+ HTreeMap myMap = db.hashMap("myMap").createOrOpen();
+ myMap.put(welcomeMessageKey, welcomeMessageString);
+
+ String welcomeMessageFromDB = (String) myMap.get(welcomeMessageKey);
+
+ db.close();
+
+ assertEquals(welcomeMessageString, welcomeMessageFromDB);
+ }
+
+ @Test
+ public void givenInFileDBInstantiateCorrectly_whenDataSavedAndRetrieved_checkRetrievalCorrect() {
+
+ DB db = DBMaker.fileDB("file.db").make();
+
+ String welcomeMessageKey = "Welcome Message";
+ String welcomeMessageString = "Hello Baeldung!";
+
+ HTreeMap myMap = db.hashMap("myMap").createOrOpen();
+ myMap.put(welcomeMessageKey, welcomeMessageString);
+
+ String welcomeMessageFromDB = (String) myMap.get(welcomeMessageKey);
+
+ db.close();
+
+ assertEquals(welcomeMessageString, welcomeMessageFromDB);
+ }
+}
diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/InMemoryModesUnitTest.java b/libraries-2/src/test/java/com/baeldung/mapdb/InMemoryModesUnitTest.java
new file mode 100644
index 0000000000..9c53f9c792
--- /dev/null
+++ b/libraries-2/src/test/java/com/baeldung/mapdb/InMemoryModesUnitTest.java
@@ -0,0 +1,62 @@
+package com.baeldung.mapdb;
+
+import org.junit.Test;
+import org.mapdb.DB;
+import org.mapdb.DBMaker;
+import org.mapdb.HTreeMap;
+import org.mapdb.Serializer;
+
+import static junit.framework.Assert.assertEquals;
+
+public class InMemoryModesUnitTest {
+
+ @Test
+ public void givenDBCreatedOnHeap_whenUsed_checkUsageCorrect() {
+
+ DB heapDB = DBMaker.heapDB().make();
+
+ HTreeMap map = heapDB
+ .hashMap("myMap")
+ .keySerializer(Serializer.INTEGER)
+ .valueSerializer(Serializer.STRING)
+ .createOrOpen();
+
+ map.put(1, "ONE");
+
+ assertEquals("ONE", map.get(1));
+
+ }
+
+ @Test
+ public void givenDBCreatedBaseOnByteArray_whenUsed_checkUsageCorrect() {
+
+ DB heapDB = DBMaker.memoryDB().make();
+
+ HTreeMap map = heapDB
+ .hashMap("myMap")
+ .keySerializer(Serializer.INTEGER)
+ .valueSerializer(Serializer.STRING)
+ .createOrOpen();
+
+ map.put(1, "ONE");
+
+ assertEquals("ONE", map.get(1));
+ }
+
+ @Test
+ public void givenDBCreatedBaseOnDirectByteBuffer_whenUsed_checkUsageCorrect() {
+
+ DB heapDB = DBMaker.memoryDirectDB().make();
+
+ HTreeMap map = heapDB
+ .hashMap("myMap")
+ .keySerializer(Serializer.INTEGER)
+ .valueSerializer(Serializer.STRING)
+ .createOrOpen();
+
+ map.put(1, "ONE");
+
+ assertEquals("ONE", map.get(1));
+ }
+
+}
diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/SortedTableMapUnitTest.java b/libraries-2/src/test/java/com/baeldung/mapdb/SortedTableMapUnitTest.java
new file mode 100644
index 0000000000..83ba917393
--- /dev/null
+++ b/libraries-2/src/test/java/com/baeldung/mapdb/SortedTableMapUnitTest.java
@@ -0,0 +1,47 @@
+package com.baeldung.mapdb;
+
+import org.junit.Test;
+import org.mapdb.Serializer;
+import org.mapdb.SortedTableMap;
+import org.mapdb.volume.MappedFileVol;
+import org.mapdb.volume.Volume;
+
+import static junit.framework.Assert.assertEquals;
+
+public class SortedTableMapUnitTest {
+
+ private static final String VOLUME_LOCATION = "sortedTableMapVol.db";
+
+ @Test
+ public void givenValidSortedTableMapSetup_whenQueried_checkValuesCorrect() {
+
+ //create memory mapped volume, readonly false
+ Volume vol = MappedFileVol.FACTORY.makeVolume(VOLUME_LOCATION, false);
+
+ //create sink to feed the map with data
+ SortedTableMap.Sink sink =
+ SortedTableMap.create(
+ vol,
+ Serializer.INTEGER,
+ Serializer.STRING
+ ).createFromSink();
+
+ //add content
+ for(int i = 0; i < 100; i++){
+ sink.put(i, "Value " + Integer.toString(i));
+ }
+
+ sink.create();
+
+ //now open in read-only mode
+ Volume openVol = MappedFileVol.FACTORY.makeVolume(VOLUME_LOCATION, true);
+
+ SortedTableMap sortedTableMap = SortedTableMap.open(
+ openVol,
+ Serializer.INTEGER,
+ Serializer.STRING
+ );
+
+ assertEquals(100, sortedTableMap.size());
+ }
+}
diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/TransactionsUnitTest.java b/libraries-2/src/test/java/com/baeldung/mapdb/TransactionsUnitTest.java
new file mode 100644
index 0000000000..4de9db10e8
--- /dev/null
+++ b/libraries-2/src/test/java/com/baeldung/mapdb/TransactionsUnitTest.java
@@ -0,0 +1,41 @@
+package com.baeldung.mapdb;
+
+import org.junit.Test;
+import org.mapdb.DB;
+import org.mapdb.DBMaker;
+import org.mapdb.Serializer;
+
+import java.util.NavigableSet;
+
+import static junit.framework.Assert.assertEquals;
+
+public class TransactionsUnitTest {
+
+ @Test
+ public void givenValidDBSetup_whenTransactionCommittedAndRolledBack_checkPreviousStateAchieved() {
+
+ DB db = DBMaker.memoryDB().transactionEnable().make();
+
+ NavigableSet set = db
+ .treeSet("mySet")
+ .serializer(Serializer.STRING)
+ .createOrOpen();
+
+ set.add("One");
+ set.add("Two");
+
+ db.commit();
+
+ assertEquals(2, set.size());
+
+ set.add("Three");
+
+ assertEquals(3, set.size());
+
+ db.rollback();
+
+ assertEquals(2, set.size());
+
+ db.close();
+ }
+}
diff --git a/libraries/pom.xml b/libraries/pom.xml
index 7823732224..886dd3c4a2 100644
--- a/libraries/pom.xml
+++ b/libraries/pom.xml
@@ -19,6 +19,9 @@
${typesafe-akka.version}
+
+
+
com.typesafe.akka
akka-testkit_2.12
@@ -837,6 +840,7 @@
1.4.196
1.0
+
4.5.3
2.9.7
2.92