diff --git a/.gitignore b/.gitignore index c54117203f..fe56746dfd 100644 --- a/.gitignore +++ b/.gitignore @@ -85,5 +85,6 @@ transaction.log *-shell.log apache-cxf/cxf-aegis/baeldung.xml +testing-modules/report-*.json libraries-2/*.db \ No newline at end of file diff --git a/algorithms-searching/README.md b/algorithms-searching/README.md index aed3c7d21f..260a4ea714 100644 --- a/algorithms-searching/README.md +++ b/algorithms-searching/README.md @@ -11,3 +11,4 @@ This module contains articles about searching algorithms. - [Monte Carlo Tree Search for Tic-Tac-Toe Game](https://www.baeldung.com/java-monte-carlo-tree-search) - [Range Search Algorithm in Java](https://www.baeldung.com/java-range-search) - [Fast Pattern Matching of Strings Using Suffix Tree](https://www.baeldung.com/java-pattern-matching-suffix-tree) +- [Topological Sort of Directed Acyclic Graph](https://www.baeldung.com/cs/dag-topological-sort) diff --git a/apache-cxf/README.md b/apache-cxf/README.md index bedd19a91a..88edaf4e13 100644 --- a/apache-cxf/README.md +++ b/apache-cxf/README.md @@ -7,4 +7,3 @@ This module contains articles about Apache CXF - [Apache CXF Support for RESTful Web Services](https://www.baeldung.com/apache-cxf-rest-api) - [A Guide to Apache CXF with Spring](https://www.baeldung.com/apache-cxf-with-spring) - [Introduction to Apache CXF](https://www.baeldung.com/introduction-to-apache-cxf) -- [Server-Sent Events (SSE) In JAX-RS](https://www.baeldung.com/java-ee-jax-rs-sse) diff --git a/apache-cxf/sse-jaxrs/README.md b/apache-cxf/sse-jaxrs/README.md new file mode 100644 index 0000000000..4d39560b46 --- /dev/null +++ b/apache-cxf/sse-jaxrs/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Server-Sent Events (SSE) In JAX-RS](https://www.baeldung.com/java-ee-jax-rs-sse) diff --git a/apache-poi/src/main/java/com/baeldung/poi/excel/setformula/ExcelFormula.java b/apache-poi/src/main/java/com/baeldung/poi/excel/setformula/ExcelFormula.java new file mode 100644 index 0000000000..f5179b19c9 --- /dev/null +++ b/apache-poi/src/main/java/com/baeldung/poi/excel/setformula/ExcelFormula.java @@ -0,0 +1,26 @@ +package com.baeldung.poi.excel.setformula; + +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +public class ExcelFormula { + public double setFormula(String fileLocation, XSSFWorkbook wb, String formula) throws IOException { + XSSFSheet sheet = wb.getSheetAt(0); + int lastCellNum = sheet.getRow(0).getLastCellNum(); + XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum); + formulaCell.setCellFormula(formula); + XSSFFormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); + formulaEvaluator.evaluateFormulaCell(formulaCell); + FileOutputStream fileOut = new FileOutputStream(new File(fileLocation)); + wb.write(fileOut); + wb.close(); + fileOut.close(); + return formulaCell.getNumericCellValue(); + } +} diff --git a/apache-poi/src/main/resources/com/baeldung/poi/excel/setformula/SetFormulaTest.xlsx b/apache-poi/src/main/resources/com/baeldung/poi/excel/setformula/SetFormulaTest.xlsx new file mode 100644 index 0000000000..a0fe73f0eb Binary files /dev/null and b/apache-poi/src/main/resources/com/baeldung/poi/excel/setformula/SetFormulaTest.xlsx differ diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java new file mode 100644 index 0000000000..fa5baa37fa --- /dev/null +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java @@ -0,0 +1,51 @@ +package com.baeldung.poi.excel.setformula; + +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.junit.Assert; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Paths; + +class ExcelFormulaUnitTest { + private static String FILE_NAME = "com/baeldung/poi/excel/setformula/SetFormulaTest.xlsx"; + private String fileLocation; + private ExcelFormula excelFormula; + + @BeforeEach + public void setup() throws URISyntaxException { + fileLocation = Paths.get(ClassLoader.getSystemResource(FILE_NAME).toURI()).toString(); + excelFormula = new ExcelFormula(); + } + + @Test + void givenExcelData_whenSetFormula_thenSuccess() throws IOException { + FileInputStream inputStream = new FileInputStream(new File(fileLocation)); + XSSFWorkbook wb = new XSSFWorkbook(inputStream); + XSSFSheet sheet = wb.getSheetAt(0); + double resultColumnA = 0; + double resultColumnB = 0; + for (int row = 0; row <= sheet.getLastRowNum(); row++) { + resultColumnA += sheet.getRow(row).getCell(0).getNumericCellValue(); + resultColumnB += sheet.getRow(row).getCell(1).getNumericCellValue(); + } + String colNameA = CellReference.convertNumToColString(0); + String colNameB = CellReference.convertNumToColString(1); + String startCellA = colNameA + 1; + String stopCellA = colNameA + (sheet.getLastRowNum() + 1); + String sumFormulaForColumnA = String.format("SUM(%s:%s)", startCellA, stopCellA); + String startCellB = colNameB + 1; + String stopCellB = colNameB + (sheet.getLastRowNum() + 1); + String sumFormulaForColumnB = String.format("SUM(%s:%s)", startCellB, stopCellB); + + double resultValue = excelFormula.setFormula(fileLocation, wb, sumFormulaForColumnA + "-" + sumFormulaForColumnB); + + Assert.assertEquals(resultColumnA - resultColumnB, resultValue, 0d); + } +} diff --git a/core-java-modules/core-java-9-new-features/README.md b/core-java-modules/core-java-9-new-features/README.md index d10d0aad2d..5af069c6f0 100644 --- a/core-java-modules/core-java-9-new-features/README.md +++ b/core-java-modules/core-java-9-new-features/README.md @@ -14,3 +14,4 @@ This module contains articles about core Java features that have been introduced - [Java 9 Reactive Streams](https://www.baeldung.com/java-9-reactive-streams) - [Multi-Release JAR Files with Maven](https://www.baeldung.com/maven-multi-release-jars) - [The Difference between RxJava API and the Java 9 Flow API](https://www.baeldung.com/rxjava-vs-java-flow-api) +- [How to Get a Name of a Method Being Executed?](https://www.baeldung.com/java-name-of-executing-method) diff --git a/core-java-modules/core-java-arrays-operations-advanced/src/main/java/com/baeldung/arraycompare/Plane.java b/core-java-modules/core-java-arrays-operations-advanced/src/main/java/com/baeldung/arraycompare/Plane.java new file mode 100644 index 0000000000..1731578b76 --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced/src/main/java/com/baeldung/arraycompare/Plane.java @@ -0,0 +1,39 @@ +package com.baeldung.arraycompare; + +import java.util.Objects; + +public class Plane { + + private final String name; + + private final String model; + + public Plane(String name, String model) { + + this.name = name; + this.model = model; + } + + public String getName() { + return name; + } + + public String getModel() { + return model; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Plane plane = (Plane) o; + return Objects.equals(name, plane.name) && Objects.equals(model, plane.model); + } + + @Override + public int hashCode() { + return Objects.hash(name, model); + } +} diff --git a/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/DeepEqualsCompareUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/DeepEqualsCompareUnitTest.java new file mode 100644 index 0000000000..c8ebafb26b --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/DeepEqualsCompareUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.arraycompare; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DeepEqualsCompareUnitTest { + + @Test + public void givenSameContents_whenDeepEquals_thenTrue() { + final Plane[][] planes1 = new Plane[][] { new Plane[] { new Plane("Plane 1", "A320") }, + new Plane[] { new Plane("Plane 2", "B738") } }; + final Plane[][] planes2 = new Plane[][] { new Plane[] { new Plane("Plane 1", "A320") }, + new Plane[] { new Plane("Plane 2", "B738") } }; + + assertThat(Arrays.deepEquals(planes1, planes2)).isTrue(); + } + + @Test + public void givenSameContentsWithDifferentOrder_whenDeepEquals_thenFalse() { + final Plane[][] planes1 = new Plane[][] { new Plane[] { new Plane("Plane 1", "A320") }, + new Plane[] { new Plane("Plane 2", "B738") } }; + final Plane[][] planes2 = new Plane[][] { new Plane[] { new Plane("Plane 2", "B738") }, + new Plane[] { new Plane("Plane 1", "A320") } }; + + assertThat(Arrays.deepEquals(planes1, planes2)).isFalse(); + } +} diff --git a/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/EqualsCompareUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/EqualsCompareUnitTest.java new file mode 100644 index 0000000000..a022bf7082 --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/EqualsCompareUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.arraycompare; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +public class EqualsCompareUnitTest { + + @Test + public void givenSameContents_whenEquals_thenTrue() { + final String[] planes1 = new String[] { "A320", "B738", "A321", "A319", "B77W", "B737", "A333", "A332" }; + final String[] planes2 = new String[] { "A320", "B738", "A321", "A319", "B77W", "B737", "A333", "A332" }; + + assertThat(Arrays.equals(planes1, planes2)).isTrue(); + } + + @Test + public void givenSameContentsDifferentOrder_whenEquals_thenFalse() { + final String[] planes1 = new String[] { "A320", "B738", "A321", "A319", "B77W", "B737", "A333", "A332" }; + final String[] planes2 = new String[] { "B738", "A320", "A321", "A319", "B77W", "B737", "A333", "A332" }; + + assertThat(Arrays.equals(planes1, planes2)).isFalse(); + } +} diff --git a/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/LengthsCompareUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/LengthsCompareUnitTest.java new file mode 100644 index 0000000000..23187b827c --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/LengthsCompareUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.arraycompare; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class LengthsCompareUnitTest { + + @Test + public void givenSameContent_whenSizeCompare_thenTrue() { + final String[] planes1 = new String[] { "A320", "B738", "A321", "A319", "B77W", "B737", "A333", "A332" }; + final Integer[] quantities = new Integer[] { 10, 12, 34, 45, 12, 43, 5, 2 }; + + assertThat(planes1).hasSize(8); + assertThat(quantities).hasSize(8); + } +} + diff --git a/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/OrderCompareUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/OrderCompareUnitTest.java new file mode 100644 index 0000000000..4dd7964020 --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/OrderCompareUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.arraycompare; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.Comparator; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertTrue; + +public class OrderCompareUnitTest { + @Test + public void givenSameContentDifferentOrder_whenSortedAndDeepEquals_thenTrue() { + final Plane[][] planes1 = new Plane[][] { + new Plane[] { new Plane("Plane 1", "A320"), new Plane("Plane 2", "B738") } }; + final Plane[][] planes2 = new Plane[][] { + new Plane[] { new Plane("Plane 2", "B738"), new Plane("Plane 1", "A320") } }; + + Comparator planeComparator = (o1, o2) -> { + if (o1.getName() + .equals(o2.getName())) { + return o2.getModel() + .compareTo(o1.getModel()); + } + return o2.getName() + .compareTo(o1.getName()); + }; + Arrays.sort(planes1[0], planeComparator); + Arrays.sort(planes2[0], planeComparator); + + assertThat(Arrays.deepEquals(planes1, planes2)).isTrue(); + } +} diff --git a/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/ReferenceCompareUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/ReferenceCompareUnitTest.java new file mode 100644 index 0000000000..d8072a98e3 --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraycompare/ReferenceCompareUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.arraycompare; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ReferenceCompareUnitTest { + + @Test + public void givenSameReferences_whenSame_thenTrue() { + final String[] planes1 = new String[] { "A320", "B738", "A321", "A319", "B77W", "B737", "A333", "A332" }; + final String[] planes2 = planes1; + + assertThat(planes1).isSameAs(planes2); + + planes2[0] = "747"; + + assertThat(planes1).isSameAs(planes2); + assertThat(planes2[0]).isEqualTo("747"); + assertThat(planes1[0]).isEqualTo("747"); + } + + @Test + public void givenSameContentDifferentReferences_whenSame_thenFalse() { + final String[] planes1 = new String[] { "A320", "B738", "A321", "A319", "B77W", "B737", "A333", "A332" }; + final String[] planes2 = new String[] { "A320", "B738", "A321", "A319", "B77W", "B737", "A333", "A332" }; + + assertThat(planes1).isNotSameAs(planes2); + } +} diff --git a/core-java-modules/core-java-collections-3/pom.xml b/core-java-modules/core-java-collections-3/pom.xml index b206cd61d2..a9a05f5092 100644 --- a/core-java-modules/core-java-collections-3/pom.xml +++ b/core-java-modules/core-java-collections-3/pom.xml @@ -16,6 +16,11 @@ + + org.openjdk.jol + jol-core + ${jol-core.version} + org.openjdk.jmh jmh-core @@ -37,6 +42,7 @@ 1.19 3.11.1 + 0.10 diff --git a/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/bitset/BitSetUnitTest.java b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/bitset/BitSetUnitTest.java new file mode 100644 index 0000000000..d9340f45c1 --- /dev/null +++ b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/bitset/BitSetUnitTest.java @@ -0,0 +1,178 @@ +package com.baeldung.collections.bitset; + +import org.junit.Test; +import org.openjdk.jol.info.ClassLayout; +import org.openjdk.jol.info.GraphLayout; + +import java.util.BitSet; + +import static org.assertj.core.api.Assertions.assertThat; + +public class BitSetUnitTest { + + @Test + public void givenBoolArray_whenMemoryLayout_thenConsumeMoreThanOneBit() { + boolean[] bits = new boolean[1024 * 1024]; + + System.out.println(ClassLayout.parseInstance(bits).toPrintable()); + } + + @Test + public void givenBitSet_whenMemoryLayout_thenConsumeOneBitPerFlag() { + BitSet bitSet = new BitSet(1024 * 1024); + + System.out.println(GraphLayout.parseInstance(bitSet).toPrintable()); + } + + @Test + public void givenBitSet_whenSetting_thenShouldBeTrue() { + BitSet bitSet = new BitSet(); + + bitSet.set(10); + assertThat(bitSet.get(10)).isTrue(); + + bitSet.set(20, 30); + for (int i = 20; i <= 29; i++) { + assertThat(bitSet.get(i)).isTrue(); + } + assertThat(bitSet.get(30)).isFalse(); + + bitSet.set(10, false); + assertThat(bitSet.get(10)).isFalse(); + + bitSet.set(20, 30, false); + for (int i = 20; i <= 30; i++) { + assertThat(bitSet.get(i)).isFalse(); + } + } + + @Test + public void givenBitSet_whenClearing_thenShouldBeFalse() { + BitSet bitSet = new BitSet(); + bitSet.set(42); + assertThat(bitSet.get(42)).isTrue(); + + bitSet.clear(42); + assertThat(bitSet.get(42)).isFalse(); + + bitSet.set(10, 20); + for (int i = 10; i < 20; i++) { + assertThat(bitSet.get(i)).isTrue(); + } + + bitSet.clear(10, 20); + for (int i = 10; i < 20; i++) { + assertThat(bitSet.get(i)).isFalse(); + } + + bitSet.set(10, 20); + bitSet.clear(); + for (int i = 0; i < 100; i++) { + assertThat(bitSet.get(i)).isFalse(); + } + } + + @Test + public void givenBitSet_whenGettingElements_thenShouldReturnRequestedBits() { + BitSet bitSet = new BitSet(); + bitSet.set(42); + + assertThat(bitSet.get(42)).isTrue(); + assertThat(bitSet.get(43)).isFalse(); + + bitSet.set(10, 20); + BitSet newBitSet = bitSet.get(10, 20); + for (int i = 0; i < 10; i++) { + assertThat(newBitSet.get(i)).isTrue(); + } + } + + @Test + public void givenBitSet_whenFlip_thenTogglesTrueToFalseAndViceVersa() { + BitSet bitSet = new BitSet(); + bitSet.set(42); + bitSet.flip(42); + assertThat(bitSet.get(42)).isFalse(); + + bitSet.flip(12); + assertThat(bitSet.get(12)).isTrue(); + + bitSet.flip(30, 40); + for (int i = 30; i < 40; i++) { + assertThat(bitSet.get(i)).isTrue(); + } + } + + @Test + public void givenBitSet_whenGettingTheSize_thenReturnsTheSize() { + BitSet defaultBitSet = new BitSet(); + assertThat(defaultBitSet.size()).isEqualTo(64); + + BitSet bitSet = new BitSet(1024); + assertThat(bitSet.size()).isEqualTo(1024); + + assertThat(bitSet.cardinality()).isEqualTo(0); + bitSet.set(10, 30); + assertThat(bitSet.cardinality()).isEqualTo(30 - 10); + + assertThat(bitSet.length()).isEqualTo(30); + bitSet.set(100); + assertThat(bitSet.length()).isEqualTo(101); + + assertThat(bitSet.isEmpty()).isFalse(); + bitSet.clear(); + assertThat(bitSet.isEmpty()).isTrue(); + } + + @Test + public void givenBitSet_whenSetOperations_thenShouldReturnAnotherBitSet() { + BitSet first = new BitSet(); + first.set(5, 10); + + BitSet second = new BitSet(); + second.set(7, 15); + + assertThat(first.intersects(second)).isTrue(); + + first.and(second); + assertThat(first.get(7)).isTrue(); + assertThat(first.get(8)).isTrue(); + assertThat(first.get(9)).isTrue(); + assertThat(first.get(10)).isFalse(); + + first.clear(); + first.set(5, 10); + + first.xor(second); + for (int i = 5; i < 7; i++) { + assertThat(first.get(i)).isTrue(); + } + for (int i = 10; i < 15; i++) { + assertThat(first.get(i)).isTrue(); + } + } + + @Test + public void givenBitSet_whenStream_thenStreamsAllSetBits() { + BitSet bitSet = new BitSet(); + bitSet.set(15, 25); + + bitSet.stream().forEach(System.out::println); + assertThat(bitSet.stream().count()).isEqualTo(10); + } + + @Test + public void givenBitSet_whenNextOrPrev_thenReturnsTheNextOrPrevClearOrSetBit() { + BitSet bitSet = new BitSet(); + bitSet.set(15, 25); + + assertThat(bitSet.nextSetBit(13)).isEqualTo(15); + assertThat(bitSet.nextSetBit(25)).isEqualTo(-1); + + assertThat(bitSet.nextClearBit(23)).isEqualTo(25); + + assertThat(bitSet.previousClearBit(24)).isEqualTo(14); + assertThat(bitSet.previousSetBit(29)).isEqualTo(24); + assertThat(bitSet.previousSetBit(14)).isEqualTo(-1); + } +} diff --git a/core-java-modules/core-java-collections-list-3/pom.xml b/core-java-modules/core-java-collections-list-3/pom.xml index 373190a130..e1cf645c8a 100644 --- a/core-java-modules/core-java-collections-list-3/pom.xml +++ b/core-java-modules/core-java-collections-list-3/pom.xml @@ -21,6 +21,12 @@ commons-collections4 ${commons-collections4.version} + + com.google.guava + guava + ${guava.version} + compile + org.assertj assertj-core diff --git a/core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/difference/FindDifferencesBetweenListsUnitTest.java b/core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/difference/FindDifferencesBetweenListsUnitTest.java new file mode 100644 index 0000000000..ceeff5e442 --- /dev/null +++ b/core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/difference/FindDifferencesBetweenListsUnitTest.java @@ -0,0 +1,96 @@ +package com.baeldung.list.difference; + +import com.google.common.collect.Sets; +import org.apache.commons.collections4.CollectionUtils; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.Assertions.*; + +public class FindDifferencesBetweenListsUnitTest { + + private static final List listOne = Arrays.asList("Jack", "Tom", "Sam", "John", "James", "Jack"); + private static final List listTwo = Arrays.asList("Jack", "Daniel", "Sam", "Alan", "James", "George"); + + @Test + public void givenLists_whenUsingPlainJavaImpl_thenDifferencesAreFound() { + List differences = new ArrayList<>(listOne); + differences.removeAll(listTwo); + assertEquals(2, differences.size()); + assertThat(differences).containsExactly("Tom", "John"); + } + + @Test + public void givenReverseLists_whenUsingPlainJavaImpl_thenDifferencesAreFound() { + List differences = new ArrayList<>(listTwo); + differences.removeAll(listOne); + assertEquals(3, differences.size()); + assertThat(differences).containsExactly("Daniel", "Alan", "George"); + } + + @Test + public void givenLists_whenUsingJavaStreams_thenDifferencesAreFound() { + List differences = listOne.stream() + .filter(element -> !listTwo.contains(element)) + .collect(Collectors.toList()); + assertEquals(2, differences.size()); + assertThat(differences).containsExactly("Tom", "John"); + } + + @Test + public void givenReverseLists_whenUsingJavaStreams_thenDifferencesAreFound() { + List differences = listTwo.stream() + .filter(element -> !listOne.contains(element)) + .collect(Collectors.toList()); + assertEquals(3, differences.size()); + assertThat(differences).containsExactly("Daniel", "Alan", "George"); + } + + @Test + public void givenLists_whenUsingGoogleGuava_thenDifferencesAreFound() { + List differences = new ArrayList<>(Sets.difference(Sets.newHashSet(listOne), Sets.newHashSet(listTwo))); + assertEquals(2, differences.size()); + assertThat(differences).containsExactlyInAnyOrder("Tom", "John"); + } + + @Test + public void givenReverseLists_whenUsingGoogleGuava_thenDifferencesAreFound() { + List differences = new ArrayList<>(Sets.difference(Sets.newHashSet(listTwo), Sets.newHashSet(listOne))); + assertEquals(3, differences.size()); + assertThat(differences).containsExactlyInAnyOrder("Daniel", "Alan", "George"); + } + + @Test + public void givenLists_whenUsingApacheCommons_thenDifferencesAreFound() { + List differences = new ArrayList<>((CollectionUtils.removeAll(listOne, listTwo))); + assertEquals(2, differences.size()); + assertThat(differences).containsExactly("Tom", "John"); + } + + @Test + public void givenReverseLists_whenUsingApacheCommons_thenDifferencesAreFound() { + List differences = new ArrayList<>((CollectionUtils.removeAll(listTwo, listOne))); + assertEquals(3, differences.size()); + assertThat(differences).containsExactly("Daniel", "Alan", "George"); + } + + @Test + public void givenLists_whenUsingPlainJavaImpl_thenDifferencesWithDuplicatesAreFound() { + List differences = new ArrayList<>(listOne); + listTwo.forEach(differences::remove); + assertThat(differences).containsExactly("Tom", "John", "Jack"); + } + + @Test + public void givenLists_whenUsingApacheCommons_thenDifferencesWithDuplicatesAreFound() { + List differences = new ArrayList<>(CollectionUtils.subtract(listOne, listTwo)); + assertEquals(3, differences.size()); + assertThat(differences).containsExactly("Tom", "John", "Jack"); + } + +} diff --git a/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersUnitManualTest.java b/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersManualTest.java similarity index 93% rename from core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersUnitManualTest.java rename to core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersManualTest.java index 4fbbef4e61..8d12218c05 100644 --- a/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersUnitManualTest.java +++ b/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersManualTest.java @@ -15,7 +15,15 @@ import java.util.logging.Logger; import static org.junit.Assert.fail; -public class PrimeNumbersUnitManualTest { +/** + * This test expects the file target/test-classes/META-INF/BenchmarkList to be present. + * + * Before running the test ensure that the file is present. + * If not, please run mvn install on the module. + * + */ + +public class PrimeNumbersManualTest { private static Logger logger = Logger.getAnonymousLogger(); diff --git a/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/threadlocal/ThreadLocalAwareThreadPool.java b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/threadlocal/ThreadLocalAwareThreadPool.java new file mode 100644 index 0000000000..5a41cd9dbf --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/threadlocal/ThreadLocalAwareThreadPool.java @@ -0,0 +1,25 @@ +package com.baeldung.threadlocal; + +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +public class ThreadLocalAwareThreadPool extends ThreadPoolExecutor { + + public ThreadLocalAwareThreadPool(int corePoolSize, + int maximumPoolSize, + long keepAliveTime, + TimeUnit unit, + BlockingQueue workQueue, + ThreadFactory threadFactory, + RejectedExecutionHandler handler) { + super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler); + } + + @Override + protected void afterExecute(Runnable r, Throwable t) { + // Call remove on each ThreadLocal + } +} diff --git a/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java new file mode 100644 index 0000000000..082a5219c9 --- /dev/null +++ b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java @@ -0,0 +1,31 @@ +package com.baeldung.consoleout; + +import java.io.Console; + +public class ConsoleAndOut { + public static void main(String[] args) { + try { + printConsoleObject(); + readPasswordFromConsole(); + } catch (Exception ex) { + // Eating NullPointerExcpetion which will occur when this + // program will be run from mediums other than console + } + printSysOut(); + } + + static void printConsoleObject() { + Console console = System.console(); + console.writer().print(console); + } + + static void readPasswordFromConsole() { + Console console = System.console(); + char[] password = console.readPassword("Enter password: "); + console.printf(String.valueOf(password)); + } + + static void printSysOut() { + System.out.println(System.out); + } +} diff --git a/core-java-modules/core-java-console/src/test/java/com/baeldung/consoleout/ConsoleAndOutUnitTest.java b/core-java-modules/core-java-console/src/test/java/com/baeldung/consoleout/ConsoleAndOutUnitTest.java new file mode 100644 index 0000000000..619a65a1fc --- /dev/null +++ b/core-java-modules/core-java-console/src/test/java/com/baeldung/consoleout/ConsoleAndOutUnitTest.java @@ -0,0 +1,27 @@ +package com.baeldung.consoleout; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + +class ConsoleAndOutUnitTest { + + @Test + void whenRetreivingConsole_thenPrintConsoleObject() { + assertThrows(NullPointerException.class, () -> { + ConsoleAndOut.printConsoleObject(); + }); + } + + @Test + void whenReadingPassword_thenReadPassword() { + assertThrows(NullPointerException.class, () -> { + ConsoleAndOut.readPasswordFromConsole(); + }); + } + + @Test + void whenRetrievingSysOut_thenPrintSysOutObject() { + ConsoleAndOut.printSysOut(); + } +} diff --git a/core-java-modules/core-java-io-3/.gitignore b/core-java-modules/core-java-io-3/.gitignore new file mode 100644 index 0000000000..0c0cd871c5 --- /dev/null +++ b/core-java-modules/core-java-io-3/.gitignore @@ -0,0 +1,2 @@ +test-link* +0.* \ No newline at end of file diff --git a/core-java-modules/core-java-io-3/pom.xml b/core-java-modules/core-java-io-3/pom.xml index cb341ca2ae..cc4dca5fa5 100644 --- a/core-java-modules/core-java-io-3/pom.xml +++ b/core-java-modules/core-java-io-3/pom.xml @@ -46,41 +46,14 @@ ${assertj.version} test - - - com.github.tomakehurst - wiremock - ${wiremock.version} - test - - core-java-io-3 - - - src/main/resources - true - - - - - org.apache.maven.plugins - maven-javadoc-plugin - ${maven-javadoc-plugin.version} - - ${maven.compiler.source} - ${maven.compiler.target} - - - 3.6.1 - 3.0.0-M1 - 2.26.3 \ No newline at end of file diff --git a/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/ApacheCommons.java b/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/ApacheCommons.java new file mode 100644 index 0000000000..b8aa283b48 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/ApacheCommons.java @@ -0,0 +1,15 @@ +package com.baeldung.copydirectory; + +import java.io.File; +import java.io.IOException; + +import org.apache.commons.io.FileUtils; + +public class ApacheCommons { + + public static void copyDirectory(String sourceDirectoryLocation, String destinationDirectoryLocation) throws IOException { + File sourceDirectory = new File(sourceDirectoryLocation); + File destinationDirectory = new File(destinationDirectoryLocation); + FileUtils.copyDirectory(sourceDirectory, destinationDirectory); + } +} diff --git a/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/CoreOld.java b/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/CoreOld.java new file mode 100644 index 0000000000..2070977534 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/CoreOld.java @@ -0,0 +1,38 @@ +package com.baeldung.copydirectory; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +public class CoreOld { + + public static void copyDirectoryJavaUnder7(File source, File destination) throws IOException { + if (source.isDirectory()) { + copyDirectory(source, destination); + } else { + copyFile(source, destination); + } + } + + private static void copyDirectory(File sourceDirectory, File destinationDirectory) throws IOException { + if (!destinationDirectory.exists()) { + destinationDirectory.mkdir(); + } + for (String f : sourceDirectory.list()) { + copyDirectoryJavaUnder7(new File(sourceDirectory, f), new File(destinationDirectory, f)); + } + } + + private static void copyFile(File sourceFile, File destinationFile) throws IOException { + try (InputStream in = new FileInputStream(sourceFile); OutputStream out = new FileOutputStream(destinationFile)) { + byte[] buf = new byte[1024]; + int length; + while ((length = in.read(buf)) > 0) { + out.write(buf, 0, length); + } + } + } +} diff --git a/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/JavaNio.java b/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/JavaNio.java new file mode 100644 index 0000000000..b574042ee5 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/main/java/com/baeldung/copydirectory/JavaNio.java @@ -0,0 +1,22 @@ +package com.baeldung.copydirectory; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class JavaNio { + + public static void copyDirectory(String sourceDirectoryLocation, String destinationDirectoryLocation) throws IOException { + Files.walk(Paths.get(sourceDirectoryLocation)) + .forEach(source -> { + Path destination = Paths.get(destinationDirectoryLocation, source.toString() + .substring(sourceDirectoryLocation.length())); + try { + Files.copy(source, destination); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } +} diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/ApacheCommonsUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/ApacheCommonsUnitTest.java new file mode 100644 index 0000000000..eee49a37d7 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/ApacheCommonsUnitTest.java @@ -0,0 +1,59 @@ +package com.baeldung.copydirectory; + +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Comparator; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class ApacheCommonsUnitTest { + + private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory3"; + private final String subDirectoryName = "/childDirectory"; + private final String fileName = "/file.txt"; + private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory3"; + + @BeforeEach + public void createDirectoryWithSubdirectoryAndFile() throws IOException { + Files.createDirectories(Paths.get(sourceDirectoryLocation)); + Files.createDirectories(Paths.get(sourceDirectoryLocation + subDirectoryName)); + Files.createFile(Paths.get(sourceDirectoryLocation + subDirectoryName + fileName)); + } + + @Test + public void whenSourceDirectoryExists_thenDirectoryIsFullyCopied() throws IOException { + ApacheCommons.copyDirectory(sourceDirectoryLocation, destinationDirectoryLocation); + + assertTrue(new File(destinationDirectoryLocation).exists()); + assertTrue(new File(destinationDirectoryLocation + subDirectoryName).exists()); + assertTrue(new File(destinationDirectoryLocation + subDirectoryName + fileName).exists()); + } + + @Test + public void whenSourceDirectoryDoesNotExist_thenExceptionIsThrown() { + assertThrows(Exception.class, () -> ApacheCommons.copyDirectory("nonExistingDirectory", destinationDirectoryLocation)); + } + + @AfterEach + public void cleanUp() throws IOException { + Files.walk(Paths.get(sourceDirectoryLocation)) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + if (new File(destinationDirectoryLocation).exists()) { + Files.walk(Paths.get(destinationDirectoryLocation)) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + } + +} diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/CoreOldUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/CoreOldUnitTest.java new file mode 100644 index 0000000000..1aaca066a0 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/CoreOldUnitTest.java @@ -0,0 +1,63 @@ +package com.baeldung.copydirectory; + +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Comparator; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class CoreOldUnitTest { + + private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory1"; + private final String subDirectoryName = "/childDirectory"; + private final String fileName = "/file.txt"; + private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory1"; + + @BeforeEach + public void createDirectoryWithSubdirectoryAndFile() throws IOException { + Files.createDirectories(Paths.get(sourceDirectoryLocation)); + Files.createDirectories(Paths.get(sourceDirectoryLocation + subDirectoryName)); + Files.createFile(Paths.get(sourceDirectoryLocation + subDirectoryName + fileName)); + } + + @Test + public void whenSourceDirectoryExists_thenDirectoryIsFullyCopied() throws IOException { + File sourceDirectory = new File(sourceDirectoryLocation); + File destinationDirectory = new File(destinationDirectoryLocation); + CoreOld.copyDirectoryJavaUnder7(sourceDirectory, destinationDirectory); + + assertTrue(new File(destinationDirectoryLocation).exists()); + assertTrue(new File(destinationDirectoryLocation + subDirectoryName).exists()); + assertTrue(new File(destinationDirectoryLocation + subDirectoryName + fileName).exists()); + } + + @Test + public void whenSourceDirectoryDoesNotExist_thenExceptionIsThrown() throws IOException { + File sourceDirectory = new File("nonExistingDirectory"); + File destinationDirectory = new File(destinationDirectoryLocation); + assertThrows(IOException.class, () -> CoreOld.copyDirectoryJavaUnder7(sourceDirectory, destinationDirectory)); + } + + @AfterEach + public void cleanUp() throws IOException { + Files.walk(Paths.get(sourceDirectoryLocation)) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + if (new File(destinationDirectoryLocation).exists()) { + Files.walk(Paths.get(destinationDirectoryLocation)) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + } + +} diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/JavaNioUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/JavaNioUnitTest.java new file mode 100644 index 0000000000..3293e90c0c --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/JavaNioUnitTest.java @@ -0,0 +1,59 @@ +package com.baeldung.copydirectory; + +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Comparator; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class JavaNioUnitTest { + + private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory2"; + private final String subDirectoryName = "/childDirectory"; + private final String fileName = "/file.txt"; + private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory2"; + + @BeforeEach + public void createDirectoryWithSubdirectoryAndFile() throws IOException { + Files.createDirectories(Paths.get(sourceDirectoryLocation)); + Files.createDirectories(Paths.get(sourceDirectoryLocation + subDirectoryName)); + Files.createFile(Paths.get(sourceDirectoryLocation + subDirectoryName + fileName)); + } + + @Test + public void whenSourceDirectoryExists_thenDirectoryIsFullyCopied() throws IOException { + JavaNio.copyDirectory(sourceDirectoryLocation, destinationDirectoryLocation); + + assertTrue(new File(destinationDirectoryLocation).exists()); + assertTrue(new File(destinationDirectoryLocation + subDirectoryName).exists()); + assertTrue(new File(destinationDirectoryLocation + subDirectoryName + fileName).exists()); + } + + @Test + public void whenSourceDirectoryDoesNotExist_thenExceptionIsThrown() { + assertThrows(IOException.class, () -> JavaNio.copyDirectory("nonExistingDirectory", destinationDirectoryLocation)); + } + + @AfterEach + public void cleanUp() throws IOException { + Files.walk(Paths.get(sourceDirectoryLocation)) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + if (new File(destinationDirectoryLocation).exists()) { + Files.walk(Paths.get(destinationDirectoryLocation)) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + } + +} diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/existence/ExistenceUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/existence/ExistenceUnitTest.java new file mode 100644 index 0000000000..c52e46e8c1 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/existence/ExistenceUnitTest.java @@ -0,0 +1,91 @@ +package com.baeldung.existence; + +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.LinkOption; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.concurrent.ThreadLocalRandom; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class ExistenceUnitTest { + + @Test + public void givenFile_whenDoesNotExist_thenFilesReturnsFalse() { + Path path = Paths.get("does-not-exist.txt"); + + assertFalse(Files.exists(path)); + assertTrue(Files.notExists(path)); + } + + @Test + public void givenFile_whenExists_thenFilesShouldReturnTrue() throws IOException { + Path tempFile = Files.createTempFile("baeldung", "exist-nio"); + assertTrue(Files.exists(tempFile)); + assertFalse(Files.notExists(tempFile)); + + Path tempDirectory = Files.createTempDirectory("baeldung-exists"); + assertTrue(Files.exists(tempDirectory)); + assertFalse(Files.notExists(tempDirectory)); + + assertTrue(Files.isDirectory(tempDirectory)); + assertFalse(Files.isDirectory(tempFile)); + assertTrue(Files.isRegularFile(tempFile)); + + assertTrue(Files.isReadable(tempFile)); + + Files.deleteIfExists(tempFile); + Files.deleteIfExists(tempDirectory); + } + + @Test + public void givenSymbolicLink_whenTargetDoesNotExists_thenFollowOrNotBasedOnTheOptions() throws IOException { + Path target = Files.createTempFile("baeldung", "target"); + Path symbol = Paths.get("test-link-" + ThreadLocalRandom.current().nextInt()); + + Path symbolicLink = Files.createSymbolicLink(symbol, target); + assertTrue(Files.exists(symbolicLink)); + assertTrue(Files.isSymbolicLink(symbolicLink)); + assertFalse(Files.isSymbolicLink(target)); + + Files.deleteIfExists(target); + assertFalse(Files.exists(symbolicLink)); + assertTrue(Files.exists(symbolicLink, LinkOption.NOFOLLOW_LINKS)); + + Files.deleteIfExists(symbolicLink); + } + + @Test + public void givenFile_whenDoesNotExist_thenFileReturnsFalse() { + assertFalse(new File("invalid").exists()); + assertFalse(new File("invalid").isFile()); + } + + @Test + public void givenFile_whenExist_thenShouldReturnTrue() throws IOException { + Path tempFilePath = Files.createTempFile("baeldung", "exist-io"); + Path tempDirectoryPath = Files.createTempDirectory("baeldung-exists-io"); + + File tempFile = new File(tempFilePath.toString()); + File tempDirectory = new File(tempDirectoryPath.toString()); + + assertTrue(tempFile.exists()); + assertTrue(tempDirectory.exists()); + + assertTrue(tempFile.isFile()); + assertFalse(tempDirectory.isFile()); + + assertTrue(tempDirectory.isDirectory()); + assertFalse(tempFile.isDirectory()); + + assertTrue(tempFile.canRead()); + + Files.deleteIfExists(tempFilePath); + Files.deleteIfExists(tempDirectoryPath); + } +} diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/openoptions/OpenOptionsUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/openoptions/OpenOptionsUnitTest.java new file mode 100644 index 0000000000..323c965edf --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/openoptions/OpenOptionsUnitTest.java @@ -0,0 +1,96 @@ +package com.baeldung.openoptions; + +import org.hamcrest.CoreMatchers; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; + +import static org.junit.Assert.*; + +public class OpenOptionsUnitTest { + + private static final String HOME = System.getProperty("user.home"); + private static final String DUMMY_FILE_NAME = "sample.txt"; + private static final String EXISTING_FILE_NAME = "existingFile.txt"; + + private static final String DUMMY_TEXT = "This is a sample text."; + private static final String ANOTHER_DUMMY_TEXT = "This is a another text."; + + @BeforeClass + public static void beforeAll() throws IOException { + Path path = Paths.get(HOME, DUMMY_FILE_NAME); + + try (OutputStream out = Files.newOutputStream(path)) { + out.write(DUMMY_TEXT.getBytes()); + } + + Files.createFile(Paths.get(HOME, EXISTING_FILE_NAME)); + } + + @AfterClass + public static void afterAll() throws IOException { + Files.delete(Paths.get(HOME, "newfile.txt")); + Files.delete(Paths.get(HOME, "sparse.txt")); + Files.delete(Paths.get(HOME, DUMMY_FILE_NAME)); + } + + @Test + public void givenExistingPath_whenCreateNewFile_thenCorrect() throws IOException { + Path path = Paths.get(HOME, "newfile.txt"); + assertFalse(Files.exists(path)); + + Files.write(path, DUMMY_TEXT.getBytes(), StandardOpenOption.CREATE); + assertTrue(Files.exists(path)); + } + + @Test + public void givenExistingPath_whenReadExistingFile_thenCorrect() throws IOException { + Path path = Paths.get(HOME, DUMMY_FILE_NAME); + + try (InputStream in = Files.newInputStream(path); BufferedReader reader = new BufferedReader(new InputStreamReader(in))) { + String line; + while ((line = reader.readLine()) != null) { + assertThat(line, CoreMatchers.containsString(DUMMY_TEXT)); + } + } + } + + @Test + public void givenExistingPath_whenWriteToExistingFile_thenCorrect() throws IOException { + Path path = Paths.get(HOME, DUMMY_FILE_NAME); + + try (OutputStream out = Files.newOutputStream(path, StandardOpenOption.APPEND, StandardOpenOption.WRITE)) { + out.write(ANOTHER_DUMMY_TEXT.getBytes()); + } + } + + @Test + public void givenExistingPath_whenCreateSparseFile_thenCorrect() throws IOException { + Path path = Paths.get(HOME, "sparse.txt"); + Files.write(path, DUMMY_TEXT.getBytes(), StandardOpenOption.CREATE_NEW, StandardOpenOption.SPARSE); + } + + @Test + public void givenExistingPath_whenDeleteOnClose_thenCorrect() throws IOException { + Path path = Paths.get(HOME, EXISTING_FILE_NAME); + assertTrue(Files.exists(path)); // file was already created and exists + + try (OutputStream out = Files.newOutputStream(path, StandardOpenOption.APPEND, StandardOpenOption.WRITE, StandardOpenOption.DELETE_ON_CLOSE)) { + out.write(ANOTHER_DUMMY_TEXT.getBytes()); + } + + assertFalse(Files.exists(path)); // file is deleted + } + + @Test + public void givenExistingPath_whenWriteAndSync_thenCorrect() throws IOException { + Path path = Paths.get(HOME, DUMMY_FILE_NAME); + Files.write(path, ANOTHER_DUMMY_TEXT.getBytes(), StandardOpenOption.APPEND, StandardOpenOption.WRITE, StandardOpenOption.SYNC); + } +} diff --git a/core-java-modules/core-java-lang-oop-types/pom.xml b/core-java-modules/core-java-lang-oop-types/pom.xml index 5555df4818..ee167bbae2 100644 --- a/core-java-modules/core-java-lang-oop-types/pom.xml +++ b/core-java-modules/core-java-lang-oop-types/pom.xml @@ -12,4 +12,12 @@ core-java-lang-oop-types core-java-lang-oop-types jar + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/primitivetype/PrimitiveTypeUtil.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/primitivetype/PrimitiveTypeUtil.java new file mode 100644 index 0000000000..ff70da1839 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/primitivetype/PrimitiveTypeUtil.java @@ -0,0 +1,26 @@ +package com.baeldung.primitivetype; + +import java.util.HashMap; +import java.util.Map; + +public class PrimitiveTypeUtil { + + private static final Map, Class> WRAPPER_TYPE_MAP; + static { + WRAPPER_TYPE_MAP = new HashMap, Class>(16); + WRAPPER_TYPE_MAP.put(Integer.class, int.class); + WRAPPER_TYPE_MAP.put(Byte.class, byte.class); + WRAPPER_TYPE_MAP.put(Character.class, char.class); + WRAPPER_TYPE_MAP.put(Boolean.class, boolean.class); + WRAPPER_TYPE_MAP.put(Double.class, double.class); + WRAPPER_TYPE_MAP.put(Float.class, float.class); + WRAPPER_TYPE_MAP.put(Long.class, long.class); + WRAPPER_TYPE_MAP.put(Short.class, short.class); + WRAPPER_TYPE_MAP.put(Void.class, void.class); + } + + public static boolean isPrimitiveType(Object source) { + return WRAPPER_TYPE_MAP.containsKey(source.getClass()); + } + +} diff --git a/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/primitivetype/PrimitiveTypeUnitTest.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/primitivetype/PrimitiveTypeUnitTest.java new file mode 100644 index 0000000000..b9152d3674 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/primitivetype/PrimitiveTypeUnitTest.java @@ -0,0 +1,34 @@ +package com.baeldung.primitivetype; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.apache.commons.lang3.ClassUtils; +import org.apache.commons.lang3.StringUtils; +import org.junit.Test; + +import com.google.common.primitives.Primitives; + +public class PrimitiveTypeUnitTest { + + @Test + public void givenAClass_whenCheckWithPrimitiveTypeUtil_thenShouldValidate() { + assertTrue(PrimitiveTypeUtil.isPrimitiveType(false)); + assertTrue(PrimitiveTypeUtil.isPrimitiveType(1L)); + assertFalse(PrimitiveTypeUtil.isPrimitiveType(StringUtils.EMPTY)); + } + + @Test + public void givenAClass_whenCheckWithCommonsLang_thenShouldValidate() { + assertTrue(ClassUtils.isPrimitiveOrWrapper(Boolean.FALSE.getClass())); + assertTrue(ClassUtils.isPrimitiveOrWrapper(boolean.class)); + assertFalse(ClassUtils.isPrimitiveOrWrapper(StringUtils.EMPTY.getClass())); + } + + @Test + public void givenAClass_whenCheckWithGuava_thenShouldValidate() { + assertTrue(Primitives.isWrapperType(Boolean.FALSE.getClass())); + assertFalse(Primitives.isWrapperType(StringUtils.EMPTY.getClass())); + assertFalse(Primitives.isWrapperType(Boolean.TYPE.getClass())); + } +} diff --git a/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java b/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java index 8cf2e941fe..9e9edcd0ba 100644 --- a/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java +++ b/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java @@ -49,11 +49,11 @@ public class EchoServer { if (new String(buffer.array()).trim().equals(POISON_PILL)) { client.close(); System.out.println("Not accepting client messages anymore"); + } else { + buffer.flip(); + client.write(buffer); + buffer.clear(); } - - buffer.flip(); - client.write(buffer); - buffer.clear(); } private static void register(Selector selector, ServerSocketChannel serverSocket) throws IOException { diff --git a/core-java-modules/core-java-os/src/test/java/com/baeldung/screenshot/ScreenshotUnitTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/screenshot/ScreenshotUnitTest.java new file mode 100644 index 0000000000..6bd0e7dff7 --- /dev/null +++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/screenshot/ScreenshotUnitTest.java @@ -0,0 +1,51 @@ +import javax.imageio.ImageIO; +import java.awt.Component; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.Toolkit; +import java.awt.image.BufferedImage; +import java.io.File; +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + +public class ScreenshotUnitTest { + + @Test + public void givenMainScreen_whenTakeScreenshot_thenSaveToFile() throws Exception { + Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); + BufferedImage capture = new Robot().createScreenCapture(screenRect); + File imageFile = File.createTempFile("single-screen", "bmp"); + ImageIO.write(capture, "bmp", imageFile); + assertTrue(imageFile.exists()); + } + + @Test + public void givenMultipleScreens_whenTakeScreenshot_thenSaveToFile() throws Exception { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + GraphicsDevice[] screens = ge.getScreenDevices(); + Rectangle allScreenBounds = new Rectangle(); + for (GraphicsDevice screen : screens) { + Rectangle screenBounds = screen.getDefaultConfiguration().getBounds(); + allScreenBounds.width += screenBounds.width; + allScreenBounds.height = Math.max(allScreenBounds.height, screenBounds.height); + } + BufferedImage capture = new Robot().createScreenCapture(allScreenBounds); + File imageFile = File.createTempFile("all-screens", "bmp"); + ImageIO.write(capture, "bmp", imageFile); + assertTrue(imageFile.exists()); + } + + @Test + public void givenComponent_whenTakeScreenshot_thenSaveToFile(Component component) throws Exception { + Rectangle componentRect = component.getBounds(); + BufferedImage bufferedImage = new BufferedImage(componentRect.width, componentRect.height, BufferedImage.TYPE_INT_ARGB); + component.paint(bufferedImage.getGraphics()); + File imageFile = File.createTempFile("component-screenshot", "bmp"); + ImageIO.write(bufferedImage, "bmp", imageFile); + assertTrue(imageFile.exists()); + } + +} \ No newline at end of file diff --git a/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/set/fields/SetFieldsUsingReflectionUnitTest.java b/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/set/fields/SetFieldsUsingReflectionUnitTest.java new file mode 100644 index 0000000000..3fe6994041 --- /dev/null +++ b/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/set/fields/SetFieldsUsingReflectionUnitTest.java @@ -0,0 +1,183 @@ +package com.baeldung.reflection.set.fields; + +import java.lang.reflect.Field; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import com.baeldung.reflection.access.privatefields.Person; + +public class SetFieldsUsingReflectionUnitTest { + + @Test + public void whenSetIntegerFields_thenSuccess() throws Exception { + Person person = new Person(); + + Field ageField = person.getClass() + .getDeclaredField("age"); + ageField.setAccessible(true); + + byte age = 26; + ageField.setByte(person, age); + Assertions.assertEquals(age, person.getAge()); + + Field uidNumberField = person.getClass() + .getDeclaredField("uidNumber"); + uidNumberField.setAccessible(true); + + short uidNumber = 5555; + uidNumberField.setShort(person, uidNumber); + Assertions.assertEquals(uidNumber, person.getUidNumber()); + + Field pinCodeField = person.getClass() + .getDeclaredField("pinCode"); + pinCodeField.setAccessible(true); + + int pinCode = 411057; + pinCodeField.setInt(person, pinCode); + Assertions.assertEquals(pinCode, person.getPinCode()); + + Field contactNumberField = person.getClass() + .getDeclaredField("contactNumber"); + contactNumberField.setAccessible(true); + + long contactNumber = 123456789L; + contactNumberField.setLong(person, contactNumber); + Assertions.assertEquals(contactNumber, person.getContactNumber()); + + } + + @Test + public void whenDoUnboxing_thenSuccess() throws Exception { + Person person = new Person(); + + Field pinCodeField = person.getClass() + .getDeclaredField("pinCode"); + pinCodeField.setAccessible(true); + + Integer pinCode = 411057; + pinCodeField.setInt(person, pinCode); + Assertions.assertEquals(pinCode, person.getPinCode()); + } + + @Test + public void whenDoNarrowing_thenSuccess() throws Exception { + Person person = new Person(); + + Field pinCodeField = person.getClass() + .getDeclaredField("pinCode"); + pinCodeField.setAccessible(true); + + short pinCode = 4110; + pinCodeField.setInt(person, pinCode); + Assertions.assertEquals(pinCode, person.getPinCode()); + } + + @Test + public void whenSetFloatingTypeFields_thenSuccess() throws Exception { + Person person = new Person(); + + Field heightField = person.getClass() + .getDeclaredField("height"); + heightField.setAccessible(true); + + float height = 6.1242f; + heightField.setFloat(person, height); + Assertions.assertEquals(height, person.getHeight()); + + Field weightField = person.getClass() + .getDeclaredField("weight"); + weightField.setAccessible(true); + + double weight = 75.2564; + weightField.setDouble(person, weight); + Assertions.assertEquals(weight, person.getWeight()); + } + + @Test + public void whenSetCharacterFields_thenSuccess() throws Exception { + Person person = new Person(); + + Field genderField = person.getClass() + .getDeclaredField("gender"); + genderField.setAccessible(true); + + char gender = 'M'; + genderField.setChar(person, gender); + Assertions.assertEquals(gender, person.getGender()); + } + + @Test + public void whenSetBooleanFields_thenSuccess() throws Exception { + Person person = new Person(); + + Field activeField = person.getClass() + .getDeclaredField("active"); + activeField.setAccessible(true); + + activeField.setBoolean(person, true); + Assertions.assertTrue(person.isActive()); + } + + @Test + public void whenSetObjectFields_thenSuccess() throws Exception { + Person person = new Person(); + + Field nameField = person.getClass() + .getDeclaredField("name"); + nameField.setAccessible(true); + + String name = "Umang Budhwar"; + nameField.set(person, name); + Assertions.assertEquals(name, person.getName()); + } + + @Test + public void givenInt_whenSetStringField_thenIllegalArgumentException() throws Exception { + Person person = new Person(); + Field nameField = person.getClass() + .getDeclaredField("name"); + nameField.setAccessible(true); + + Assertions.assertThrows(IllegalArgumentException.class, () -> nameField.setInt(person, 26)); + } + + @Test + public void givenInt_whenSetLongField_thenIllegalArgumentException() throws Exception { + Person person = new Person(); + + Field pinCodeField = person.getClass() + .getDeclaredField("pinCode"); + pinCodeField.setAccessible(true); + + long pinCode = 411057L; + + Assertions.assertThrows(IllegalArgumentException.class, () -> pinCodeField.setLong(person, pinCode)); + } + + @Test + public void whenFieldNotSetAccessible_thenIllegalAccessException() throws Exception { + Person person = new Person(); + Field nameField = person.getClass() + .getDeclaredField("name"); + + Assertions.assertThrows(IllegalAccessException.class, () -> nameField.set(person, "Umang Budhwar")); + } + + @Test + public void whenAccessingWrongProperty_thenNoSuchFieldException() throws Exception { + Person person = new Person(); + + Assertions.assertThrows(NoSuchFieldException.class, () -> person.getClass() + .getDeclaredField("firstName")); + } + + @Test + public void whenAccessingNullProperty_thenNullPointerException() throws Exception { + Person person = new Person(); + + Assertions.assertThrows(NullPointerException.class, () -> person.getClass() + .getDeclaredField(null)); + } + +} diff --git a/core-java-modules/core-java-regex/src/test/java/com/baeldung/regex/countmatches/CountMatchesUnitTest.java b/core-java-modules/core-java-regex/src/test/java/com/baeldung/regex/countmatches/CountMatchesUnitTest.java index 6427d11dd6..3e601a7828 100644 --- a/core-java-modules/core-java-regex/src/test/java/com/baeldung/regex/countmatches/CountMatchesUnitTest.java +++ b/core-java-modules/core-java-regex/src/test/java/com/baeldung/regex/countmatches/CountMatchesUnitTest.java @@ -1,12 +1,11 @@ package com.baeldung.regex.countmatches; -import static org.junit.Assert.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.Test; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Unit Test intended to count number of matches of a RegEx using Java 8 and 9. @@ -65,7 +64,7 @@ public class CountMatchesUnitTest { count++; } - assertNotEquals(3, count); + assertEquals(2, count); } @Test diff --git a/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/exceptionhandling/ExceptionHandling.kt b/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/exceptionhandling/ExceptionHandling.kt new file mode 100644 index 0000000000..6689ab43e4 --- /dev/null +++ b/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/exceptionhandling/ExceptionHandling.kt @@ -0,0 +1,88 @@ +package com.baeldung.exceptionhandling + +import java.io.IOException + +class ExceptionHandling { + + fun tryCatchBlock(): Int? { + try { + val message = "Welcome to Kotlin Tutorials" + return message.toInt() + } catch (exception: NumberFormatException) { + println("NumberFormatException in the code") + return null + } + } + + fun tryCatchExpression(): Int? { + val number = try { + val message = "Welcome to Kotlin Tutorials" + message.toInt() + } catch (exception: NumberFormatException) { + println("NumberFormatException in the code") + null + } + return number + } + + fun multipleCatchBlock(): Int? { + return try { + val result = 25 / 0 + result + } catch (exception: NumberFormatException) { + println("NumberFormatException in the code") + null + } catch (exception: ArithmeticException) { + println("ArithmeticException in the code") + null + } catch (exception: Exception) { + println("Exception in the code") + null + } + } + + fun nestedTryCatchBlock(): Int? { + return try { + val firstNumber = 50 / 2 * 0 + try { + val secondNumber = 100 / firstNumber + secondNumber + } catch (exception: ArithmeticException) { + println("ArithmeticException in the code") + null + } + } catch (exception: NumberFormatException) { + println("NumberFormatException in the code") + null + } + } + + fun finallyBlock(): Int? { + return try { + val message = "Welcome to Kotlin Tutorials" + message.toInt() + } catch (exception: NumberFormatException) { + println("NumberFormatException in the code") + null + } finally { + println("In the Finally block") + } + } + + fun throwKeyword(): Int { + val message = "Welcome to Kotlin Tutorials" + if (message.length > 10) throw IllegalArgumentException("String is invalid") + else return message.length + } + + fun throwExpression(): Int? { + val message: String? = null + return message?.length ?: throw IllegalArgumentException("String is null") + } + + @Throws(IOException::class) + fun throwsAnnotation(): String?{ + val filePath = null + return filePath ?: throw IOException("File path is invalid") + } +} diff --git a/core-kotlin-modules/core-kotlin/src/test/kotlin/com/baeldung/exceptionhandling/ExceptionHandlingUnitTest.kt b/core-kotlin-modules/core-kotlin/src/test/kotlin/com/baeldung/exceptionhandling/ExceptionHandlingUnitTest.kt new file mode 100644 index 0000000000..af7aa4406f --- /dev/null +++ b/core-kotlin-modules/core-kotlin/src/test/kotlin/com/baeldung/exceptionhandling/ExceptionHandlingUnitTest.kt @@ -0,0 +1,51 @@ +package com.baeldung.exceptionhandling + +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows +import java.io.IOException +import kotlin.test.assertNull + +class ExceptionHandlingUnitTest { + + private val classUnderTest: ExceptionHandling = ExceptionHandling() + + @Test + fun givenInvalidConversion_whenTryCatchUsed_thenReturnsCatchBlockValue(){ + assertNull(classUnderTest.tryCatchBlock()) + } + + @Test + fun givenInvalidConversion_whenTryCatchExpressionUsed_thenReturnsCatchBlockValue(){ + assertNull(classUnderTest.tryCatchExpression()) + } + + @Test + fun givenDivisionByZero_whenMultipleCatchUsed_thenReturnsCatchBlockValue(){ + assertNull(classUnderTest.multipleCatchBlock()) + } + + @Test + fun givenDivisionByZero_whenNestedTryCatchUsed_thenReturnsNestedCatchBlockValue(){ + assertNull(classUnderTest.nestedTryCatchBlock()) + } + + @Test + fun givenInvalidConversion_whenTryCatchFinallyUsed_thenReturnsCatchAndFinallyBlock(){ + assertNull(classUnderTest.finallyBlock()) + } + + @Test + fun givenIllegalArgument_whenThrowKeywordUsed_thenThrowsException(){ + assertThrows { classUnderTest.throwKeyword() } + } + + @Test + fun givenIllegalArgument_whenElvisExpressionUsed_thenThrowsException(){ + assertThrows { classUnderTest.throwExpression() } + } + + @Test + fun whenAnnotationUsed_thenThrowsException(){ + assertThrows { classUnderTest.throwsAnnotation() } + } +} diff --git a/deeplearning4j/pom.xml b/deeplearning4j/pom.xml index c8fa18cbd4..af65aa7e03 100644 --- a/deeplearning4j/pom.xml +++ b/deeplearning4j/pom.xml @@ -37,6 +37,16 @@ deeplearning4j-nn ${dl4j.version} + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + org.datavec @@ -53,6 +63,7 @@ 0.9.1 4.3.5 + 1.7.5 diff --git a/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CifarDataSetService.java b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CifarDataSetService.java new file mode 100644 index 0000000000..70348a6d9e --- /dev/null +++ b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CifarDataSetService.java @@ -0,0 +1,47 @@ +package com.baeldung.deeplearning4j.cnn; + +import lombok.Getter; +import org.deeplearning4j.datasets.iterator.impl.CifarDataSetIterator; +import org.deeplearning4j.nn.conf.inputs.InputType; +import org.nd4j.linalg.dataset.api.iterator.DataSetIterator; + +import java.util.List; + +@Getter +class CifarDataSetService implements IDataSetService { + + private final InputType inputType = InputType.convolutional(32, 32, 3); + private final int trainImagesNum = 512; + private final int testImagesNum = 128; + private final int trainBatch = 16; + private final int testBatch = 8; + + private final CifarDataSetIterator trainIterator; + + private final CifarDataSetIterator testIterator; + + CifarDataSetService() { + trainIterator = new CifarDataSetIterator(trainBatch, trainImagesNum, true); + testIterator = new CifarDataSetIterator(testBatch, testImagesNum, false); + } + + @Override + public DataSetIterator trainIterator() { + return trainIterator; + } + + @Override + public DataSetIterator testIterator() { + return testIterator; + } + + @Override + public InputType inputType() { + return inputType; + } + + @Override + public List labels() { + return trainIterator.getLabels(); + } +} diff --git a/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnExample.java b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnExample.java new file mode 100644 index 0000000000..224062c388 --- /dev/null +++ b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnExample.java @@ -0,0 +1,18 @@ +package com.baeldung.deeplearning4j.cnn; + + +import lombok.extern.slf4j.Slf4j; +import org.deeplearning4j.eval.Evaluation; + +@Slf4j +class CnnExample { + + public static void main(String... args) { + CnnModel network = new CnnModel(new CifarDataSetService(), new CnnModelProperties()); + + network.train(); + Evaluation evaluation = network.evaluate(); + + log.info(evaluation.stats()); + } +} diff --git a/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnModel.java b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnModel.java new file mode 100644 index 0000000000..efa7f828ed --- /dev/null +++ b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnModel.java @@ -0,0 +1,119 @@ +package com.baeldung.deeplearning4j.cnn; + +import lombok.extern.slf4j.Slf4j; +import org.deeplearning4j.eval.Evaluation; +import org.deeplearning4j.nn.api.OptimizationAlgorithm; +import org.deeplearning4j.nn.conf.MultiLayerConfiguration; +import org.deeplearning4j.nn.conf.NeuralNetConfiguration; +import org.deeplearning4j.nn.conf.layers.ConvolutionLayer; +import org.deeplearning4j.nn.conf.layers.OutputLayer; +import org.deeplearning4j.nn.conf.layers.SubsamplingLayer; +import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; +import org.deeplearning4j.nn.weights.WeightInit; +import org.nd4j.linalg.activations.Activation; +import org.nd4j.linalg.lossfunctions.LossFunctions; + +import java.util.stream.IntStream; + +@Slf4j +class CnnModel { + + private final IDataSetService dataSetService; + + private final MultiLayerNetwork network; + + private final CnnModelProperties properties; + + CnnModel(IDataSetService dataSetService, CnnModelProperties properties) { + + this.dataSetService = dataSetService; + this.properties = properties; + + MultiLayerConfiguration configuration = new NeuralNetConfiguration.Builder() + .seed(1611) + .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) + .learningRate(properties.getLearningRate()) + .regularization(true) + .updater(properties.getOptimizer()) + .list() + .layer(0, conv5x5()) + .layer(1, pooling2x2Stride2()) + .layer(2, conv3x3Stride1Padding2()) + .layer(3, pooling2x2Stride1()) + .layer(4, conv3x3Stride1Padding1()) + .layer(5, pooling2x2Stride1()) + .layer(6, dense()) + .pretrain(false) + .backprop(true) + .setInputType(dataSetService.inputType()) + .build(); + + network = new MultiLayerNetwork(configuration); + } + + void train() { + network.init(); + int epochsNum = properties.getEpochsNum(); + IntStream.range(1, epochsNum + 1).forEach(epoch -> { + log.info("Epoch {} / {}", epoch, epochsNum); + network.fit(dataSetService.trainIterator()); + }); + } + + Evaluation evaluate() { + return network.evaluate(dataSetService.testIterator()); + } + + private ConvolutionLayer conv5x5() { + return new ConvolutionLayer.Builder(5, 5) + .nIn(3) + .nOut(16) + .stride(1, 1) + .padding(1, 1) + .weightInit(WeightInit.XAVIER_UNIFORM) + .activation(Activation.RELU) + .build(); + } + + private SubsamplingLayer pooling2x2Stride2() { + return new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) + .kernelSize(2, 2) + .stride(2, 2) + .build(); + } + + private ConvolutionLayer conv3x3Stride1Padding2() { + return new ConvolutionLayer.Builder(3, 3) + .nOut(32) + .stride(1, 1) + .padding(2, 2) + .weightInit(WeightInit.XAVIER_UNIFORM) + .activation(Activation.RELU) + .build(); + } + + private SubsamplingLayer pooling2x2Stride1() { + return new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) + .kernelSize(2, 2) + .stride(1, 1) + .build(); + } + + private ConvolutionLayer conv3x3Stride1Padding1() { + return new ConvolutionLayer.Builder(3, 3) + .nOut(64) + .stride(1, 1) + .padding(1, 1) + .weightInit(WeightInit.XAVIER_UNIFORM) + .activation(Activation.RELU) + .build(); + } + + private OutputLayer dense() { + return new OutputLayer.Builder(LossFunctions.LossFunction.MEAN_SQUARED_LOGARITHMIC_ERROR) + .activation(Activation.SOFTMAX) + .weightInit(WeightInit.XAVIER_UNIFORM) + .nOut(dataSetService.labels().size() - 1) + .build(); + } +} diff --git a/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnModelProperties.java b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnModelProperties.java new file mode 100644 index 0000000000..d010d789c8 --- /dev/null +++ b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/CnnModelProperties.java @@ -0,0 +1,13 @@ +package com.baeldung.deeplearning4j.cnn; + +import lombok.Value; +import org.deeplearning4j.nn.conf.Updater; + +@Value +class CnnModelProperties { + private final int epochsNum = 512; + + private final double learningRate = 0.001; + + private final Updater optimizer = Updater.ADAM; +} diff --git a/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/IDataSetService.java b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/IDataSetService.java new file mode 100644 index 0000000000..ea88bf550c --- /dev/null +++ b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/cnn/IDataSetService.java @@ -0,0 +1,16 @@ +package com.baeldung.deeplearning4j.cnn; + +import org.deeplearning4j.nn.conf.inputs.InputType; +import org.nd4j.linalg.dataset.api.iterator.DataSetIterator; + +import java.util.List; + +interface IDataSetService { + DataSetIterator trainIterator(); + + DataSetIterator testIterator(); + + InputType inputType(); + + List labels(); +} diff --git a/docker/docker-spring-boot/README.md b/docker/docker-spring-boot/README.md new file mode 100644 index 0000000000..78f13a3652 --- /dev/null +++ b/docker/docker-spring-boot/README.md @@ -0,0 +1,3 @@ +### Relevant Article: + +- [Creating Docker Images with Spring Boot](https://www.baeldung.com/spring-boot-docker-images) diff --git a/excelformula/README.md b/excelformula/README.md new file mode 100644 index 0000000000..24560525cd --- /dev/null +++ b/excelformula/README.md @@ -0,0 +1,5 @@ +## Apache POI + +This module contains articles about Apache POI + +### Relevant Articles: diff --git a/guava-2/README.md b/guava-2/README.md deleted file mode 100644 index 32afc10916..0000000000 --- a/guava-2/README.md +++ /dev/null @@ -1,7 +0,0 @@ -## Guava - -This module contains articles a Google Guava - -### Relevant Articles: - -- [Guava CharMatcher](https://www.baeldung.com/guava-string-charmatcher) diff --git a/guava-modules/guava-18/README.md b/guava-modules/guava-18/README.md index fd5de4170a..bdd289b86f 100644 --- a/guava-modules/guava-18/README.md +++ b/guava-modules/guava-18/README.md @@ -1,8 +1,5 @@ -========= - -## Guava and Hamcrest Cookbooks and Examples +## Guava 18 ### Relevant Articles: -- [Guava Functional Cookbook](http://www.baeldung.com/guava-functions-predicates) - [Guava 18: What’s New?](http://www.baeldung.com/whats-new-in-guava-18) diff --git a/guava-modules/guava-19/README.md b/guava-modules/guava-19/README.md index be9f2d72a4..6508410ba2 100644 --- a/guava-modules/guava-19/README.md +++ b/guava-modules/guava-19/README.md @@ -1,5 +1,3 @@ -========= - ## Guava 19 diff --git a/guava-modules/guava-21/README.md b/guava-modules/guava-21/README.md index 4e897325b6..ad70a180b0 100644 --- a/guava-modules/guava-21/README.md +++ b/guava-modules/guava-21/README.md @@ -1,4 +1,6 @@ +## Guava 21 + ### Relevant articles: + - [New Stream, Comparator and Collector in Guava 21](http://www.baeldung.com/guava-21-new) - [New in Guava 21 common.util.concurrent](http://www.baeldung.com/guava-21-util-concurrent) -- [Zipping Collections in Java](http://www.baeldung.com/java-collections-zip) diff --git a/guava-modules/guava-21/pom.xml b/guava-modules/guava-21/pom.xml index b126df99cb..b793f11a7f 100644 --- a/guava-modules/guava-21/pom.xml +++ b/guava-modules/guava-21/pom.xml @@ -13,17 +13,8 @@ ../ - - - org.jooq - jool - ${jool.version} - - - 21.0 - 0.9.12 \ No newline at end of file diff --git a/guava-modules/guava-collections-list/README.md b/guava-modules/guava-collections-list/README.md new file mode 100644 index 0000000000..d7f9ce2e32 --- /dev/null +++ b/guava-modules/guava-collections-list/README.md @@ -0,0 +1,8 @@ +## Guava Collections List examples + +This module contains articles about list collections in Guava + +### Relevant Articles: + +- [Partition a List in Java](https://www.baeldung.com/java-list-split) +- [Guava – Lists](https://www.baeldung.com/guava-lists) \ No newline at end of file diff --git a/guava-collections/pom.xml b/guava-modules/guava-collections-list/pom.xml similarity index 93% rename from guava-collections/pom.xml rename to guava-modules/guava-collections-list/pom.xml index 238ab60f84..cc52a5d48b 100644 --- a/guava-collections/pom.xml +++ b/guava-modules/guava-collections-list/pom.xml @@ -4,15 +4,15 @@ 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 - guava-collections + guava-collections-list 0.1.0-SNAPSHOT - guava-collections + guava-collections-list com.baeldung - parent-java + guava-modules 0.0.1-SNAPSHOT - ../parent-java + ../ diff --git a/guava-collections/src/main/resources/logback.xml b/guava-modules/guava-collections-list/src/main/resources/logback.xml similarity index 100% rename from guava-collections/src/main/resources/logback.xml rename to guava-modules/guava-collections-list/src/main/resources/logback.xml diff --git a/guava-collections/src/test/java/com/baeldung/guava/lists/GuavaListsUnitTest.java b/guava-modules/guava-collections-list/src/test/java/com/baeldung/guava/lists/GuavaListsUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/lists/GuavaListsUnitTest.java rename to guava-modules/guava-collections-list/src/test/java/com/baeldung/guava/lists/GuavaListsUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionApachePartitionUnitTest.java b/guava-modules/guava-collections-list/src/test/java/com/baeldung/guava/partition/CollectionApachePartitionUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/partition/CollectionApachePartitionUnitTest.java rename to guava-modules/guava-collections-list/src/test/java/com/baeldung/guava/partition/CollectionApachePartitionUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionGuavaPartitionUnitTest.java b/guava-modules/guava-collections-list/src/test/java/com/baeldung/guava/partition/CollectionGuavaPartitionUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/partition/CollectionGuavaPartitionUnitTest.java rename to guava-modules/guava-collections-list/src/test/java/com/baeldung/guava/partition/CollectionGuavaPartitionUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionJavaPartitionUnitTest.java b/guava-modules/guava-collections-list/src/test/java/com/baeldung/guava/partition/CollectionJavaPartitionUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/partition/CollectionJavaPartitionUnitTest.java rename to guava-modules/guava-collections-list/src/test/java/com/baeldung/guava/partition/CollectionJavaPartitionUnitTest.java diff --git a/guava-collections-map/README.md b/guava-modules/guava-collections-map/README.md similarity index 100% rename from guava-collections-map/README.md rename to guava-modules/guava-collections-map/README.md diff --git a/guava-collections-map/pom.xml b/guava-modules/guava-collections-map/pom.xml similarity index 94% rename from guava-collections-map/pom.xml rename to guava-modules/guava-collections-map/pom.xml index 4a95234d5c..82d634265b 100644 --- a/guava-collections-map/pom.xml +++ b/guava-modules/guava-collections-map/pom.xml @@ -9,9 +9,9 @@ com.baeldung - parent-java + guava-modules 0.0.1-SNAPSHOT - ../parent-java + ../ diff --git a/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/Profile.java b/guava-modules/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/Profile.java similarity index 100% rename from guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/Profile.java rename to guava-modules/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/Profile.java diff --git a/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/Session.java b/guava-modules/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/Session.java similarity index 100% rename from guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/Session.java rename to guava-modules/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/Session.java diff --git a/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/User.java b/guava-modules/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/User.java similarity index 100% rename from guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/User.java rename to guava-modules/guava-collections-map/src/main/java/com/baeldung/guava/mapmaker/User.java diff --git a/guava-collections-map/src/test/java/com/baeldung/guava/classtoinstancemap/ClassToInstanceMapUnitTest.java b/guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/classtoinstancemap/ClassToInstanceMapUnitTest.java similarity index 100% rename from guava-collections-map/src/test/java/com/baeldung/guava/classtoinstancemap/ClassToInstanceMapUnitTest.java rename to guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/classtoinstancemap/ClassToInstanceMapUnitTest.java diff --git a/guava-collections-map/src/test/java/com/baeldung/guava/initializemaps/GuavaMapInitializeUnitTest.java b/guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/initializemaps/GuavaMapInitializeUnitTest.java similarity index 100% rename from guava-collections-map/src/test/java/com/baeldung/guava/initializemaps/GuavaMapInitializeUnitTest.java rename to guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/initializemaps/GuavaMapInitializeUnitTest.java diff --git a/guava-collections-map/src/test/java/com/baeldung/guava/mapmaker/GuavaMapMakerUnitTest.java b/guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/mapmaker/GuavaMapMakerUnitTest.java similarity index 100% rename from guava-collections-map/src/test/java/com/baeldung/guava/mapmaker/GuavaMapMakerUnitTest.java rename to guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/mapmaker/GuavaMapMakerUnitTest.java diff --git a/guava-collections-map/src/test/java/com/baeldung/guava/maps/GuavaMapsUnitTest.java b/guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/maps/GuavaMapsUnitTest.java similarity index 100% rename from guava-collections-map/src/test/java/com/baeldung/guava/maps/GuavaMapsUnitTest.java rename to guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/maps/GuavaMapsUnitTest.java diff --git a/guava-collections-map/src/test/java/com/baeldung/guava/multimap/GuavaMultiMapUnitTest.java b/guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/multimap/GuavaMultiMapUnitTest.java similarity index 100% rename from guava-collections-map/src/test/java/com/baeldung/guava/multimap/GuavaMultiMapUnitTest.java rename to guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/multimap/GuavaMultiMapUnitTest.java diff --git a/guava-collections-map/src/test/java/com/baeldung/guava/rangemap/GuavaRangeMapUnitTest.java b/guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/rangemap/GuavaRangeMapUnitTest.java similarity index 100% rename from guava-collections-map/src/test/java/com/baeldung/guava/rangemap/GuavaRangeMapUnitTest.java rename to guava-modules/guava-collections-map/src/test/java/com/baeldung/guava/rangemap/GuavaRangeMapUnitTest.java diff --git a/guava-2/src/test/resources/.gitignore b/guava-modules/guava-collections-set/.gitignore similarity index 100% rename from guava-2/src/test/resources/.gitignore rename to guava-modules/guava-collections-set/.gitignore diff --git a/guava-collections-set/README.md b/guava-modules/guava-collections-set/README.md similarity index 100% rename from guava-collections-set/README.md rename to guava-modules/guava-collections-set/README.md diff --git a/guava-collections-set/pom.xml b/guava-modules/guava-collections-set/pom.xml similarity index 94% rename from guava-collections-set/pom.xml rename to guava-modules/guava-collections-set/pom.xml index af46400555..8f58148e41 100644 --- a/guava-collections-set/pom.xml +++ b/guava-modules/guava-collections-set/pom.xml @@ -8,9 +8,9 @@ com.baeldung - parent-java + guava-modules 0.0.1-SNAPSHOT - ../parent-java + ../ diff --git a/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMapFromSet.java b/guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMapFromSet.java similarity index 100% rename from guava-collections-set/src/test/java/com/baeldung/guava/GuavaMapFromSet.java rename to guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMapFromSet.java diff --git a/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMapFromSetUnitTest.java b/guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMapFromSetUnitTest.java similarity index 100% rename from guava-collections-set/src/test/java/com/baeldung/guava/GuavaMapFromSetUnitTest.java rename to guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMapFromSetUnitTest.java diff --git a/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMultiSetUnitTest.java b/guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMultiSetUnitTest.java similarity index 100% rename from guava-collections-set/src/test/java/com/baeldung/guava/GuavaMultiSetUnitTest.java rename to guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaMultiSetUnitTest.java diff --git a/guava-collections-set/src/test/java/com/baeldung/guava/GuavaRangeSetUnitTest.java b/guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaRangeSetUnitTest.java similarity index 100% rename from guava-collections-set/src/test/java/com/baeldung/guava/GuavaRangeSetUnitTest.java rename to guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaRangeSetUnitTest.java diff --git a/guava-collections-set/src/test/java/com/baeldung/guava/GuavaSetOperationsUnitTest.java b/guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaSetOperationsUnitTest.java similarity index 100% rename from guava-collections-set/src/test/java/com/baeldung/guava/GuavaSetOperationsUnitTest.java rename to guava-modules/guava-collections-set/src/test/java/com/baeldung/guava/GuavaSetOperationsUnitTest.java diff --git a/guava-collections/README.md b/guava-modules/guava-collections/README.md similarity index 86% rename from guava-collections/README.md rename to guava-modules/guava-collections/README.md index 51731d7db7..474ded6f33 100644 --- a/guava-collections/README.md +++ b/guava-modules/guava-collections/README.md @@ -8,9 +8,8 @@ This module contains articles about Google Guava collections - [Guava Ordering Cookbook](https://www.baeldung.com/guava-order) - [Guide to Guava’s Ordering](https://www.baeldung.com/guava-ordering) - [Hamcrest Collections Cookbook](https://www.baeldung.com/hamcrest-collections-arrays) -- [Partition a List in Java](https://www.baeldung.com/java-list-split) - [Filtering and Transforming Collections in Guava](https://www.baeldung.com/guava-filter-and-transform-a-collection) - [Guava – Join and Split Collections](https://www.baeldung.com/guava-joiner-and-splitter-tutorial) -- [Guava – Lists](https://www.baeldung.com/guava-lists) - [Guide to Guava MinMaxPriorityQueue and EvictingQueue](https://www.baeldung.com/guava-minmax-priority-queue-and-evicting-queue) - [Guide to Guava Table](https://www.baeldung.com/guava-table) +- [Zipping Collections in Java](http://www.baeldung.com/java-collections-zip) diff --git a/guava-modules/guava-collections/pom.xml b/guava-modules/guava-collections/pom.xml new file mode 100644 index 0000000000..53c55dc655 --- /dev/null +++ b/guava-modules/guava-collections/pom.xml @@ -0,0 +1,95 @@ + + + 4.0.0 + guava-collections + 0.1.0-SNAPSHOT + guava-collections + + + com.baeldung + guava-modules + 0.0.1-SNAPSHOT + ../ + + + + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.jooq + jool + ${jool.version} + + + + + org.junit.jupiter + junit-jupiter + ${junit-jupiter.version} + test + + + org.junit.vintage + junit-vintage-engine + ${junit-jupiter.version} + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + org.hamcrest + java-hamcrest + ${java-hamcrest.version} + test + + + + + guava-collections + + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + + + + + + + 4.1 + 0.9.12 + + + 3.6.1 + 2.0.0.0 + 5.6.2 + + + \ No newline at end of file diff --git a/guava/src/main/resources/logback.xml b/guava-modules/guava-collections/src/main/resources/logback.xml similarity index 100% rename from guava/src/main/resources/logback.xml rename to guava-modules/guava-collections/src/main/resources/logback.xml diff --git a/guava-collections/src/test/java/com/baeldung/guava/collections/GuavaCollectionsExamplesUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/collections/GuavaCollectionsExamplesUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/collections/GuavaCollectionsExamplesUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/collections/GuavaCollectionsExamplesUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/filtertransform/GuavaFilterTransformCollectionsUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/filtertransform/GuavaFilterTransformCollectionsUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/filtertransform/GuavaFilterTransformCollectionsUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/filtertransform/GuavaFilterTransformCollectionsUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/joinsplit/GuavaStringUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/joinsplit/GuavaStringUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/joinsplit/GuavaStringUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/joinsplit/GuavaStringUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingExamplesUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingExamplesUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingExamplesUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingExamplesUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/queues/EvictingQueueUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/queues/EvictingQueueUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/queues/EvictingQueueUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/queues/EvictingQueueUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/queues/MinMaxPriorityQueueUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/queues/MinMaxPriorityQueueUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/queues/MinMaxPriorityQueueUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/queues/MinMaxPriorityQueueUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/guava/table/GuavaTableUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/table/GuavaTableUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/guava/table/GuavaTableUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/table/GuavaTableUnitTest.java diff --git a/guava-modules/guava-21/src/test/java/com/baeldung/guava/zip/ZipCollectionUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/guava/zip/ZipCollectionUnitTest.java similarity index 100% rename from guava-modules/guava-21/src/test/java/com/baeldung/guava/zip/ZipCollectionUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/guava/zip/ZipCollectionUnitTest.java diff --git a/guava-collections/src/test/java/com/baeldung/hamcrest/HamcrestExamplesUnitTest.java b/guava-modules/guava-collections/src/test/java/com/baeldung/hamcrest/HamcrestExamplesUnitTest.java similarity index 100% rename from guava-collections/src/test/java/com/baeldung/hamcrest/HamcrestExamplesUnitTest.java rename to guava-modules/guava-collections/src/test/java/com/baeldung/hamcrest/HamcrestExamplesUnitTest.java diff --git a/guava-2/src/test/resources/test.out b/guava-modules/guava-collections/src/test/resources/test.out similarity index 100% rename from guava-2/src/test/resources/test.out rename to guava-modules/guava-collections/src/test/resources/test.out diff --git a/guava-2/src/test/resources/test1.in b/guava-modules/guava-collections/src/test/resources/test1.in similarity index 100% rename from guava-2/src/test/resources/test1.in rename to guava-modules/guava-collections/src/test/resources/test1.in diff --git a/guava-2/src/test/resources/test1_1.in b/guava-modules/guava-collections/src/test/resources/test1_1.in similarity index 100% rename from guava-2/src/test/resources/test1_1.in rename to guava-modules/guava-collections/src/test/resources/test1_1.in diff --git a/guava-2/src/test/resources/test2.in b/guava-modules/guava-collections/src/test/resources/test2.in similarity index 100% rename from guava-2/src/test/resources/test2.in rename to guava-modules/guava-collections/src/test/resources/test2.in diff --git a/guava-2/src/test/resources/test_copy.in b/guava-modules/guava-collections/src/test/resources/test_copy.in similarity index 100% rename from guava-2/src/test/resources/test_copy.in rename to guava-modules/guava-collections/src/test/resources/test_copy.in diff --git a/guava-2/src/test/resources/test_le.txt b/guava-modules/guava-collections/src/test/resources/test_le.txt similarity index 100% rename from guava-2/src/test/resources/test_le.txt rename to guava-modules/guava-collections/src/test/resources/test_le.txt diff --git a/guava-modules/guava-core/README.md b/guava-modules/guava-core/README.md new file mode 100644 index 0000000000..59391ca076 --- /dev/null +++ b/guava-modules/guava-core/README.md @@ -0,0 +1,10 @@ +## Guava Core + +This module contains articles about core or base functionality provided by Google Guava + +### Relevant Articles: +- [Introduction to Guava Throwables](https://www.baeldung.com/guava-throwables) +- [Guava CharMatcher](https://www.baeldung.com/guava-string-charmatcher) +- [Guide to Guava’s PreConditions](https://www.baeldung.com/guava-preconditions) +- [Introduction to Guava Memoizer](https://www.baeldung.com/guava-memoizer) +- [Guava Functional Cookbook](https://www.baeldung.com/guava-functions-predicates) diff --git a/guava-2/pom.xml b/guava-modules/guava-core/pom.xml similarity index 89% rename from guava-2/pom.xml rename to guava-modules/guava-core/pom.xml index b19f59a9b4..5224148cb8 100644 --- a/guava-2/pom.xml +++ b/guava-modules/guava-core/pom.xml @@ -4,15 +4,15 @@ 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 - guava-2 + guava-core 0.1.0-SNAPSHOT - guava-2 + guava-core com.baeldung - parent-java + guava-modules 0.0.1-SNAPSHOT - ../parent-java + ../ diff --git a/guava/src/main/java/com/baeldung/guava/memoizer/CostlySupplier.java b/guava-modules/guava-core/src/main/java/com/baeldung/guava/memoizer/CostlySupplier.java similarity index 100% rename from guava/src/main/java/com/baeldung/guava/memoizer/CostlySupplier.java rename to guava-modules/guava-core/src/main/java/com/baeldung/guava/memoizer/CostlySupplier.java diff --git a/guava/src/main/java/com/baeldung/guava/memoizer/Factorial.java b/guava-modules/guava-core/src/main/java/com/baeldung/guava/memoizer/Factorial.java similarity index 100% rename from guava/src/main/java/com/baeldung/guava/memoizer/Factorial.java rename to guava-modules/guava-core/src/main/java/com/baeldung/guava/memoizer/Factorial.java diff --git a/guava/src/main/java/com/baeldung/guava/memoizer/FibonacciSequence.java b/guava-modules/guava-core/src/main/java/com/baeldung/guava/memoizer/FibonacciSequence.java similarity index 100% rename from guava/src/main/java/com/baeldung/guava/memoizer/FibonacciSequence.java rename to guava-modules/guava-core/src/main/java/com/baeldung/guava/memoizer/FibonacciSequence.java diff --git a/guava-2/src/test/java/com/baeldung/guava/charmatcher/GuavaCharMatcherUnitTest.java b/guava-modules/guava-core/src/test/java/com/baeldung/guava/charmatcher/GuavaCharMatcherUnitTest.java similarity index 100% rename from guava-2/src/test/java/com/baeldung/guava/charmatcher/GuavaCharMatcherUnitTest.java rename to guava-modules/guava-core/src/test/java/com/baeldung/guava/charmatcher/GuavaCharMatcherUnitTest.java diff --git a/guava/src/test/java/com/baeldung/guava/GuavaFunctionalExamplesUnitTest.java b/guava-modules/guava-core/src/test/java/com/baeldung/guava/functional/GuavaFunctionalExamplesUnitTest.java similarity index 99% rename from guava/src/test/java/com/baeldung/guava/GuavaFunctionalExamplesUnitTest.java rename to guava-modules/guava-core/src/test/java/com/baeldung/guava/functional/GuavaFunctionalExamplesUnitTest.java index b54a7c951a..0177f4f13e 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaFunctionalExamplesUnitTest.java +++ b/guava-modules/guava-core/src/test/java/com/baeldung/guava/functional/GuavaFunctionalExamplesUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.functional; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.equalTo; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaMemoizerUnitTest.java b/guava-modules/guava-core/src/test/java/com/baeldung/guava/memoizer/GuavaMemoizerUnitTest.java similarity index 98% rename from guava/src/test/java/com/baeldung/guava/GuavaMemoizerUnitTest.java rename to guava-modules/guava-core/src/test/java/com/baeldung/guava/memoizer/GuavaMemoizerUnitTest.java index 9bafb7ad3f..9af9462e56 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaMemoizerUnitTest.java +++ b/guava-modules/guava-core/src/test/java/com/baeldung/guava/memoizer/GuavaMemoizerUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.memoizer; import com.google.common.base.Suppliers; import com.baeldung.guava.memoizer.CostlySupplier; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaPreConditionsUnitTest.java b/guava-modules/guava-core/src/test/java/com/baeldung/guava/preconditions/GuavaPreConditionsUnitTest.java similarity index 99% rename from guava/src/test/java/com/baeldung/guava/GuavaPreConditionsUnitTest.java rename to guava-modules/guava-core/src/test/java/com/baeldung/guava/preconditions/GuavaPreConditionsUnitTest.java index fe3be9abf0..1f7111b12f 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaPreConditionsUnitTest.java +++ b/guava-modules/guava-core/src/test/java/com/baeldung/guava/preconditions/GuavaPreConditionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.preconditions; import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.util.Arrays; diff --git a/guava-2/src/test/java/com/baeldung/guava/throwables/ThrowablesUnitTest.java b/guava-modules/guava-core/src/test/java/com/baeldung/guava/throwables/ThrowablesUnitTest.java similarity index 100% rename from guava-2/src/test/java/com/baeldung/guava/throwables/ThrowablesUnitTest.java rename to guava-modules/guava-core/src/test/java/com/baeldung/guava/throwables/ThrowablesUnitTest.java diff --git a/guava-collections-set/.gitignore b/guava-modules/guava-core/src/test/resources/.gitignore similarity index 100% rename from guava-collections-set/.gitignore rename to guava-modules/guava-core/src/test/resources/.gitignore diff --git a/guava-collections/src/test/resources/test.out b/guava-modules/guava-core/src/test/resources/test.out similarity index 100% rename from guava-collections/src/test/resources/test.out rename to guava-modules/guava-core/src/test/resources/test.out diff --git a/guava-collections/src/test/resources/test1.in b/guava-modules/guava-core/src/test/resources/test1.in similarity index 100% rename from guava-collections/src/test/resources/test1.in rename to guava-modules/guava-core/src/test/resources/test1.in diff --git a/guava-collections/src/test/resources/test1_1.in b/guava-modules/guava-core/src/test/resources/test1_1.in similarity index 100% rename from guava-collections/src/test/resources/test1_1.in rename to guava-modules/guava-core/src/test/resources/test1_1.in diff --git a/guava-collections/src/test/resources/test2.in b/guava-modules/guava-core/src/test/resources/test2.in similarity index 100% rename from guava-collections/src/test/resources/test2.in rename to guava-modules/guava-core/src/test/resources/test2.in diff --git a/guava-collections/src/test/resources/test_copy.in b/guava-modules/guava-core/src/test/resources/test_copy.in similarity index 100% rename from guava-collections/src/test/resources/test_copy.in rename to guava-modules/guava-core/src/test/resources/test_copy.in diff --git a/guava-collections/src/test/resources/test_le.txt b/guava-modules/guava-core/src/test/resources/test_le.txt similarity index 100% rename from guava-collections/src/test/resources/test_le.txt rename to guava-modules/guava-core/src/test/resources/test_le.txt diff --git a/guava-io/README.md b/guava-modules/guava-io/README.md similarity index 100% rename from guava-io/README.md rename to guava-modules/guava-io/README.md diff --git a/guava-io/pom.xml b/guava-modules/guava-io/pom.xml similarity index 93% rename from guava-io/pom.xml rename to guava-modules/guava-io/pom.xml index e01f76e2e3..6b3280755c 100644 --- a/guava-io/pom.xml +++ b/guava-modules/guava-io/pom.xml @@ -11,9 +11,9 @@ com.baeldung - parent-java + guava-modules 0.0.1-SNAPSHOT - ../parent-java + ../ diff --git a/guava-io/src/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java b/guava-modules/guava-io/src/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java similarity index 100% rename from guava-io/src/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java rename to guava-modules/guava-io/src/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java diff --git a/guava-io/src/test/java/com/baeldung/guava/GuavaIOUnitTest.java b/guava-modules/guava-io/src/test/java/com/baeldung/guava/GuavaIOUnitTest.java similarity index 100% rename from guava-io/src/test/java/com/baeldung/guava/GuavaIOUnitTest.java rename to guava-modules/guava-io/src/test/java/com/baeldung/guava/GuavaIOUnitTest.java diff --git a/guava-io/src/test/resources/test1.in b/guava-modules/guava-io/src/test/resources/test1.in similarity index 100% rename from guava-io/src/test/resources/test1.in rename to guava-modules/guava-io/src/test/resources/test1.in diff --git a/guava-io/src/test/resources/test1_1.in b/guava-modules/guava-io/src/test/resources/test1_1.in similarity index 100% rename from guava-io/src/test/resources/test1_1.in rename to guava-modules/guava-io/src/test/resources/test1_1.in diff --git a/guava-io/src/test/resources/test2.in b/guava-modules/guava-io/src/test/resources/test2.in similarity index 100% rename from guava-io/src/test/resources/test2.in rename to guava-modules/guava-io/src/test/resources/test2.in diff --git a/guava/.gitignore b/guava-modules/guava-utilities/.gitignore similarity index 100% rename from guava/.gitignore rename to guava-modules/guava-utilities/.gitignore diff --git a/guava/README.md b/guava-modules/guava-utilities/README.md similarity index 60% rename from guava/README.md rename to guava-modules/guava-utilities/README.md index 24beca60c3..e2caa1a145 100644 --- a/guava/README.md +++ b/guava-modules/guava-utilities/README.md @@ -1,17 +1,12 @@ -## Guava +## Guava Utilities -This module contains articles a Google Guava +This module contains articles about utilities provided by Google Guava ### Relevant Articles: - -- [Guava Functional Cookbook](https://www.baeldung.com/guava-functions-predicates) -- [Guide to Guava’s PreConditions](https://www.baeldung.com/guava-preconditions) - [Introduction to Guava CacheLoader](https://www.baeldung.com/guava-cacheloader) -- [Introduction to Guava Memoizer](https://www.baeldung.com/guava-memoizer) - [Guide to Guava’s EventBus](https://www.baeldung.com/guava-eventbus) - [Guide to Guava’s Reflection Utilities](https://www.baeldung.com/guava-reflection) - [Guide to Mathematical Utilities in Guava](https://www.baeldung.com/guava-math) - [Bloom Filter in Java using Guava](https://www.baeldung.com/guava-bloom-filter) - [Quick Guide to the Guava RateLimiter](https://www.baeldung.com/guava-rate-limiter) - [Guava Cache](https://www.baeldung.com/guava-cache) -- [Introduction to Guava Throwables](https://www.baeldung.com/guava-throwables) diff --git a/guava/pom.xml b/guava-modules/guava-utilities/pom.xml similarity index 92% rename from guava/pom.xml rename to guava-modules/guava-utilities/pom.xml index 2c4ff07c84..0496f5b2e8 100644 --- a/guava/pom.xml +++ b/guava-modules/guava-utilities/pom.xml @@ -4,15 +4,15 @@ 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 - guava + guava-utilities 0.1.0-SNAPSHOT - guava + guava-utilities com.baeldung - parent-java + guava-modules 0.0.1-SNAPSHOT - ../parent-java + ../ diff --git a/guava/src/main/java/com/baeldung/guava/CustomEvent.java b/guava-modules/guava-utilities/src/main/java/com/baeldung/guava/eventbus/CustomEvent.java similarity index 87% rename from guava/src/main/java/com/baeldung/guava/CustomEvent.java rename to guava-modules/guava-utilities/src/main/java/com/baeldung/guava/eventbus/CustomEvent.java index a154790374..55112b5cb3 100644 --- a/guava/src/main/java/com/baeldung/guava/CustomEvent.java +++ b/guava-modules/guava-utilities/src/main/java/com/baeldung/guava/eventbus/CustomEvent.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.eventbus; public class CustomEvent { private String action; diff --git a/guava/src/main/java/com/baeldung/guava/EventListener.java b/guava-modules/guava-utilities/src/main/java/com/baeldung/guava/eventbus/EventListener.java similarity index 96% rename from guava/src/main/java/com/baeldung/guava/EventListener.java rename to guava-modules/guava-utilities/src/main/java/com/baeldung/guava/eventbus/EventListener.java index 7bcfbcb8e9..404501b578 100644 --- a/guava/src/main/java/com/baeldung/guava/EventListener.java +++ b/guava-modules/guava-utilities/src/main/java/com/baeldung/guava/eventbus/EventListener.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.eventbus; import com.google.common.eventbus.DeadEvent; import com.google.common.eventbus.Subscribe; diff --git a/guava-modules/guava-utilities/src/main/resources/logback.xml b/guava-modules/guava-utilities/src/main/resources/logback.xml new file mode 100644 index 0000000000..56af2d397e --- /dev/null +++ b/guava-modules/guava-utilities/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guava/src/test/java/com/baeldung/guava/BloomFilterUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/bloomfilter/BloomFilterUnitTest.java similarity index 97% rename from guava/src/test/java/com/baeldung/guava/BloomFilterUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/bloomfilter/BloomFilterUnitTest.java index c11bf27256..96cc8ac1d9 100644 --- a/guava/src/test/java/com/baeldung/guava/BloomFilterUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/bloomfilter/BloomFilterUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.bloomfilter; import com.google.common.hash.BloomFilter; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaCacheUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/cache/GuavaCacheUnitTest.java similarity index 99% rename from guava/src/test/java/com/baeldung/guava/GuavaCacheUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/cache/GuavaCacheUnitTest.java index 8aa56c7c52..0129d661fc 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaCacheUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/cache/GuavaCacheUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.cache; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaCacheLoaderUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/cacheloader/GuavaCacheLoaderUnitTest.java similarity index 98% rename from guava/src/test/java/com/baeldung/guava/GuavaCacheLoaderUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/cacheloader/GuavaCacheLoaderUnitTest.java index bf9747ec18..7157c76494 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaCacheLoaderUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/cacheloader/GuavaCacheLoaderUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.cacheloader; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaEventBusUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/eventbus/GuavaEventBusUnitTest.java similarity index 90% rename from guava/src/test/java/com/baeldung/guava/GuavaEventBusUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/eventbus/GuavaEventBusUnitTest.java index bb9d26fcce..a6967d18f7 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaEventBusUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/eventbus/GuavaEventBusUnitTest.java @@ -1,5 +1,7 @@ -package com.baeldung.guava; +package com.baeldung.guava.eventbus; +import com.baeldung.guava.eventbus.CustomEvent; +import com.baeldung.guava.eventbus.EventListener; import com.google.common.eventbus.EventBus; import org.junit.After; import org.junit.Before; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaBigIntegerMathUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaBigIntegerMathUnitTest.java similarity index 99% rename from guava/src/test/java/com/baeldung/guava/GuavaBigIntegerMathUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaBigIntegerMathUnitTest.java index cca42a688f..d890ef0bf0 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaBigIntegerMathUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaBigIntegerMathUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.mathutils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaDoubleMathUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaDoubleMathUnitTest.java similarity index 98% rename from guava/src/test/java/com/baeldung/guava/GuavaDoubleMathUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaDoubleMathUnitTest.java index 9c78fb36fa..05a70e3654 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaDoubleMathUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaDoubleMathUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.mathutils; import static org.junit.Assert.*; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaIntMathUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaIntMathUnitTest.java similarity index 99% rename from guava/src/test/java/com/baeldung/guava/GuavaIntMathUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaIntMathUnitTest.java index 547f423396..4ac3c93518 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaIntMathUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaIntMathUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.mathutils; import static org.junit.Assert.*; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaLongMathUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaLongMathUnitTest.java similarity index 99% rename from guava/src/test/java/com/baeldung/guava/GuavaLongMathUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaLongMathUnitTest.java index 33c28d4594..41358b081b 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaLongMathUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaLongMathUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.mathutils; import static org.junit.Assert.*; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaMathUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaMathUnitTest.java similarity index 99% rename from guava/src/test/java/com/baeldung/guava/GuavaMathUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaMathUnitTest.java index fce0fec13b..0d21a6f4ae 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaMathUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/mathutils/GuavaMathUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.mathutils; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.*; diff --git a/guava/src/test/java/com/baeldung/guava/RateLimiterLongRunningUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/ratelimiter/RateLimiterLongRunningUnitTest.java similarity index 98% rename from guava/src/test/java/com/baeldung/guava/RateLimiterLongRunningUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/ratelimiter/RateLimiterLongRunningUnitTest.java index 7372e9f6e9..cb06e6ff85 100644 --- a/guava/src/test/java/com/baeldung/guava/RateLimiterLongRunningUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/ratelimiter/RateLimiterLongRunningUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.ratelimiter; import com.google.common.util.concurrent.RateLimiter; diff --git a/guava/src/test/java/com/baeldung/guava/GuavaReflectionUtilsUnitTest.java b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/reflectionutils/GuavaReflectionUtilsUnitTest.java similarity index 99% rename from guava/src/test/java/com/baeldung/guava/GuavaReflectionUtilsUnitTest.java rename to guava-modules/guava-utilities/src/test/java/com/baeldung/guava/reflectionutils/GuavaReflectionUtilsUnitTest.java index 36df241711..8060191bdc 100644 --- a/guava/src/test/java/com/baeldung/guava/GuavaReflectionUtilsUnitTest.java +++ b/guava-modules/guava-utilities/src/test/java/com/baeldung/guava/reflectionutils/GuavaReflectionUtilsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.guava; +package com.baeldung.guava.reflectionutils; import com.google.common.collect.Lists; diff --git a/guava/src/test/resources/.gitignore b/guava-modules/guava-utilities/src/test/resources/.gitignore similarity index 100% rename from guava/src/test/resources/.gitignore rename to guava-modules/guava-utilities/src/test/resources/.gitignore diff --git a/guava/src/test/resources/test.out b/guava-modules/guava-utilities/src/test/resources/test.out similarity index 100% rename from guava/src/test/resources/test.out rename to guava-modules/guava-utilities/src/test/resources/test.out diff --git a/guava/src/test/resources/test1.in b/guava-modules/guava-utilities/src/test/resources/test1.in similarity index 100% rename from guava/src/test/resources/test1.in rename to guava-modules/guava-utilities/src/test/resources/test1.in diff --git a/guava/src/test/resources/test1_1.in b/guava-modules/guava-utilities/src/test/resources/test1_1.in similarity index 100% rename from guava/src/test/resources/test1_1.in rename to guava-modules/guava-utilities/src/test/resources/test1_1.in diff --git a/guava/src/test/resources/test2.in b/guava-modules/guava-utilities/src/test/resources/test2.in similarity index 100% rename from guava/src/test/resources/test2.in rename to guava-modules/guava-utilities/src/test/resources/test2.in diff --git a/guava/src/test/resources/test_copy.in b/guava-modules/guava-utilities/src/test/resources/test_copy.in similarity index 100% rename from guava/src/test/resources/test_copy.in rename to guava-modules/guava-utilities/src/test/resources/test_copy.in diff --git a/guava/src/test/resources/test_le.txt b/guava-modules/guava-utilities/src/test/resources/test_le.txt similarity index 100% rename from guava/src/test/resources/test_le.txt rename to guava-modules/guava-utilities/src/test/resources/test_le.txt diff --git a/guava-modules/pom.xml b/guava-modules/pom.xml index d1a2bbc16e..b625f9fd0f 100644 --- a/guava-modules/pom.xml +++ b/guava-modules/pom.xml @@ -4,9 +4,6 @@ 4.0.0 guava-modules guava-modules - - 5.6.2 - pom @@ -17,12 +14,24 @@ + guava-utilities + guava-core guava-18 guava-19 guava-21 + guava-collections + guava-collections-list + guava-collections-map + guava-collections-set + guava-io + + com.google.guava + guava + ${guava.version} + org.junit.jupiter junit-jupiter @@ -47,4 +56,9 @@ + + 5.6.2 + 29.0-jre + + diff --git a/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java b/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java index 4977c122e7..ba640f3fb2 100644 --- a/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java +++ b/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java @@ -32,7 +32,7 @@ public class JavaCollectionConversionUnitTest { @Test public final void givenUsingCoreJava_whenListConvertedToArray_thenCorrect() { final List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); - final Integer[] targetArray = sourceList.toArray(new Integer[sourceList.size()]); + final Integer[] targetArray = sourceList.toArray(new Integer[0]); } @Test @@ -72,7 +72,7 @@ public class JavaCollectionConversionUnitTest { @Test public final void givenUsingCoreJava_whenSetConvertedToArray_thenCorrect() { final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); - final Integer[] targetArray = sourceSet.toArray(new Integer[sourceSet.size()]); + final Integer[] targetArray = sourceSet.toArray(new Integer[0]); } @Test @@ -94,16 +94,10 @@ public class JavaCollectionConversionUnitTest { CollectionUtils.addAll(targetSet, sourceArray); } - @Test - public final void givenUsingCommonsCollections_whenSetConvertedToArray_thenCorrect() { - final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); - final Integer[] targetArray = sourceSet.toArray(new Integer[sourceSet.size()]); - } - @Test public final void givenUsingCommonsCollections_whenSetConvertedToArrayOfPrimitives_thenCorrect() { final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); - final Integer[] targetArray = sourceSet.toArray(new Integer[sourceSet.size()]); + final Integer[] targetArray = sourceSet.toArray(new Integer[0]); final int[] primitiveTargetArray = ArrayUtils.toPrimitive(targetArray); } diff --git a/java-numbers-3/README.md b/java-numbers-3/README.md index ab0bbd995d..2cec5d52cd 100644 --- a/java-numbers-3/README.md +++ b/java-numbers-3/README.md @@ -4,7 +4,7 @@ This module contains articles about numbers in Java. ### Relevant Articles: -- [Generating Random Numbers](https://www.baeldung.com/java-generating-random-numbers) +- [Generating Random Numbers in Java](https://www.baeldung.com/java-generating-random-numbers) - [Convert Double to Long in Java](https://www.baeldung.com/java-convert-double-long) - [Check for null Before Calling Parse in Double.parseDouble](https://www.baeldung.com/java-check-null-parse-double) - [Generating Random Numbers in a Range in Java](https://www.baeldung.com/java-generating-random-numbers-in-range) diff --git a/java-numbers-4/pom.xml b/java-numbers-4/pom.xml new file mode 100644 index 0000000000..e1722fb039 --- /dev/null +++ b/java-numbers-4/pom.xml @@ -0,0 +1,52 @@ + + 4.0.0 + java-numbers-4 + java-numbers-4 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + + io.vavr + vavr + ${vavr.version} + + + org.apache.commons + commons-lang3 + ${commons.version} + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + java-numbers-4 + + + src/main/resources + true + + + + + + 0.10.2 + 3.9 + 3.6.1 + + + diff --git a/java-numbers-4/src/main/java/com/baeldung/probability/MaleHeightGenerator.java b/java-numbers-4/src/main/java/com/baeldung/probability/MaleHeightGenerator.java new file mode 100644 index 0000000000..ed3fb8a578 --- /dev/null +++ b/java-numbers-4/src/main/java/com/baeldung/probability/MaleHeightGenerator.java @@ -0,0 +1,17 @@ +package com.baeldung.probability; + +import org.apache.commons.math3.distribution.NormalDistribution; + +public class MaleHeightGenerator { + private static final double MEAN_HEIGHT = 176.02; + private static final double STANDARD_DEVIATION = 7.11; + private static NormalDistribution distribution = new NormalDistribution(MEAN_HEIGHT, STANDARD_DEVIATION); + + public static double generateNormalHeight() { + return distribution.sample(); + } + + public static double probabilityOfHeightBetween(double heightLowerExclusive, double heightUpperInclusive) { + return distribution.probability(heightLowerExclusive, heightUpperInclusive); + } +} diff --git a/java-numbers-4/src/main/java/com/baeldung/probability/RandomInvoker.java b/java-numbers-4/src/main/java/com/baeldung/probability/RandomInvoker.java new file mode 100644 index 0000000000..66f82022ea --- /dev/null +++ b/java-numbers-4/src/main/java/com/baeldung/probability/RandomInvoker.java @@ -0,0 +1,19 @@ +package com.baeldung.probability; + +import io.vavr.Lazy; + +import java.util.SplittableRandom; +import java.util.function.Supplier; + +public class RandomInvoker { + private final Lazy random = Lazy.of(SplittableRandom::new); + + public T withProbability(Supplier positiveCase, Supplier negativeCase, int probability) { + SplittableRandom random = this.random.get(); + if (random.nextInt(1, 101) <= probability) { + return positiveCase.get(); + } else { + return negativeCase.get(); + } + } +} diff --git a/java-numbers-4/src/test/java/com/baeldung/probability/RandomInvokerUnitTest.java b/java-numbers-4/src/test/java/com/baeldung/probability/RandomInvokerUnitTest.java new file mode 100644 index 0000000000..b08c086e30 --- /dev/null +++ b/java-numbers-4/src/test/java/com/baeldung/probability/RandomInvokerUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.probability; + +import org.assertj.core.data.Offset; +import org.junit.Test; + +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RandomInvokerUnitTest { + @Test + public void givenProbability_whenInvoked_invokeWithProbability() { + RandomInvoker randomInvoker = new RandomInvoker(); + + int numberOfSamples = 1_000_000; + int probability = 10; + int howManyTimesInvoked = Stream.generate(() -> randomInvoker.withProbability(() -> 1, () -> 0, probability)) + .limit(numberOfSamples) + .mapToInt(e -> e).sum(); + int monteCarloProbability = (howManyTimesInvoked * 100) / numberOfSamples; + + assertThat(monteCarloProbability).isCloseTo(probability, Offset.offset(1)); + } +} diff --git a/javax-servlets/README.md b/javax-servlets/README.md index 7dbe1a02ad..54f92064a0 100644 --- a/javax-servlets/README.md +++ b/javax-servlets/README.md @@ -12,3 +12,4 @@ This module contains articles about Servlets. - [Jakarta EE Servlet Exception Handling](https://www.baeldung.com/servlet-exceptions) - [Context and Servlet Initialization Parameters](https://www.baeldung.com/context-servlet-initialization-param) - [The Difference between getRequestURI and getPathInfo in HttpServletRequest](https://www.baeldung.com/http-servlet-request-requesturi-pathinfo) +- Difference between request.getSession() and request.getSession(true) diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/MainServlet.java b/javax-servlets/src/main/java/com/baeldung/servlets/MainServlet.java new file mode 100644 index 0000000000..d4417b0b4e --- /dev/null +++ b/javax-servlets/src/main/java/com/baeldung/servlets/MainServlet.java @@ -0,0 +1,22 @@ +package com.baeldung.servlets; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@WebServlet("/main") +public class MainServlet extends HttpServlet { + + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + response.sendRedirect("main.jsp"); + } + + + + +} diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/UpdateServlet.java b/javax-servlets/src/main/java/com/baeldung/servlets/UpdateServlet.java new file mode 100644 index 0000000000..d0404d0cd4 --- /dev/null +++ b/javax-servlets/src/main/java/com/baeldung/servlets/UpdateServlet.java @@ -0,0 +1,30 @@ +package com.baeldung.servlets; + + +import java.io.IOException; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +@WebServlet("/update") +public class UpdateServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + HttpSession session = request.getSession(false); + + session.setAttribute("userName", request.getParameter("userName")); + session.setAttribute("age", request.getParameter("age")); + + request.setAttribute("sessionData", session); + RequestDispatcher requestDispather = request.getRequestDispatcher("update.jsp"); + + requestDispather.forward(request, response); + } + +} diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/UserLoginServlet.java b/javax-servlets/src/main/java/com/baeldung/servlets/UserLoginServlet.java new file mode 100644 index 0000000000..6becf04a0c --- /dev/null +++ b/javax-servlets/src/main/java/com/baeldung/servlets/UserLoginServlet.java @@ -0,0 +1,30 @@ +package com.baeldung.servlets; + + +import java.io.IOException; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +@WebServlet("/u_login") +public class UserLoginServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + HttpSession session = request.getSession(); + + session.setAttribute("userId", request.getParameter("userId")); + + request.setAttribute("id", session.getAttribute("userId")); + + RequestDispatcher requestDispather = request.getRequestDispatcher("userlogin.jsp"); + + requestDispather.forward(request, response); + + } + +} diff --git a/javax-servlets/src/main/webapp/WEB-INF/jsp/main.jsp b/javax-servlets/src/main/webapp/WEB-INF/jsp/main.jsp new file mode 100644 index 0000000000..cbbb578770 --- /dev/null +++ b/javax-servlets/src/main/webapp/WEB-INF/jsp/main.jsp @@ -0,0 +1,15 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + + + +
+

Enter your User Id and Password

+ User ID:
+ Password:
+
+ + \ No newline at end of file diff --git a/javax-servlets/src/main/webapp/WEB-INF/jsp/update.jsp b/javax-servlets/src/main/webapp/WEB-INF/jsp/update.jsp new file mode 100644 index 0000000000..36ac2d277b --- /dev/null +++ b/javax-servlets/src/main/webapp/WEB-INF/jsp/update.jsp @@ -0,0 +1,17 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + + + + + Hi, User : ${sessionData.getAttribute("userId")} + +
Your User Data has been updated as below : +
User Name: ${sessionData.getAttribute("userName")} +
Age : ${sessionData.getAttribute("age")} + + + \ No newline at end of file diff --git a/javax-servlets/src/main/webapp/WEB-INF/jsp/userlogin.jsp b/javax-servlets/src/main/webapp/WEB-INF/jsp/userlogin.jsp new file mode 100644 index 0000000000..f181222f39 --- /dev/null +++ b/javax-servlets/src/main/webapp/WEB-INF/jsp/userlogin.jsp @@ -0,0 +1,18 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + + + +

Update your User Details:

+ +
+ User ID:
User Name: + Age:
+
+ + \ No newline at end of file diff --git a/jhipster-5/bookstore-monolith/pom.xml b/jhipster-5/bookstore-monolith/pom.xml index 4e4c82f327..c965fd962d 100644 --- a/jhipster-5/bookstore-monolith/pom.xml +++ b/jhipster-5/bookstore-monolith/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.baeldung.jhipster5 - bookstore + bookstore-monolith 0.0.1-SNAPSHOT war Bookstore @@ -1008,6 +1008,68 @@ + + default-first + + + + + com.github.eirslett + frontend-maven-plugin + + + + install node and npm + none + + + npm install + none + + + webpack build dev + none + + + webpack build test + none + + + + + + + + default-second + + + + + com.github.eirslett + frontend-maven-plugin + + + + install node and npm + none + + + npm install + none + + + webpack build dev + none + + + webpack build test + none + + + + + + diff --git a/jib/pom.xml b/jib/pom.xml index 1d7413cc18..15e7e44e7c 100644 --- a/jib/pom.xml +++ b/jib/pom.xml @@ -40,6 +40,6 @@ - 0.9.10 + 2.5.0 diff --git a/jmh/pom.xml b/jmh/pom.xml index 735198036e..16a5bc54a4 100644 --- a/jmh/pom.xml +++ b/jmh/pom.xml @@ -26,6 +26,11 @@ jmh-generator-annprocess ${openjdk.jmh.version}
+ + org.openjdk.jol + jol-core + ${jol-core.version} +
@@ -42,12 +47,39 @@ + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven-assembly-plugin.version} + + + jar-with-dependencies + + + + com.baeldung.BenchmarkRunner + + + + + + make-assembly + package + + single + + + + 1.19 3.0.2 + 0.10 + 3.2.0 \ No newline at end of file diff --git a/jmh/src/main/java/com/baeldung/bitset/Plotter.java b/jmh/src/main/java/com/baeldung/bitset/Plotter.java new file mode 100644 index 0000000000..0d065ea185 --- /dev/null +++ b/jmh/src/main/java/com/baeldung/bitset/Plotter.java @@ -0,0 +1,38 @@ +package com.baeldung.bitset; + +import org.openjdk.jol.info.ClassLayout; +import org.openjdk.jol.info.GraphLayout; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.BitSet; + +public class Plotter { + + public static void main(String[] args) throws IOException { + Path path = Paths.get("footprint.csv"); + try (BufferedWriter stream = Files.newBufferedWriter(path, StandardOpenOption.CREATE)) { + stream.write("bits,bool,bitset\n"); + + for (int i = 0; i <= 10_000_000; i += 500) { + System.out.println("Number of bits => " + i); + + boolean[] ba = new boolean[i]; + BitSet bitSet = new BitSet(i); + + long baSize = ClassLayout.parseInstance(ba).instanceSize(); + long bitSetSize = GraphLayout.parseInstance(bitSet).totalSize(); + + stream.write((i + "," + baSize + "," + bitSetSize + "\n")); + + if (i % 10_000 == 0) { + stream.flush(); + } + } + } + } +} diff --git a/jmh/src/main/java/com/baeldung/bitset/Sizing.java b/jmh/src/main/java/com/baeldung/bitset/Sizing.java new file mode 100644 index 0000000000..58c9061c07 --- /dev/null +++ b/jmh/src/main/java/com/baeldung/bitset/Sizing.java @@ -0,0 +1,17 @@ +package com.baeldung.bitset; + +import org.openjdk.jol.info.ClassLayout; +import org.openjdk.jol.info.GraphLayout; + +import java.util.BitSet; + +public class Sizing { + + public static void main(String[] args) { + boolean[] ba = new boolean[10_000]; + System.out.println(ClassLayout.parseInstance(ba).toPrintable()); + + BitSet bitSet = new BitSet(10_000); + System.out.println(GraphLayout.parseInstance(bitSet).toPrintable()); + } +} diff --git a/jmh/src/main/java/com/baeldung/bitset/VectorOfBitsBenchmark.java b/jmh/src/main/java/com/baeldung/bitset/VectorOfBitsBenchmark.java new file mode 100644 index 0000000000..7bbf00f36c --- /dev/null +++ b/jmh/src/main/java/com/baeldung/bitset/VectorOfBitsBenchmark.java @@ -0,0 +1,77 @@ +package com.baeldung.bitset; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; + +import java.util.BitSet; +import java.util.concurrent.ThreadLocalRandom; + +@State(Scope.Benchmark) +@BenchmarkMode(Mode.Throughput) +public class VectorOfBitsBenchmark { + + private boolean[] array; + private BitSet bitSet; + + @Param({"100", "1000", "5000", "50000", "100000", "1000000", "2000000", "3000000", "5000000", + "7000000", "10000000", "20000000", "30000000", "50000000", "70000000", "1000000000"}) + public int size; + + @Setup(Level.Trial) + public void setUp() { + array = new boolean[size]; + for (int i = 0; i < array.length; i++) { + array[i] = ThreadLocalRandom.current().nextBoolean(); + } + + bitSet = new BitSet(size); + for (int i = 0; i < size; i++) { + bitSet.set(i, ThreadLocalRandom.current().nextBoolean()); + } + } + + @Benchmark + public boolean getBoolArray() { + return array[ThreadLocalRandom.current().nextInt(size)]; + } + + @Benchmark + public boolean getBitSet() { + return bitSet.get(ThreadLocalRandom.current().nextInt(size)); + } + + @Benchmark + public void setBoolArray() { + int index = ThreadLocalRandom.current().nextInt(size); + array[index] = true; + } + + @Benchmark + public void setBitSet() { + int index = ThreadLocalRandom.current().nextInt(size); + bitSet.set(index); + } + + @Benchmark + public int cardinalityBoolArray() { + int sum = 0; + for (boolean b : array) { + if (b) { + sum++; + } + } + + return sum; + } + + @Benchmark + public int cardinalityBitSet() { + return bitSet.cardinality(); + } +} diff --git a/jmh/src/main/resources/bitset/cardinal.csv b/jmh/src/main/resources/bitset/cardinal.csv new file mode 100644 index 0000000000..1e6f0731f4 --- /dev/null +++ b/jmh/src/main/resources/bitset/cardinal.csv @@ -0,0 +1,449 @@ +"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: size" +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,393747573.686833,8176258.509541,"ops/s",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,0.001142,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,16.019285,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,3.525011,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,0.001011,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,0.000227,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,9.978252,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.000084,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,16.085984,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.000016,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,3.515332,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.000104,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.000187,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,51.807801,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,200028477.639536,1655942.004821,"ops/s",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,0.002157,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,30.037472,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,4.035148,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,0.002133,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,0.000533,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,14.964408,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.000209,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,30.189211,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.000035,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,4.026334,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.000222,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.000400,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,99.619362,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,63020698.220022,301117.329336,"ops/s",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,0.006739,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,92.968547,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,4.051628,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,0.005924,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,0.002165,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,29.892853,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.000582,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,93.493939,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.000109,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,4.051385,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.000724,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.001279,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,285.417873,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,7204008.548800,26777.006550,"ops/s",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,0.085737,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,796.749450,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,4.282982,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,0.055282,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,1.012529,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,110.884225,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.004487,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,801.165820,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.000784,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,4.226255,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.006024,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.010046,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,2006.941407,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,3629991.817907,11097.373770,"ops/s",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,0.243416,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,1577.873015,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,4.557042,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,0.106117,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,1.025199,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,205.866839,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.011796,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,1584.735453,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.002335,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,4.653284,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.012223,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.020736,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,3947.152509,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,363285.637971,1381.431204,"ops/s",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,1712.185003,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,15660.070795,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,9.441652,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,1.200677,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,1.744812,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,1963.525342,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.452116,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,15734.050011,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.023238,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,9.519313,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.190122,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.208191,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,38999.133661,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,180844.028528,610.040837,"ops/s",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,3664.111553,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,31271.600037,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,14.435729,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,2.610217,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,1.649819,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,3910.476252,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.217432,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,31408.622718,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.040256,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,14.601374,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.260903,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.422715,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,77788.657874,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,118548.730143,468.823226,"ops/s",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,5639.799222,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,47006.741115,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,19.832762,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,4.059959,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,2.278006,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,5874.367510,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.324499,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,47272.836745,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.064460,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,22.600079,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.467719,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.642886,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,116927.646081,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,70086.673236,563.669183,"ops/s",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,9560.498477,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,78198.576932,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,34.810483,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,6.905933,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,2.660745,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,9767.014432,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,0.616113,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,78630.286046,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.101142,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,31.958140,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,0.716475,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,0.975224,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,194453.814959,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,50185.268564,354.561055,"ops/s",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,13480.043453,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,109488.725728,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,45.881465,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,9.602892,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,2.750373,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,13686.896942,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,1.079668,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,110066.269505,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.186638,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,50.867881,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,1.087789,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,1.401113,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,272641.291312,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,34908.512595,116.418990,"ops/s",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,19358.228821,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,156380.208163,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,52.083219,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,13.328039,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,14.661694,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,19522.637780,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,2.203013,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,156928.984801,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,0.273531,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,67.026094,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,1.900268,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,1.929660,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,388765.349238,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,17317.558001,100.005388,"ops/s",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,38984.617172,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,312761.798113,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,110.924669,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,27.027104,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,11.114591,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,39043.188700,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,16.408157,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,314387.564881,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,1.315988,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,121.913794,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,7.243860,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,2.181325,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,778038.560011,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,11501.959917,57.124269,"ops/s",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,58960.217967,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,469304.081395,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,184.289676,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,48.075359,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,9.470284,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,58590.395636,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,110.391626,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,471624.463912,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,5.747181,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,162.875573,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,13.870816,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,1.683658,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,1168184.932237,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,6853.662641,34.907898,"ops/s",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,98396.707621,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,782412.601151,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,276.504336,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,62.269039,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,14.744583,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,97655.835705,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,463.063389,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,785788.480539,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,9.752381,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,309.916361,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,23.524244,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,3.349640,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,1946858.485637,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,4879.613096,31.364409,"ops/s",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,137967.751689,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,1096110.204019,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,460.349614,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,100.554744,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,21.779339,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,136829.273899,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,651.277926,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,1102431.584828,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,11.249848,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,520.978240,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,32.792037,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,3.967967,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,2727814.788476,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet","thrpt",4,40,224.865509,9.210752,"ops/s",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-load-misses","thrpt",4,2,1190415.055459,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-loads","thrpt",4,2,15632200.467402,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-dcache-stores","thrpt",4,2,19441.575768,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:L1-icache-load-misses","thrpt",4,2,2047.756107,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branch-misses","thrpt",4,2,485.442180,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:branches","thrpt",4,2,1965043.175621,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-load-misses","thrpt",4,2,31032.470870,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-loads","thrpt",4,2,15667116.799869,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-store-misses","thrpt",4,2,143.428283,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:dTLB-stores","thrpt",4,2,11595.673237,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-load-misses","thrpt",4,2,742.352246,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:iTLB-loads","thrpt",4,2,98.480752,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBitSet:instructions","thrpt",4,2,39048358.021105,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,37049279.373531,704963.020277,"ops/s",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,0.011099,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,112.064045,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,4.073352,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,0.009620,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,0.002608,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,29.947392,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,0.001015,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,112.623597,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,0.000228,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,4.075249,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,0.001286,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,0.002188,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,622.445960,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,4096591.017375,15272.062456,"ops/s",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,0.131963,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,1012.474032,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,4.586741,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,0.104217,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,1.022211,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,139.987103,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,0.008928,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,1017.535338,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,0.001594,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,4.600783,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,0.010615,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,0.018421,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,5536.843608,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,832334.798376,3074.911358,"ops/s",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,0.766809,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,5030.987321,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,7.002736,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,0.498173,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,1.086794,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,641.641634,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,0.047561,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,5051.582231,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,0.008993,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,6.752675,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,0.050431,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,0.092294,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,27529.642459,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,83377.631077,255.122714,"ops/s",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,539.461053,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,50020.851413,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,29.937221,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,5.092867,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,4.842983,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,6261.566122,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,0.422246,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,50255.455914,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,0.078430,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,24.798375,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,0.559565,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,0.902338,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,273680.241982,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,41408.544806,165.347056,"ops/s",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,1322.755020,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,99955.008469,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,55.552771,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,10.390631,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,5.861952,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,12500.640365,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,0.769535,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,100406.515812,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,0.150189,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,44.164416,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,1.117459,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,1.825801,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,546990.292774,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,4129.742795,17.898464,"ops/s",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,15349.951857,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,1002365.863265,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,499.940618,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,122.631357,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,28.242979,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,125323.009142,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,13.650726,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,1007023.362826,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,1.912985,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,505.608704,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,14.288697,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,17.956474,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,5484912.917616,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,2077.577519,7.337211,"ops/s",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,31292.588903,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,2001841.397596,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,966.586187,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,238.822058,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,46.510032,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,250019.595282,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,68.527514,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,2009528.999936,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,7.098600,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,950.622751,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,53.292000,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,24.529932,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,10953197.041140,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,1382.303027,4.169656,"ops/s",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,47056.390407,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,3000801.315529,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,1470.047881,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,357.378786,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,60.820713,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,374783.769835,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,252.896052,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,3015767.599869,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,21.872987,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,1524.876162,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,112.567929,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,23.688984,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,16425272.638241,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,829.757845,2.907395,"ops/s",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,79794.283301,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,4999110.374252,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,2878.569713,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,600.944033,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,117.854523,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,624380.185108,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,625.032361,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,5023239.665880,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,32.290537,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,1952.720560,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,194.797679,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,26.471072,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,27353169.238296,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,593.611980,2.520324,"ops/s",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,111485.949371,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,7025474.793043,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,3672.457662,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,817.906535,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,116.322549,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,877217.619856,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,957.823851,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,7057039.698064,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,50.812805,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,3850.388980,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,280.996635,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,55.292762,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,38432075.289421,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,414.148792,1.531335,"ops/s",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,158517.772914,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,10012879.292064,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,5067.772968,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,1159.247229,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,219.525384,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,1250534.640040,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,1355.116322,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,10051566.656711,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,68.965296,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,5208.287470,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,369.777199,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,56.291391,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,54776223.581884,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,207.806128,0.628873,"ops/s",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,304113.485355,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,20023501.895517,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,9779.441786,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,2487.972260,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,400.329711,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,2501297.068694,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,2937.078221,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,20089328.718289,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,131.879427,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,10912.262719,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,707.654814,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,108.177862,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,109579830.457931,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,138.119711,0.500755,"ops/s",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,443956.723054,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,30008750.271844,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,14759.175750,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,3431.902326,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,569.840892,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,3747872.534933,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,4806.051229,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,30144733.769549,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,201.619836,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,17338.732113,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,1098.261594,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,195.410627,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,164166517.089861,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,82.709149,0.295436,"ops/s",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,747996.211010,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,50109102.392841,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,37525.937305,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,6197.904618,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,1079.041011,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,6265857.125983,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,7401.558857,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,50190387.111098,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,343.424195,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,30593.259958,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,1746.881433,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,263.036555,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,274256325.159847,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,59.202337,0.381593,"ops/s",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,1049088.662627,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,70094037.559522,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,70850.762444,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,8257.515781,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,1934.286962,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,8780399.271839,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,10142.237142,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,70255089.174523,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,568.459880,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,60618.442280,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,2578.542787,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,369.873390,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,383542921.407972,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray","thrpt",4,40,4.164406,0.021372,"ops/s",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-load-misses","thrpt",4,2,14724055.231818,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-loads","thrpt",4,2,1002251097.850000,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-dcache-stores","thrpt",4,2,1304484.515909,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:L1-icache-load-misses","thrpt",4,2,94383.129545,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branch-misses","thrpt",4,2,29678.675000,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:branches","thrpt",4,2,126027016.040909,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-load-misses","thrpt",4,2,149098.588636,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-loads","thrpt",4,2,1005716183.827273,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-store-misses","thrpt",4,2,9554.579545,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:dTLB-stores","thrpt",4,2,1637043.229545,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-load-misses","thrpt",4,2,36110.963636,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:iTLB-loads","thrpt",4,2,5566.793182,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.cardinalityBoolArray:instructions","thrpt",4,2,5481003131.631819,NaN,"#/op",1000000000 diff --git a/jmh/src/main/resources/bitset/get.csv b/jmh/src/main/resources/bitset/get.csv new file mode 100644 index 0000000000..2d929d927d --- /dev/null +++ b/jmh/src/main/resources/bitset/get.csv @@ -0,0 +1,449 @@ +"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: size" +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,184790139.562014,2667066.521846,"ops/s",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.002467,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.050243,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.042285,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.002206,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.000451,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.985709,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000194,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.132320,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000034,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.035930,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000246,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000417,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.781944,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,189890949.805559,659556.001166,"ops/s",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.002317,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.036584,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.044334,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.002032,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.000437,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.964305,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000185,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.148063,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000034,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.029343,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000246,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000403,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.597453,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,189507179.833915,629754.953530,"ops/s",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.002466,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.010134,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.029958,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.002275,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.000384,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.962285,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000216,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.086110,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000033,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.018705,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000208,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000400,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.611799,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,185398269.303855,1908706.853646,"ops/s",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.003713,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.039282,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.044589,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.002108,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.000501,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.976543,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000183,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.144876,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000032,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.036796,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000226,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000391,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.713651,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,187470455.311201,2138324.325624,"ops/s",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.005740,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.045473,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.049532,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.002233,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.000559,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.975216,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000182,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.153817,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000042,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.032749,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000279,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000413,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.694265,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,187899335.193431,1227338.646447,"ops/s",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.757697,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.019129,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.035645,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.002595,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.000815,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.962763,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000243,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.079796,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000043,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.018714,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000220,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000400,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.618577,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,181042070.478268,1034313.105183,"ops/s",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.882631,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.055692,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.046466,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.002913,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.001525,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.993797,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000303,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.145567,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000040,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.036471,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000231,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000414,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.837563,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,157845998.770241,1327029.686173,"ops/s",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.923265,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.039213,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.037515,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.003060,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.002237,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.989144,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000377,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.101674,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000044,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.029822,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000275,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000463,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.821119,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,140194241.226829,586052.963759,"ops/s",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.958165,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.065759,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.052019,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.003590,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.002185,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.995694,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000446,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.147433,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000054,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.039960,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000352,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000494,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.850007,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,134363547.905898,817872.600380,"ops/s",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.973091,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.083157,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.060888,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.003270,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.003700,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,13.012286,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.000645,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.162932,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000064,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.039776,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000402,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000526,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.956471,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,129938742.625757,565110.729002,"ops/s",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,0.982322,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.053334,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.051753,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.003960,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.004344,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,12.996532,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.001074,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.146765,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000087,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.040650,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000515,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000530,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.866671,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,125187585.586497,523512.098380,"ops/s",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,1.004652,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.080247,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.054714,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.003770,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.004486,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,13.010171,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.010580,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.154110,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000215,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.041480,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.000953,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000317,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.947671,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,115627724.299332,638665.572272,"ops/s",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,1.227419,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.079678,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.058129,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.004521,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.009050,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,13.012617,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,0.347392,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.142634,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000659,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.040588,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.001420,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000171,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,90.988720,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,103507035.990670,372081.425396,"ops/s",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,1.490488,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.059971,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.061928,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.004491,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.023517,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,13.022696,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,1.014237,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.140833,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000542,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.047774,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.001546,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000198,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,91.179548,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,100061443.949078,900762.613103,"ops/s",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,1.636879,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.089365,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.066827,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.004394,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.023939,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,13.054928,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,1.300501,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.169242,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.000755,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.059205,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.001714,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000271,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,91.429385,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet","thrpt",4,40,30732326.196764,1902855.641551,"ops/s",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-load-misses","thrpt",4,2,2.010809,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-loads","thrpt",4,2,19.363151,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-dcache-stores","thrpt",4,2,6.239644,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:L1-icache-load-misses","thrpt",4,2,0.014491,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branch-misses","thrpt",4,2,0.079687,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:branches","thrpt",4,2,13.302302,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-load-misses","thrpt",4,2,2.698668,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-loads","thrpt",4,2,19.522360,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-store-misses","thrpt",4,2,0.001826,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:dTLB-stores","thrpt",4,2,6.235821,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-load-misses","thrpt",4,2,0.004974,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:iTLB-loads","thrpt",4,2,0.000684,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBitSet:instructions","thrpt",4,2,93.483709,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,227276865.931318,1065421.113528,"ops/s",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,0.001953,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.036393,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.041004,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.001677,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.000390,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,10.983478,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.000158,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.114167,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000029,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.030073,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.000194,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000334,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.747475,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,227967057.968084,1094391.643063,"ops/s",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,0.002196,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.038155,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.046080,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.001821,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.000377,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,10.983017,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.000151,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.121232,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000027,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.026809,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.000171,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000319,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.269538,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,227488094.016039,1165579.055001,"ops/s",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,0.002484,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.046268,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.048022,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.001649,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.000417,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,10.993480,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.000191,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.116395,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000037,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.030824,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.000201,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000356,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.847281,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,220590635.826749,3222316.343407,"ops/s",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,0.386152,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.014363,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.030620,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.001837,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.000445,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,10.970352,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.000175,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.071899,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000033,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.015771,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.000197,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000347,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.159399,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,221812217.619440,1882356.038621,"ops/s",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,0.694581,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.036224,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.045287,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.002024,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.000413,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,10.985217,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.000159,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.113544,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000035,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.028587,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.000209,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000352,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.781018,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,155300972.624227,1052925.157790,"ops/s",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,0.974041,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.024109,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.040972,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.002724,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.000890,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,10.983857,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.000635,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.114472,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000067,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.029008,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.000370,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000485,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.276632,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,150139628.673692,671406.901317,"ops/s",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,0.991759,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.029834,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.039387,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.002965,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.001613,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,10.986406,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.002364,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.083273,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000157,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.020146,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.000647,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000345,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.274963,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,146544479.291686,722153.242446,"ops/s",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,1.019540,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.022684,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.043253,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.003449,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.002115,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,10.981744,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.025108,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.105318,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000364,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.024680,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.001022,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000151,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.769956,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,131610185.610556,544416.522700,"ops/s",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,1.450890,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.061835,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.056745,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.003605,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.002344,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,11.003703,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,0.764601,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.121742,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000585,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.033532,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.001213,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000137,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.911556,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,125543684.587399,707062.210707,"ops/s",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,1.681832,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.067818,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.051900,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.003963,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.003560,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,11.013663,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,1.126490,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.114877,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000538,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.039862,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.001300,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000148,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.996294,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,120883159.006800,459519.176985,"ops/s",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,1.941920,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.066701,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.057961,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.004200,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.004289,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,11.012477,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,1.402314,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.140748,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000749,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.049852,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.001377,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000179,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,74.017988,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,108406186.294073,582406.851629,"ops/s",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,2.395980,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.064172,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.058329,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.004261,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.004518,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,11.010508,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,1.726519,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.136526,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.000984,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.045655,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.001481,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000179,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.482638,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,87529931.443741,1955927.694142,"ops/s",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,2.594962,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.073273,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.063886,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.005067,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.009322,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,11.027283,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,1.845592,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.149139,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.001220,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.059616,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.001915,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000267,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,74.146192,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,52236198.372609,491642.796386,"ops/s",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,2.846910,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.152230,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.113607,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.009109,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.024525,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,11.088285,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,2.268730,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.251743,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.001259,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.092143,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.003064,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000363,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,73.596518,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,44791183.851884,214906.900295,"ops/s",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,2.967552,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.120575,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.109277,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.009707,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.024510,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,11.064747,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,2.499734,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.227798,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.001357,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.088992,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.003500,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000441,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,74.451386,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray","thrpt",4,40,37389103.890299,90477.383580,"ops/s",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-load-misses","thrpt",4,2,2.804161,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-loads","thrpt",4,2,18.310702,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-dcache-stores","thrpt",4,2,7.181002,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:L1-icache-load-misses","thrpt",4,2,0.011265,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branch-misses","thrpt",4,2,0.078800,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:branches","thrpt",4,2,11.274916,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-load-misses","thrpt",4,2,3.060411,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-loads","thrpt",4,2,18.390751,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-store-misses","thrpt",4,2,0.001505,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:dTLB-stores","thrpt",4,2,7.194463,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-load-misses","thrpt",4,2,0.004221,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:iTLB-loads","thrpt",4,2,0.000530,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.getBoolArray:instructions","thrpt",4,2,75.278465,NaN,"#/op",1000000000 diff --git a/jmh/src/main/resources/bitset/set.csv b/jmh/src/main/resources/bitset/set.csv new file mode 100644 index 0000000000..18b73bf989 --- /dev/null +++ b/jmh/src/main/resources/bitset/set.csv @@ -0,0 +1,449 @@ +"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: size" +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,51896464.026542,75862.136758,"ops/s",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,0.455765,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,12.076844,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.058151,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.007209,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.001604,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,9.997170,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000671,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,12.155867,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000133,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.044563,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000883,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.001497,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,63.823169,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,70106741.257282,5675561.652157,"ops/s",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,0.701408,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,13.051907,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.038773,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.005106,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.001640,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,9.981827,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000487,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,13.108384,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000085,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.035609,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000635,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.001048,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,66.690961,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,95463073.139209,1113608.612106,"ops/s",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.081256,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,13.019534,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.030687,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003994,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.000999,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.961847,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000316,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,13.096411,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000053,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.025559,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000408,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000741,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,67.633459,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,118050031.787664,869821.142403,"ops/s",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.354826,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,11.035931,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.028466,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003085,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.000714,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.968244,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000300,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,11.094508,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000058,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.027209,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000403,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000643,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,66.685716,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,126298073.981831,369299.481879,"ops/s",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.310261,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,13.051825,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.033383,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003348,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.000801,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,9.997344,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000286,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,13.113142,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000045,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.022306,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000356,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000579,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,65.864528,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,130991668.121281,644042.215866,"ops/s",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.331196,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,12.047450,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.028621,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003152,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.001000,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.485817,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000319,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,12.101103,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000064,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.024312,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000369,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000587,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,66.301371,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,128165315.820896,496869.372046,"ops/s",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.377167,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,13.042081,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.031912,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003844,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.001726,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,9.984710,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000382,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,13.099182,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000066,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.020885,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000347,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000563,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,65.795765,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,125195342.161850,1957938.686648,"ops/s",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.384964,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,12.054831,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.031343,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003650,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.002185,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.499255,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000428,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,12.112498,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000084,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.027300,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000379,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000600,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,66.403520,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,133354250.565847,1255106.085613,"ops/s",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.320524,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,12.048234,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.028165,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003275,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.002304,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.488182,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000489,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,12.094041,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000097,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.023713,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000585,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000521,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,66.335488,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,137232624.452804,636350.199734,"ops/s",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.246943,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,13.025392,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.028421,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003476,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.003316,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,9.976549,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000551,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,13.085655,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000081,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.022321,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000476,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000522,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,65.766839,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,143989207.138248,756270.794340,"ops/s",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.182833,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,12.044035,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.027349,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003071,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.004236,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.491392,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.000717,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,12.088728,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.000137,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.026174,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000380,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000468,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,66.391401,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,151241501.714891,916836.288585,"ops/s",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.107189,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,12.041025,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.031621,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.002955,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.004243,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.497239,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.009641,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,12.098803,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.001624,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.024783,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.000804,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000269,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,66.415849,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,144263237.497241,732977.702789,"ops/s",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.295403,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,12.050585,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.033163,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003160,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.008815,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.508266,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.278706,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,12.108627,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.071757,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.030249,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.001102,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000163,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,66.538307,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,135443772.106893,604312.063062,"ops/s",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.597651,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,12.088824,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.049898,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003236,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.023795,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.565162,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,0.822377,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,12.127978,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.217013,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.047233,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.001227,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000186,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,67.051735,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,131423130.250911,685419.143744,"ops/s",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,1.830028,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,11.075647,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.048544,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.003294,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.023619,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,11.044497,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,1.021551,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,11.121959,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.318409,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.047471,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.001220,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000154,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,67.422027,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet","thrpt",4,40,50126275.321495,128366.907520,"ops/s",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-load-misses","thrpt",4,2,2.007914,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-loads","thrpt",4,2,13.283731,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-dcache-stores","thrpt",4,2,2.158816,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:L1-icache-load-misses","thrpt",4,2,0.009154,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branch-misses","thrpt",4,2,0.077561,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:branches","thrpt",4,2,10.255507,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-load-misses","thrpt",4,2,2.580432,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-loads","thrpt",4,2,13.332989,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-store-misses","thrpt",4,2,0.240555,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:dTLB-stores","thrpt",4,2,2.141680,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-load-misses","thrpt",4,2,0.003075,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:iTLB-loads","thrpt",4,2,0.000400,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBitSet:instructions","thrpt",4,2,68.183448,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,103190024.246958,1465075.410304,"ops/s",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,0.387288,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.061946,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.041483,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003577,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.001007,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.999897,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.000288,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.121073,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.000058,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.034064,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.000424,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000703,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.880071,NaN,"#/op",100 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,139443098.218536,1499104.709607,"ops/s",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,0.646658,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.016290,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.026692,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.002577,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.000566,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.966181,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.000281,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.090556,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.000053,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.025779,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.000324,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000544,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.677854,NaN,"#/op",1000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,141884743.566510,786570.828615,"ops/s",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,0.721487,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.046555,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.030607,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.002780,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.000635,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.999213,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.000238,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.100109,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.000048,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.027592,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.000322,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000530,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.883150,NaN,"#/op",5000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,141434121.940795,678907.202147,"ops/s",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,0.737588,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.009752,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.025647,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.002709,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.000564,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.966167,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.000248,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.084263,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.000061,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.022513,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.000310,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000559,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.676130,NaN,"#/op",50000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,141443758.907874,627442.604356,"ops/s",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,0.778842,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.031381,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.028014,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003220,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.000652,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.979226,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.000287,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.089836,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.000071,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.023236,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.000286,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000507,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.734083,NaN,"#/op",100000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,147240354.620049,715098.421473,"ops/s",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,0.974563,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.031177,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.024039,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003099,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.000948,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.989072,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.000372,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.069719,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.000330,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.020618,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.000355,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000477,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.839884,NaN,"#/op",1000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,153622403.885271,1327782.331450,"ops/s",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,0.991925,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.032598,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.024720,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003245,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.001456,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.991914,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.000825,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.079811,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.001852,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.024947,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.000643,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000377,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.870424,NaN,"#/op",2000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,156527596.524201,795077.911203,"ops/s",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,1.014728,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.027806,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.024255,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003058,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.001984,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.990123,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.002815,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.076875,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.018651,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.022515,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.000962,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000127,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.871439,NaN,"#/op",3000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,158079426.644001,913191.923219,"ops/s",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,1.472277,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.052808,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.029994,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003121,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.002145,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,8.011432,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.004486,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.093163,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,0.766815,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.025713,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.001161,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000105,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,53.016947,NaN,"#/op",5000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,157390156.667728,672584.777681,"ops/s",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,1.695306,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.053664,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.031368,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003326,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.003155,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,8.010168,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.005645,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.095965,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,1.128123,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.028504,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.001011,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000110,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,53.003675,NaN,"#/op",7000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,157798980.940213,764697.250786,"ops/s",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,1.952853,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.022777,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.023807,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003257,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.004008,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,7.990682,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.004266,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.059754,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,1.397186,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.019997,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.001003,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000129,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.896245,NaN,"#/op",10000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,150330975.246741,1605620.715961,"ops/s",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,2.378773,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.036047,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.030046,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003117,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.004204,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,8.001242,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.005145,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.078731,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,1.708955,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.023010,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.001044,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000128,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,52.933174,NaN,"#/op",20000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,114316055.929498,3553753.935720,"ops/s",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,2.573253,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.049313,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.038018,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.003989,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.008927,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,8.014444,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.008533,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.094540,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,1.824349,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.033037,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.001348,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000178,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,53.081475,NaN,"#/op",30000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,62800524.051547,1844174.328399,"ops/s",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,2.806845,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.118333,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.069840,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.007308,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.024665,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,8.083796,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.010630,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.175443,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,2.245008,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.067306,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.002569,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000342,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,53.626962,NaN,"#/op",50000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,51085547.708493,526048.863875,"ops/s",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,2.914760,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.140406,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.094680,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.010137,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.024495,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,8.083728,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.010755,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.191453,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,2.472813,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.075312,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.002962,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000380,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,53.631291,NaN,"#/op",70000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray","thrpt",4,40,35331072.282690,115127.559672,"ops/s",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-load-misses","thrpt",4,2,2.877579,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-loads","thrpt",4,2,10.331614,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-dcache-stores","thrpt",4,2,2.181433,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:L1-icache-load-misses","thrpt",4,2,0.013025,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branch-misses","thrpt",4,2,0.078282,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:branches","thrpt",4,2,8.293426,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-load-misses","thrpt",4,2,0.014965,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-loads","thrpt",4,2,10.351742,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-store-misses","thrpt",4,2,3.067687,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:dTLB-stores","thrpt",4,2,2.142323,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-load-misses","thrpt",4,2,0.004301,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:iTLB-loads","thrpt",4,2,0.000614,NaN,"#/op",1000000000 +"com.baeldung.bitset.VectorOfBitsBenchmark.setBoolArray:instructions","thrpt",4,2,55.399010,NaN,"#/op",1000000000 diff --git a/json-2/pom.xml b/json-2/pom.xml index d674d6f86d..f0215a375f 100644 --- a/json-2/pom.xml +++ b/json-2/pom.xml @@ -49,6 +49,66 @@ commons-lang3 ${commons-lang3.version}
+ + + com.fasterxml.jackson.core + jackson-annotations + 2.11.0 + + + com.fasterxml.jackson.core + jackson-databind + 2.11.0 + + + com.io-informatics.oss + jackson-jsonld + 0.1.1 + + + jackson-databind + com.fasterxml.jackson.core + + + jackson-annotations + com.fasterxml.jackson.core + + + jackson-core + com.fasterxml.jackson.core + + + jsonld-java + com.github.jsonld-java + + + + + de.escalon.hypermedia + hydra-jsonld + 0.4.2 + + + jackson-databind + com.fasterxml.jackson.core + + + + + com.github.jsonld-java + jsonld-java + 0.13.0 + + + jackson-core + com.fasterxml.jackson.core + + + jackson-databind + com.fasterxml.jackson.core + + + 0.9.23 diff --git a/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationUnitTest.java b/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationUnitTest.java new file mode 100644 index 0000000000..24968f3847 --- /dev/null +++ b/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationUnitTest.java @@ -0,0 +1,51 @@ +package com.baeldung.jsonld.deserialization.jsonldjava.jackson; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.util.HashMap; + +import org.junit.jupiter.api.Test; + +import com.baeldung.jsonld.deserialization.jsonldjava.jackson.Person.Link; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.jsonldjava.core.JsonLdOptions; +import com.github.jsonldjava.core.JsonLdProcessor; +import com.github.jsonldjava.utils.JsonUtils; + +public class JacksonDeserializationUnitTest { + + @Test + void givenAJsonLdObject_whenCompactIsUsedWithEmptyContext_thenItCanBeDeserializedWithJackson() throws IOException { + String inputJsonLd = "{" + + "\"@context\":{" + + "\"@vocab\":\"http://schema.org/\"," + + "\"knows\":{\"@type\":\"@id\"}" + + "}," + + "\"@type\":\"Person\"," + + "\"@id\":\"http://example.com/person/1234\"," + + "\"name\":\"Example Name\"," + + "\"knows\":\"http://example.com/person/2345\"" + + "}"; + + Object jsonObject = JsonUtils.fromString(inputJsonLd); + Object compact = JsonLdProcessor.compact(jsonObject, new HashMap<>(), new JsonLdOptions()); + String compactContent = JsonUtils.toString(compact); + + assertEquals("{" + + "\"@id\":\"http://example.com/person/1234\"," + + "\"@type\":\"http://schema.org/Person\"," + + "\"http://schema.org/knows\":{\"@id\":\"http://example.com/person/2345\"}," + + "\"http://schema.org/name\":\"Example Name\"" + + "}", compactContent); + + ObjectMapper objectMapper = new ObjectMapper(); + Person person = objectMapper.readValue(compactContent, Person.class); + + Person expectedPerson = new Person("http://example.com/person/1234", "Example Name", new Link("http://example.com/person/2345")); + + assertEquals(expectedPerson.getId(), person.getId()); + assertEquals(expectedPerson.getName(), person.getName()); + assertEquals(expectedPerson.getKnows().getId(), person.getKnows().getId()); + } +} diff --git a/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/Person.java b/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/Person.java new file mode 100644 index 0000000000..fefa676817 --- /dev/null +++ b/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/Person.java @@ -0,0 +1,67 @@ +package com.baeldung.jsonld.deserialization.jsonldjava.jackson; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Person { + @JsonProperty("@id") + private String id; + @JsonProperty("http://schema.org/name") + private String name; + @JsonProperty("http://schema.org/knows") + private Link knows; + + public Person() { + } + + public Person(String id, String name, Link knows) { + this.id = id; + this.name = name; + this.knows = knows; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Link getKnows() { + return knows; + } + + public void setKnows(Link knows) { + this.knows = knows; + } + + public static class Link { + @JsonProperty("@id") + private String id; + + public Link() { + } + + public Link(String id) { + this.id = id; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + } +} diff --git a/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationUnitTest.java b/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationUnitTest.java new file mode 100644 index 0000000000..33395cc438 --- /dev/null +++ b/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationUnitTest.java @@ -0,0 +1,63 @@ +package com.baeldung.jsonld.serialization.hydrajsonld; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.BeanDescription; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationConfig; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; +import com.fasterxml.jackson.databind.ser.std.BeanSerializerBase; + +import de.escalon.hypermedia.hydra.serialize.JacksonHydraSerializer; + +public class HydraJsonldSerializationUnitTest { + @Test + void givenAHydraJsonldAnnotatedObject_whenJacksonHydraSerializerIsUsed_thenAJsonLdDocumentIsGenerated() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(getJacksonHydraSerializerModule()); + objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + + Person person = new Person("http://example.com/person/1234", "Example Name"); + + String personJsonLd = objectMapper.writeValueAsString(person); + + assertEquals("{" + + "\"@context\":{" + + "\"@vocab\":\"http://example.com/vocab/\"," + + "\"name\":\"fullName\"" + + "}," + + "\"@type\":\"person\"," + + "\"name\":\"Example Name\"," + + "\"@id\":\"http://example.com/person/1234\"" + + "}", personJsonLd); + } + + static SimpleModule getJacksonHydraSerializerModule() { + return new SimpleModule() { + + @Override + public void setupModule(SetupContext context) { + super.setupModule(context); + + context.addBeanSerializerModifier(new BeanSerializerModifier() { + + @Override + public JsonSerializer modifySerializer(SerializationConfig config, BeanDescription beanDesc, JsonSerializer serializer) { + + if (serializer instanceof BeanSerializerBase) { + return new JacksonHydraSerializer((BeanSerializerBase) serializer); + } else { + return serializer; + } + } + }); + } + }; + } +} diff --git a/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/Person.java b/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/Person.java new file mode 100644 index 0000000000..3d8573c965 --- /dev/null +++ b/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/Person.java @@ -0,0 +1,28 @@ +package com.baeldung.jsonld.serialization.hydrajsonld; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import de.escalon.hypermedia.hydra.mapping.Expose; +import de.escalon.hypermedia.hydra.mapping.Vocab; + +@Vocab("http://example.com/vocab/") +@Expose("person") +public class Person { + private String id; + private String name; + + public Person(String id, String name) { + this.id = id; + this.name = name; + } + + @JsonProperty("@id") + public String getId() { + return id; + } + + @Expose("fullName") + public String getName() { + return name; + } +} diff --git a/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationUnitTest.java b/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationUnitTest.java new file mode 100644 index 0000000000..9679426acb --- /dev/null +++ b/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.jsonld.serialization.jacksonjsonld; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import ioinformarics.oss.jackson.module.jsonld.JsonldModule; + +public class JacksonJsonLdSerializationUnitTest { + @Test + void givenAJacksonJsonldAnnotatedObject_whenJsonldModuleIsUsed_thenAJsonLdDocumentIsGenerated() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JsonldModule()); + + Person person = new Person("http://example.com/person/1234", "Example Name"); + String personJsonLd = objectMapper.writeValueAsString(person); + + assertEquals("{" + + "\"@type\":\"s:Person\"," + + "\"@context\":{" + + "\"s\":\"http://schema.org/\"," + + "\"name\":\"s:name\"," + + "\"knows\":{\"@id\":\"s:knows\",\"@type\":\"@id\"}" + + "}," + + "\"name\":\"Example Name\"," + + "\"@id\":\"http://example.com/person/1234\"," + + "\"knows\":\"http://example.com/person/2345\"" + + "}", personJsonLd); + } +} diff --git a/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/Person.java b/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/Person.java new file mode 100644 index 0000000000..b63f49840c --- /dev/null +++ b/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/Person.java @@ -0,0 +1,32 @@ +package com.baeldung.jsonld.serialization.jacksonjsonld; + +import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldId; +import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldLink; +import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldNamespace; +import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldProperty; +import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldResource; +import ioinformarics.oss.jackson.module.jsonld.annotation.JsonldType; + +@JsonldResource +@JsonldNamespace(name = "s", uri = "http://schema.org/") +@JsonldType("s:Person") +@JsonldLink(rel = "s:knows", name = "knows", href = "http://example.com/person/2345") +public class Person { + @JsonldId + private String id; + @JsonldProperty("s:name") + private String name; + + public Person(String id, String name) { + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/jsoup/src/test/java/com/baeldung/jsoup/PreservingLineBreaksUnitTest.java b/jsoup/src/test/java/com/baeldung/jsoup/PreservingLineBreaksUnitTest.java new file mode 100644 index 0000000000..0958fa96e2 --- /dev/null +++ b/jsoup/src/test/java/com/baeldung/jsoup/PreservingLineBreaksUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.jsoup; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.safety.Whitelist; +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +public class PreservingLineBreaksUnitTest { + + @Test + public void whenBackSlashNNewLineCharacter_thenPreserveLineBreak() { + String strHTML = "Hello\nworld"; + Document.OutputSettings outputSettings = new Document.OutputSettings(); + outputSettings.prettyPrint(false); + String strWithNewLines = Jsoup.clean(strHTML, "", Whitelist.none(), outputSettings); + assertEquals("Hello\nworld", strWithNewLines); + } + + @Test + public void whenHTMLNewLineCharacters_thenPreserveLineBreak() { + String strHTML = "" + + "Hello" + + "
" + + "World" + + "

Paragraph

" + + ""; + Document jsoupDoc = Jsoup.parse(strHTML); + Document.OutputSettings outputSettings = new Document.OutputSettings(); + outputSettings.prettyPrint(false); + jsoupDoc.outputSettings(outputSettings); + jsoupDoc.select("br").before("\\n"); + jsoupDoc.select("p").before("\\n"); + String str = jsoupDoc.html().replaceAll("\\\\n", "\n"); + String strWithNewLines = + Jsoup.clean(str, "", Whitelist.none(), outputSettings); + assertEquals("Hello\nWorld\nParagraph", strWithNewLines); + } +} diff --git a/kotlin-libraries-2/src/test/kotlin/com/baeldung/kotlin/jackson/JacksonUnitTest.kt b/kotlin-libraries-2/src/test/kotlin/com/baeldung/kotlin/jackson/JacksonUnitTest.kt index 84171d9019..0c72edc2fd 100644 --- a/kotlin-libraries-2/src/test/kotlin/com/baeldung/kotlin/jackson/JacksonUnitTest.kt +++ b/kotlin-libraries-2/src/test/kotlin/com/baeldung/kotlin/jackson/JacksonUnitTest.kt @@ -59,7 +59,11 @@ class JacksonUnitTest { val aMap: Map = mapper.readValue(json) assertEquals(aMap[1], "one") - assertEquals(aMap[2], "two") + assertEquals(aMap[2], "two") + + val sameMap = mapper.readValue>(json) + assertEquals(sameMap[1], "one") + assertEquals(sameMap[2], "two") } @Test @@ -81,7 +85,11 @@ class JacksonUnitTest { val movie1 = Movie("Endgame", "Marvel", 9.2f) val movie2 = Movie("Shazam", "Warner Bros", 7.6f) assertTrue(movieList.contains(movie1)) - assertTrue(movieList.contains(movie2)) + assertTrue(movieList.contains(movie2)) + + val sameList = mapper.readValue>(json) + assertTrue(sameList.contains(movie1)) + assertTrue(sameList.contains(movie2)) } @Test diff --git a/maven-modules/maven-plugins/maven-enforcer/README.md b/maven-modules/maven-plugins/maven-enforcer/README.md deleted file mode 100644 index 44d43050e7..0000000000 --- a/maven-modules/maven-plugins/maven-enforcer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -### Relevant Articles: - -- [Maven Enforcer Plugin](https://www.baeldung.com/maven-enforcer-plugin) diff --git a/maven-modules/optional-dependencies/README.md b/maven-modules/optional-dependencies/README.md new file mode 100644 index 0000000000..6b4d3e7647 --- /dev/null +++ b/maven-modules/optional-dependencies/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- Optional Dependency in Maven \ No newline at end of file diff --git a/maven-modules/optional-dependencies/main-project/pom.xml b/maven-modules/optional-dependencies/main-project/pom.xml new file mode 100644 index 0000000000..6a42683779 --- /dev/null +++ b/maven-modules/optional-dependencies/main-project/pom.xml @@ -0,0 +1,18 @@ + + + 4.0.0 + com.baeldung + main-project + 0.0.1-SNAPSHOT + pom + + + + com.baeldung + project-with-optionals + 0.0.1-SNAPSHOT + + + \ No newline at end of file diff --git a/maven-modules/optional-dependencies/optional-project/pom.xml b/maven-modules/optional-dependencies/optional-project/pom.xml new file mode 100644 index 0000000000..9ad4376c8d --- /dev/null +++ b/maven-modules/optional-dependencies/optional-project/pom.xml @@ -0,0 +1,10 @@ + + + 4.0.0 + com.baeldung + optional-project + 0.0.1-SNAPSHOT + pom + \ No newline at end of file diff --git a/maven-modules/optional-dependencies/pom.xml b/maven-modules/optional-dependencies/pom.xml new file mode 100644 index 0000000000..12d028b2d7 --- /dev/null +++ b/maven-modules/optional-dependencies/pom.xml @@ -0,0 +1,19 @@ + + + + maven-modules + com.baeldung + 0.0.1-SNAPSHOT + + 4.0.0 + + optional-dependencies + pom + + optional-project + project-with-optionals + main-project + + \ No newline at end of file diff --git a/maven-modules/optional-dependencies/project-with-optionals/pom.xml b/maven-modules/optional-dependencies/project-with-optionals/pom.xml new file mode 100644 index 0000000000..6a14f3260d --- /dev/null +++ b/maven-modules/optional-dependencies/project-with-optionals/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + com.baeldung + project-with-optionals + 0.0.1-SNAPSHOT + pom + + + + com.baeldung + optional-project + 0.0.1-SNAPSHOT + true + + + \ No newline at end of file diff --git a/maven-modules/pom.xml b/maven-modules/pom.xml index 528f44bddc..86a7d5756c 100644 --- a/maven-modules/pom.xml +++ b/maven-modules/pom.xml @@ -26,6 +26,7 @@ maven-properties versions-maven-plugin version-collision + optional-dependencies diff --git a/maven-modules/versions-maven-plugin/original/pom.xml b/maven-modules/versions-maven-plugin/original/pom.xml index f81596661e..f705dae5c5 100644 --- a/maven-modules/versions-maven-plugin/original/pom.xml +++ b/maven-modules/versions-maven-plugin/original/pom.xml @@ -58,9 +58,9 @@ - apache.snapshots - Apache Development Snapshot Repository - https://repository.apache.org/content/repositories/snapshots/ + apache.releases + Apache Development Release Repository + https://repository.apache.org/content/repositories/releases/ false diff --git a/maven-modules/versions-maven-plugin/pom.xml b/maven-modules/versions-maven-plugin/pom.xml index 9793f55b28..3a9134ff40 100644 --- a/maven-modules/versions-maven-plugin/pom.xml +++ b/maven-modules/versions-maven-plugin/pom.xml @@ -57,9 +57,9 @@ - apache.snapshots - Apache Development Snapshot Repository - https://repository.apache.org/content/repositories/snapshots/ + apache.releases + Apache Development Release Repository + https://repository.apache.org/content/repositories/releases/ false diff --git a/parent-spring-5/pom.xml b/parent-spring-5/pom.xml index 949e40b021..5893701c68 100644 --- a/parent-spring-5/pom.xml +++ b/parent-spring-5/pom.xml @@ -31,7 +31,7 @@ - 5.2.5.RELEASE + 5.2.8.RELEASE 5.2.3.RELEASE 1.5.10.RELEASE diff --git a/patterns/hexagonal-architecture/pom.xml b/patterns/hexagonal-architecture/pom.xml index 9317a25e56..62f55c2efa 100644 --- a/patterns/hexagonal-architecture/pom.xml +++ b/patterns/hexagonal-architecture/pom.xml @@ -2,18 +2,19 @@ 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.3.0.RELEASE - - com.baeldung hexagonal-architecture 1.0 hexagonal-architecture Project for hexagonal architecture in java + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + 1.8 diff --git a/patterns/hexagonal-architecture/src/test/java/com/baeldung/pattern/hexagonal/domain/services/EmployeeServiceImplTest.java b/patterns/hexagonal-architecture/src/test/java/com/baeldung/pattern/hexagonal/domain/services/EmployeeServiceImplUnitTest.java similarity index 97% rename from patterns/hexagonal-architecture/src/test/java/com/baeldung/pattern/hexagonal/domain/services/EmployeeServiceImplTest.java rename to patterns/hexagonal-architecture/src/test/java/com/baeldung/pattern/hexagonal/domain/services/EmployeeServiceImplUnitTest.java index cadb3b094b..542e45d6f4 100644 --- a/patterns/hexagonal-architecture/src/test/java/com/baeldung/pattern/hexagonal/domain/services/EmployeeServiceImplTest.java +++ b/patterns/hexagonal-architecture/src/test/java/com/baeldung/pattern/hexagonal/domain/services/EmployeeServiceImplUnitTest.java @@ -11,7 +11,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -class EmployeeServiceImplTest { +class EmployeeServiceImplUnitTest { private EmployeeRepository employeeRepository; private EmployeeService testService; diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java new file mode 100644 index 0000000000..8ad689041e --- /dev/null +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java @@ -0,0 +1,49 @@ +package com.baeldung.jdbcmetadata; + +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class DatabaseConfig { + private static final Logger LOG = Logger.getLogger(DatabaseConfig.class); + + private Connection connection; + + public DatabaseConfig() { + try { + Class.forName("org.h2.Driver"); + String url = "jdbc:h2:mem:testdb"; + connection = DriverManager.getConnection(url, "sa", ""); + } catch (ClassNotFoundException | SQLException e) { + LOG.error(e); + } + } + + public Connection getConnection() { + return connection; + } + + public void init() { + createTables(); + createViews(); + } + + private void createTables() { + try { + connection.createStatement().executeUpdate("create table CUSTOMER (ID int primary key auto_increment, NAME VARCHAR(45))"); + connection.createStatement().executeUpdate("create table CUST_ADDRESS (ID VARCHAR(36), CUST_ID int, ADDRESS VARCHAR(45), FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER(ID))"); + } catch (SQLException e) { + LOG.error(e); + } + } + + private void createViews() { + try { + connection.createStatement().executeUpdate("CREATE VIEW CUSTOMER_VIEW AS SELECT * FROM CUSTOMER"); + } catch (SQLException e) { + LOG.error(e); + } + } +} diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java new file mode 100644 index 0000000000..591a14f3b5 --- /dev/null +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java @@ -0,0 +1,30 @@ +package com.baeldung.jdbcmetadata; + +import org.apache.log4j.Logger; + +import java.sql.SQLException; + +public class JdbcMetadataApplication { + + private static final Logger LOG = Logger.getLogger(JdbcMetadataApplication.class); + + public static void main(String[] args) { + DatabaseConfig databaseConfig = new DatabaseConfig(); + databaseConfig.init(); + try { + MetadataExtractor metadataExtractor = new MetadataExtractor(databaseConfig.getConnection()); + metadataExtractor.extractTableInfo(); + metadataExtractor.extractSystemTables(); + metadataExtractor.extractViews(); + String tableName = "CUSTOMER"; + metadataExtractor.extractColumnInfo(tableName); + metadataExtractor.extractPrimaryKeys(tableName); + metadataExtractor.extractForeignKeys("CUST_ADDRESS"); + metadataExtractor.extractDatabaseInfo(); + metadataExtractor.extractUserName(); + metadataExtractor.extractSupportedFeatures(); + } catch (SQLException e) { + LOG.error("Error while executing SQL statements", e); + } + } +} diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/MetadataExtractor.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/MetadataExtractor.java new file mode 100644 index 0000000000..27c615aebc --- /dev/null +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/MetadataExtractor.java @@ -0,0 +1,113 @@ +package com.baeldung.jdbcmetadata; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class MetadataExtractor { + private final DatabaseMetaData databaseMetaData; + + public MetadataExtractor(Connection connection) throws SQLException { + this.databaseMetaData = connection.getMetaData(); + DatabaseMetaData databaseMetaData = connection.getMetaData(); + } + + public void extractTableInfo() throws SQLException { + ResultSet resultSet = databaseMetaData.getTables(null, null, "CUST%", new String[] { "TABLE" }); + while (resultSet.next()) { + // Print the names of existing tables + System.out.println(resultSet.getString("TABLE_NAME")); + System.out.println(resultSet.getString("REMARKS")); + } + } + + public void extractSystemTables() throws SQLException { + ResultSet resultSet = databaseMetaData.getTables(null, null, null, new String[] { "SYSTEM TABLE" }); + while (resultSet.next()) { + // Print the names of system tables + System.out.println(resultSet.getString("TABLE_NAME")); + } + } + + public void extractViews() throws SQLException { + ResultSet resultSet = databaseMetaData.getTables(null, null, null, new String[] { "VIEW" }); + while (resultSet.next()) { + // Print the names of existing views + System.out.println(resultSet.getString("TABLE_NAME")); + } + } + + public void extractColumnInfo(String tableName) throws SQLException { + ResultSet columns = databaseMetaData.getColumns(null, null, tableName, null); + + while (columns.next()) { + String columnName = columns.getString("COLUMN_NAME"); + String columnSize = columns.getString("COLUMN_SIZE"); + String datatype = columns.getString("DATA_TYPE"); + String isNullable = columns.getString("IS_NULLABLE"); + String isAutoIncrement = columns.getString("IS_AUTOINCREMENT"); + System.out.println(String.format("ColumnName: %s, columnSize: %s, datatype: %s, isColumnNullable: %s, isAutoIncrementEnabled: %s", columnName, columnSize, datatype, isNullable, isAutoIncrement)); + } + } + + public void extractPrimaryKeys(String tableName) throws SQLException { + ResultSet primaryKeys = databaseMetaData.getPrimaryKeys(null, null, tableName); + while (primaryKeys.next()) { + String primaryKeyColumnName = primaryKeys.getString("COLUMN_NAME"); + String primaryKeyName = primaryKeys.getString("PK_NAME"); + System.out.println(String.format("columnName:%s, pkName:%s", primaryKeyColumnName, primaryKeyName)); + } + } + + public void fun() throws SQLException { + + } + + public void extractForeignKeys(String tableName) throws SQLException { + ResultSet foreignKeys = databaseMetaData.getImportedKeys(null, null, tableName); + while (foreignKeys.next()) { + String pkTableName = foreignKeys.getString("PKTABLE_NAME"); + String fkTableName = foreignKeys.getString("FKTABLE_NAME"); + String pkColumnName = foreignKeys.getString("PKCOLUMN_NAME"); + String fkColumnName = foreignKeys.getString("FKCOLUMN_NAME"); + System.out.println(String.format("pkTableName:%s, fkTableName:%s, pkColumnName:%s, fkColumnName:%s", pkTableName, fkTableName, pkColumnName, fkColumnName)); + } + } + + public void extractDatabaseInfo() throws SQLException { + String productName = databaseMetaData.getDatabaseProductName(); + String productVersion = databaseMetaData.getDatabaseProductVersion(); + + String driverName = databaseMetaData.getDriverName(); + String driverVersion = databaseMetaData.getDriverVersion(); + + System.out.println(String.format("Product name:%s, Product version:%s", productName, productVersion)); + System.out.println(String.format("Driver name:%s, Driver Version:%s", driverName, driverVersion)); + } + + public void extractUserName() throws SQLException { + String userName = databaseMetaData.getUserName(); + System.out.println(userName); + ResultSet schemas = databaseMetaData.getSchemas(); + while (schemas.next()) { + String table_schem = schemas.getString("TABLE_SCHEM"); + String table_catalog = schemas.getString("TABLE_CATALOG"); + System.out.println(String.format("Table_schema:%s, Table_catalog:%s", table_schem, table_catalog)); + } + } + + public void extractSupportedFeatures() throws SQLException { + System.out.println("Supports scrollable & Updatable Result Set: " + databaseMetaData.supportsResultSetConcurrency(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE)); + System.out.println("Supports Full Outer Joins: " + databaseMetaData.supportsFullOuterJoins()); + System.out.println("Supports Stored Procedures: " + databaseMetaData.supportsStoredProcedures()); + System.out.println("Supports Subqueries in 'EXISTS': " + databaseMetaData.supportsSubqueriesInExists()); + System.out.println("Supports Transactions: " + databaseMetaData.supportsTransactions()); + System.out.println("Supports Core SQL Grammar: " + databaseMetaData.supportsCoreSQLGrammar()); + System.out.println("Supports Batch Updates: " + databaseMetaData.supportsBatchUpdates()); + System.out.println("Supports Column Aliasing: " + databaseMetaData.supportsColumnAliasing()); + System.out.println("Supports Savepoints: " + databaseMetaData.supportsSavepoints()); + System.out.println("Supports Union All: " + databaseMetaData.supportsUnionAll()); + System.out.println("Supports Union: " + databaseMetaData.supportsUnion()); + } +} diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcLiveTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcLiveTest.java index da0c6bffe5..81179aade9 100644 --- a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcLiveTest.java +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcLiveTest.java @@ -1,6 +1,9 @@ package com.baeldung.jdbc; -import static org.junit.Assert.*; +import org.apache.log4j.Logger; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; import java.sql.CallableStatement; import java.sql.Connection; @@ -16,10 +19,8 @@ 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; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class JdbcLiveTest { @@ -33,10 +34,11 @@ public class JdbcLiveTest { con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDb?noAccessToProcedureBodies=true", "user1", "pass"); - Statement stmt = con.createStatement(); + try (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); + 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); + } } @@ -101,10 +103,8 @@ public class JdbcLiveTest { @Test public void whenCallProcedure_thenCorrect() { - - try { - String preparedSql = "{call insertEmployee(?,?,?,?)}"; - CallableStatement cstmt = con.prepareCall(preparedSql); + String preparedSql = "{call insertEmployee(?,?,?,?)}"; + try (CallableStatement cstmt = con.prepareCall(preparedSql)) { cstmt.setString(2, "ana"); cstmt.setString(3, "tester"); cstmt.setDouble(4, 2000); @@ -121,9 +121,10 @@ public class JdbcLiveTest { 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")); + try (ResultSet tablesResultSet = dbmd.getTables(null, null, "%", null)) { + while (tablesResultSet.next()) { + LOG.info(tablesResultSet.getString("TABLE_NAME")); + } } String selectSql = "SELECT * FROM employees"; diff --git a/persistence-modules/flyway-repair/pom.xml b/persistence-modules/flyway-repair/pom.xml index 4d61bd5c0e..5a5c4103f6 100644 --- a/persistence-modules/flyway-repair/pom.xml +++ b/persistence-modules/flyway-repair/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - flyway + flyway-repair flyway-repair jar Flyway Repair Demo diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/PhoneNumberType.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/PhoneNumberType.java index 9f09352bec..79caa3d6fd 100644 --- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/PhoneNumberType.java +++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/PhoneNumberType.java @@ -57,6 +57,8 @@ public class PhoneNumberType implements UserType { if (Objects.isNull(value)) { st.setNull(index, Types.INTEGER); + st.setNull(index+1, Types.INTEGER); + st.setNull(index+2, Types.INTEGER); } else { PhoneNumber employeeNumber = (PhoneNumber) value; st.setInt(index,employeeNumber.getCountryCode()); diff --git a/persistence-modules/java-jpa-3/README.md b/persistence-modules/java-jpa-3/README.md new file mode 100644 index 0000000000..01fdf05b53 --- /dev/null +++ b/persistence-modules/java-jpa-3/README.md @@ -0,0 +1,3 @@ +## JPA in Java + +This module contains articles about the Java Persistence API (JPA) in Java. diff --git a/persistence-modules/java-jpa-3/pom.xml b/persistence-modules/java-jpa-3/pom.xml new file mode 100644 index 0000000000..da18ae3046 --- /dev/null +++ b/persistence-modules/java-jpa-3/pom.xml @@ -0,0 +1,83 @@ + + + 4.0.0 + java-jpa-3 + java-jpa-3 + + + com.baeldung + persistence-modules + 1.0.0-SNAPSHOT + + + + + org.hibernate + hibernate-core + ${hibernate.version} + + + org.hibernate + hibernate-jpamodelgen + ${hibernate.version} + + + com.h2database + h2 + ${h2.version} + + + + + javax.persistence + javax.persistence-api + ${javax.persistence-api.version} + + + + + org.eclipse.persistence + eclipselink + ${eclipselink.version} + runtime + + + org.postgresql + postgresql + ${postgres.version} + runtime + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + -proc:none + + + + + + + 5.4.14.Final + 2.7.4 + 42.2.5 + 2.2 + 3.11.1 + 3.5.1 + 3.3.3 + 3.0.0 + + + diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java new file mode 100644 index 0000000000..3fe858936a --- /dev/null +++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java @@ -0,0 +1,53 @@ +package com.baeldung.jpa.equality; + +import javax.persistence.*; + +@Entity +public class EqualByBusinessKey { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String email; + + public EqualByBusinessKey() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Override + public int hashCode() { + return java.util.Objects.hashCode(email); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (obj instanceof EqualByBusinessKey) { + if (((EqualByBusinessKey) obj).getEmail() == getEmail()) { + return true; + } + } + return false; + } +} diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java new file mode 100644 index 0000000000..cebfb5fcec --- /dev/null +++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java @@ -0,0 +1,55 @@ +package com.baeldung.jpa.equality; + +import javax.persistence.*; + +@Entity +public class EqualById { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String email; + + public EqualById() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (obj instanceof EqualById) { + return ((EqualById) obj).getId().equals(getId()); + } + return false; + } +} diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java new file mode 100644 index 0000000000..b312845b61 --- /dev/null +++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java @@ -0,0 +1,36 @@ +package com.baeldung.jpa.equality; + +import javax.persistence.*; + +@Entity +public class EqualByJavaDefault implements Cloneable{ + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String email; + + public EqualByJavaDefault() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } +} diff --git a/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000000..28a929f912 --- /dev/null +++ b/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,25 @@ + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.equality.EqualByJavaDefault + com.baeldung.jpa.equality.EqualById + com.baeldung.jpa.equality.EqualByBusinessKey + true + + + + + + + + + + + + + diff --git a/persistence-modules/java-jpa-3/src/main/resources/logback.xml b/persistence-modules/java-jpa-3/src/main/resources/logback.xml new file mode 100644 index 0000000000..2527fea245 --- /dev/null +++ b/persistence-modules/java-jpa-3/src/main/resources/logback.xml @@ -0,0 +1,15 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - + %msg%n + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java b/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java new file mode 100644 index 0000000000..03ac11b6fd --- /dev/null +++ b/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java @@ -0,0 +1,74 @@ +package com.baeldung.jpa.equality; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +public class EqualityUnitTest { + + private static EntityManagerFactory factory; + private static EntityManager entityManager; + + @BeforeClass + public static void setup() { + factory = Persistence.createEntityManagerFactory("jpa-h2-equality"); + entityManager = factory.createEntityManager(); + } + + @Test + public void givenObjectBasedEquality_whenUsingEquals_thenEqualIsBasedOnInstance() throws CloneNotSupportedException { + EqualByJavaDefault object1 = new EqualByJavaDefault(); + EqualByJavaDefault object2 = new EqualByJavaDefault(); + + object1.setEmail("test.user@domain.com"); + + entityManager.getTransaction().begin(); + entityManager.persist(object1); + entityManager.getTransaction().commit(); + + object2 = (EqualByJavaDefault) object1.clone(); + + Assert.assertNotEquals(object1, object2); + Assert.assertEquals(object1.getId(), object2.getId()); + Assert.assertEquals(object1.getEmail(), object2.getEmail()); + } + + @Test + public void givenIdBasedEquality_whenUsingEquals_thenEqualIsBasedOnId() { + EqualById object1 = new EqualById(); + EqualById object2 = new EqualById(); + + object1.setEmail("test.user.1@domain.com"); + object2.setEmail("test.user.2@domain.com"); + + entityManager.getTransaction().begin(); + entityManager.persist(object1); + entityManager.getTransaction().commit(); + + object2.setId(object1.getId()); + + Assert.assertEquals(object1, object2); + Assert.assertEquals(object1.getId(), object2.getId()); + Assert.assertNotEquals(object1.getEmail(), object2.getEmail()); + } + + @Test + public void givenBusinessKeyBasedEquality_whenUsingEquals_thenEqualIsBasedOnBusinessKey() { + EqualByBusinessKey object1 = new EqualByBusinessKey(); + EqualByBusinessKey object2 = new EqualByBusinessKey(); + + object1.setEmail("test.user@test-domain.com"); + object2.setEmail("test.user@test-domain.com"); + + entityManager.getTransaction().begin(); + entityManager.persist(object1); + entityManager.getTransaction().commit(); + + Assert.assertEquals(object1, object2); + Assert.assertNotEquals(object1.getId(), object2.getId()); + } +} diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index f1154f203b..78f1afd39a 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -19,7 +19,7 @@ core-java-persistence deltaspike elasticsearch - flyway + flyway-repair hbase hibernate5 hibernate-mapping @@ -59,11 +59,16 @@ spring-data-elasticsearch spring-data-gemfire spring-data-geode - spring-data-jpa - spring-data-jpa-2 - spring-data-jpa-3 - spring-data-jpa-4 - spring-data-jpa-5 + + spring-data-jpa-annotations + spring-data-jpa-crud + spring-data-jpa-enterprise + spring-data-jpa-filtering + spring-data-jpa-query + spring-data-jpa-repo + + spring-data-jdbc + spring-data-keyvalue spring-data-mongodb spring-data-neo4j diff --git a/persistence-modules/spring-data-elasticsearch/README.md b/persistence-modules/spring-data-elasticsearch/README.md index 9f68a25243..22126c2f00 100644 --- a/persistence-modules/spring-data-elasticsearch/README.md +++ b/persistence-modules/spring-data-elasticsearch/README.md @@ -6,7 +6,6 @@ - [Guide to Elasticsearch in Java](https://www.baeldung.com/elasticsearch-java) - [Geospatial Support in ElasticSearch](https://www.baeldung.com/elasticsearch-geo-spatial) - [A Simple Tagging Implementation with Elasticsearch](https://www.baeldung.com/elasticsearch-tagging) -- [Introduction to Spring Data Elasticsearch (evaluation)](https://www.baeldung.com/spring-data-elasticsearch-test-2) ### Build the Project with Tests Running ``` diff --git a/persistence-modules/spring-data-jdbc/pom.xml b/persistence-modules/spring-data-jdbc/pom.xml new file mode 100644 index 0000000000..ff034104d7 --- /dev/null +++ b/persistence-modules/spring-data-jdbc/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + spring-data-jdbc + spring-data-jdbc + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-data-jdbc + + + com.h2database + h2 + runtime + + + diff --git a/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/Application.java b/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/Application.java new file mode 100644 index 0000000000..7f50aa87f1 --- /dev/null +++ b/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/Application.java @@ -0,0 +1,59 @@ +package com.baeldung.springdatajdbcintro; + +import java.util.Optional; + +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import com.baeldung.springdatajdbcintro.entity.Person; +import com.baeldung.springdatajdbcintro.repository.PersonRepository; + +import ch.qos.logback.classic.Logger; + +@SpringBootApplication +public class Application implements CommandLineRunner { + + private static final Logger LOGGER = (Logger) LoggerFactory.getLogger(Application.class); + + @Autowired + private PersonRepository repository; + @Autowired + private DatabaseSeeder dbSeeder; + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Override + public void run(String... arg0) throws Exception { + + LOGGER.info("@@ Inserting Data...."); + dbSeeder.insertData(); + LOGGER.info("@@ findAll() call..."); + repository.findAll() + .forEach(person -> LOGGER.info(person.toString())); + LOGGER.info("@@ findById() call..."); + Optional optionalPerson = repository.findById(1L); + optionalPerson.ifPresent(person -> LOGGER.info(person.toString())); + LOGGER.info("@@ save() call..."); + Person newPerson = new Person("Franz", "Kafka"); + Person result = repository.save(newPerson); + LOGGER.info(result.toString()); + LOGGER.info("@@ delete"); + optionalPerson.ifPresent(person -> repository.delete(person)); + LOGGER.info("@@ findAll() call..."); + repository.findAll() + .forEach(person -> LOGGER.info(person.toString())); + LOGGER.info("@@ findByFirstName() call..."); + repository.findByFirstName("Franz") + .forEach(person -> LOGGER.info(person.toString())); + LOGGER.info("@@ findByFirstName() call..."); + repository.updateByFirstName(2L, "Date Inferno"); + repository.findAll() + .forEach(person -> LOGGER.info(person.toString())); + + } +} diff --git a/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/DatabaseSeeder.java b/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/DatabaseSeeder.java new file mode 100644 index 0000000000..97055fd7ac --- /dev/null +++ b/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/DatabaseSeeder.java @@ -0,0 +1,26 @@ +package com.baeldung.springdatajdbcintro; + +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; + +import ch.qos.logback.classic.Logger; + +@Component +public class DatabaseSeeder { + + private static final Logger LOGGER = (Logger) LoggerFactory.getLogger(DatabaseSeeder.class); + + @Autowired + private JdbcTemplate jdbcTemplate; + + public void insertData() { + LOGGER.info("> Inserting data..."); + jdbcTemplate.execute("INSERT INTO Person(first_name,last_name) VALUES('Victor', 'Hygo')"); + jdbcTemplate.execute("INSERT INTO Person(first_name,last_name) VALUES('Dante', 'Alighieri')"); + jdbcTemplate.execute("INSERT INTO Person(first_name,last_name) VALUES('Stefan', 'Zweig')"); + jdbcTemplate.execute("INSERT INTO Person(first_name,last_name) VALUES('Oscar', 'Wilde')"); + } + +} diff --git a/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/entity/Person.java b/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/entity/Person.java new file mode 100644 index 0000000000..7c4c1eec73 --- /dev/null +++ b/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/entity/Person.java @@ -0,0 +1,57 @@ +package com.baeldung.springdatajdbcintro.entity; + +import org.springframework.data.annotation.Id; + +public class Person { + + @Id + private long id; + private String firstName; + private String lastName; + + public Person() { + super(); + } + + public Person(long id, String firstName, String lastName) { + super(); + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + } + + public Person(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + @Override + public String toString() { + return "Person [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]"; + } + +} diff --git a/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/repository/PersonRepository.java b/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/repository/PersonRepository.java new file mode 100644 index 0000000000..2f2329caec --- /dev/null +++ b/persistence-modules/spring-data-jdbc/src/main/java/com/baeldung/springdatajdbcintro/repository/PersonRepository.java @@ -0,0 +1,23 @@ +package com.baeldung.springdatajdbcintro.repository; + +import java.util.List; + +import org.springframework.data.jdbc.repository.query.Modifying; +import org.springframework.data.jdbc.repository.query.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.baeldung.springdatajdbcintro.entity.Person; + +@Repository +public interface PersonRepository extends CrudRepository { + + @Query("select * from person where first_name=:firstName") + List findByFirstName(@Param("firstName") String firstName); + + @Modifying + @Query("UPDATE person SET first_name = :name WHERE id = :id") + boolean updateByFirstName(@Param("id") Long id, @Param("name") String name); + +} diff --git a/persistence-modules/spring-data-jdbc/src/main/resources/application.properties b/persistence-modules/spring-data-jdbc/src/main/resources/application.properties new file mode 100644 index 0000000000..45099222fc --- /dev/null +++ b/persistence-modules/spring-data-jdbc/src/main/resources/application.properties @@ -0,0 +1,8 @@ +#H2 DB +spring.jpa.hibernate.ddl-auto=none +spring.h2.console.enabled=true +spring.datasource.url=jdbc:h2:mem:persondb +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password=test +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect \ No newline at end of file diff --git a/persistence-modules/spring-data-jdbc/src/main/resources/schema.sql b/persistence-modules/spring-data-jdbc/src/main/resources/schema.sql new file mode 100644 index 0000000000..5618822bf9 --- /dev/null +++ b/persistence-modules/spring-data-jdbc/src/main/resources/schema.sql @@ -0,0 +1,5 @@ +create table person ( + id integer identity primary key, + first_name varchar(30), + last_name varchar(30) +); \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-2/README.md b/persistence-modules/spring-data-jpa-2/README.md deleted file mode 100644 index e59aca7c69..0000000000 --- a/persistence-modules/spring-data-jpa-2/README.md +++ /dev/null @@ -1,12 +0,0 @@ -### Relevant Articles: -- [Spring Data JPA – Derived Delete Methods](https://www.baeldung.com/spring-data-jpa-deleteby) -- [JPA Join Types](https://www.baeldung.com/jpa-join-types) -- [Case Insensitive Queries with Spring Data Repository](https://www.baeldung.com/spring-data-case-insensitive-queries) -- [The Exists Query in Spring Data](https://www.baeldung.com/spring-data-exists-query) -- [Spring Data JPA Repository Populators](https://www.baeldung.com/spring-data-jpa-repository-populators) -- [Spring Data JPA and Null Parameters](https://www.baeldung.com/spring-data-jpa-null-parameters) -- [Spring Data JPA Projections](https://www.baeldung.com/spring-data-jpa-projections) -- [JPA @Embedded And @Embeddable](https://www.baeldung.com/jpa-embedded-embeddable) -- [Spring Data JPA Delete and Relationships](https://www.baeldung.com/spring-data-jpa-delete) -- [Spring Data JPA and Named Entity Graphs](https://www.baeldung.com/spring-data-jpa-named-entity-graphs) -- [Customizing the Result of JPA Queries with Aggregation Functions](https://www.baeldung.com/jpa-queries-custom-result-with-aggregation-functions) diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/model/BasicUser.java b/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/model/BasicUser.java deleted file mode 100644 index 2dc9c18cf6..0000000000 --- a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/model/BasicUser.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.model; - -import javax.persistence.*; -import java.util.Set; - -@Entity -@Table(name = "users") -public class BasicUser { - - @Id - @GeneratedValue - private Long id; - - private String username; - - @ElementCollection - private Set permissions; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public Set getPermissions() { - return permissions; - } - - public void setPermissions(Set permissions) { - this.permissions = permissions; - } -} diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/dao/product/ProductRepository.java b/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/dao/product/ProductRepository.java deleted file mode 100644 index 6ce9bcad45..0000000000 --- a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/dao/product/ProductRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.multipledb.dao.product; - -import java.util.List; - -import org.springframework.data.domain.Pageable; -import org.springframework.data.repository.PagingAndSortingRepository; - -import com.baeldung.multipledb.model.product.Product; - -public interface ProductRepository extends PagingAndSortingRepository { - - List findAllByPrice(double price, Pageable pageable); -} diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/repository/UserRepository.java b/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/repository/UserRepository.java deleted file mode 100644 index f683be402f..0000000000 --- a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/repository/UserRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.repository; - -import java.util.Optional; - -import org.springframework.data.jpa.repository.JpaRepository; - -import com.baeldung.model.BasicUser; - -public interface UserRepository extends JpaRepository { - - Optional findSummaryByUsername(String username); - - Optional findByUsername(String username); -} diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/multipledb/ProductRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/multipledb/ProductRepositoryIntegrationTest.java deleted file mode 100644 index 831790af95..0000000000 --- a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/multipledb/ProductRepositoryIntegrationTest.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.baeldung.multipledb; - -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasSize; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -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.context.SpringBootTest; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.transaction.annotation.EnableTransactionManagement; -import org.springframework.transaction.annotation.Transactional; - -import com.baeldung.multipledb.dao.product.ProductRepository; -import com.baeldung.multipledb.model.product.Product; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes=MultipleDbApplication.class) -@EnableTransactionManagement -public class ProductRepositoryIntegrationTest { - - @Autowired - private ProductRepository productRepository; - - @Before - @Transactional("productTransactionManager") - public void setUp() { - productRepository.save(Product.from(1001, "Book", 21)); - productRepository.save(Product.from(1002, "Coffee", 10)); - productRepository.save(Product.from(1003, "Jeans", 30)); - productRepository.save(Product.from(1004, "Shirt", 32)); - productRepository.save(Product.from(1005, "Bacon", 10)); - } - - @Test - public void whenRequestingFirstPageOfSizeTwo_ThenReturnFirstPage() { - Pageable pageRequest = PageRequest.of(0, 2); - - Page result = productRepository.findAll(pageRequest); - - assertThat(result.getContent(), hasSize(2)); - assertTrue(result.stream() - .map(Product::getId) - .allMatch(id -> Arrays.asList(1001, 1002) - .contains(id))); - } - - @Test - public void whenRequestingSecondPageOfSizeTwo_ThenReturnSecondPage() { - Pageable pageRequest = PageRequest.of(1, 2); - - Page result = productRepository.findAll(pageRequest); - - assertThat(result.getContent(), hasSize(2)); - assertTrue(result.stream() - .map(Product::getId) - .allMatch(id -> Arrays.asList(1003, 1004) - .contains(id))); - } - - @Test - public void whenRequestingLastPage_ThenReturnLastPageWithRemData() { - Pageable pageRequest = PageRequest.of(2, 2); - - Page result = productRepository.findAll(pageRequest); - - assertThat(result.getContent(), hasSize(1)); - assertTrue(result.stream() - .map(Product::getId) - .allMatch(id -> Arrays.asList(1005) - .contains(id))); - } - - @Test - public void whenSortingByNameAscAndPaging_ThenReturnSortedPagedResult() { - Pageable pageRequest = PageRequest.of(0, 3, Sort.by("name")); - - Page result = productRepository.findAll(pageRequest); - - assertThat(result.getContent(), hasSize(3)); - assertThat(result.getContent() - .stream() - .map(Product::getId) - .collect(Collectors.toList()), equalTo(Arrays.asList(1005, 1001, 1002))); - - } - - @Test - public void whenSortingByPriceDescAndPaging_ThenReturnSortedPagedResult() { - Pageable pageRequest = PageRequest.of(0, 3, Sort.by("price") - .descending()); - - Page result = productRepository.findAll(pageRequest); - - assertThat(result.getContent(), hasSize(3)); - assertThat(result.getContent() - .stream() - .map(Product::getId) - .collect(Collectors.toList()), equalTo(Arrays.asList(1004, 1003, 1001))); - - } - - @Test - public void whenSortingByPriceDescAndNameAscAndPaging_ThenReturnSortedPagedResult() { - Pageable pageRequest = PageRequest.of(0, 5, Sort.by("price") - .descending() - .and(Sort.by("name"))); - - Page result = productRepository.findAll(pageRequest); - - assertThat(result.getContent(), hasSize(5)); - assertThat(result.getContent() - .stream() - .map(Product::getId) - .collect(Collectors.toList()), equalTo(Arrays.asList(1004, 1003, 1001, 1005, 1002))); - - } - - @Test - public void whenRequestingFirstPageOfSizeTwoUsingCustomMethod_ThenReturnFirstPage() { - Pageable pageRequest = PageRequest.of(0, 2); - - List result = productRepository.findAllByPrice(10, pageRequest); - - assertThat(result, hasSize(2)); - assertTrue(result.stream() - .map(Product::getId) - .allMatch(id -> Arrays.asList(1002, 1005) - .contains(id))); - } -} diff --git a/persistence-modules/spring-data-jpa-3/src/test/resources/application-tc-auto.properties b/persistence-modules/spring-data-jpa-3/src/test/resources/application-tc-auto.properties deleted file mode 100644 index c3005d861f..0000000000 --- a/persistence-modules/spring-data-jpa-3/src/test/resources/application-tc-auto.properties +++ /dev/null @@ -1,4 +0,0 @@ -# configuration for test containers testing -spring.datasource.url=${DB_URL} -spring.datasource.username=${DB_USERNAME} -spring.datasource.password=${DB_PASSWORD} diff --git a/persistence-modules/spring-data-jpa-3/src/test/resources/application-tc.properties b/persistence-modules/spring-data-jpa-3/src/test/resources/application-tc.properties deleted file mode 100644 index 3bf8693d53..0000000000 --- a/persistence-modules/spring-data-jpa-3/src/test/resources/application-tc.properties +++ /dev/null @@ -1,4 +0,0 @@ -# configuration for Test Containers testing -spring.datasource.driver-class-name=org.postgresql.Driver -spring.jpa.hibernate.ddl-auto=create-drop -spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false diff --git a/persistence-modules/spring-data-jpa-4/create.sql b/persistence-modules/spring-data-jpa-4/create.sql deleted file mode 100644 index 1bbe1640a7..0000000000 --- a/persistence-modules/spring-data-jpa-4/create.sql +++ /dev/null @@ -1,2 +0,0 @@ -create table PERSON (ID int8 not null, FIRST_NAME varchar(255), LAST_NAME varchar(255), primary key (ID)) -create table person (id int8 not null, first_name varchar(255), last_name varchar(255), primary key (id)) diff --git a/persistence-modules/spring-data-jpa-annotations/README.md b/persistence-modules/spring-data-jpa-annotations/README.md new file mode 100644 index 0000000000..5f1c8dbc27 --- /dev/null +++ b/persistence-modules/spring-data-jpa-annotations/README.md @@ -0,0 +1,23 @@ +## Spring Data JPA - Annotations + +This module contains articles about annotations used in Spring Data JPA + +### Relevant articles + +- [Spring Data Annotations](https://www.baeldung.com/spring-data-annotations) +- [DDD Aggregates and @DomainEvents](https://www.baeldung.com/spring-data-ddd) +- [JPA @Embedded And @Embeddable](https://www.baeldung.com/jpa-embedded-embeddable) +- [Spring Data JPA @Modifying Annotation](https://www.baeldung.com/spring-data-jpa-modifying-annotation) +- [Spring JPA @Embedded and @EmbeddedId](https://www.baeldung.com/spring-jpa-embedded-method-parameters) +- [Programmatic Transaction Management in Spring](https://www.baeldung.com/spring-programmatic-transaction-management) +- [JPA Entity Lifecycle Events](https://www.baeldung.com/jpa-entity-lifecycle-events) + +### Eclipse Config +After importing the project into Eclipse, you may see the following error: +"No persistence xml file found in project" + +This can be ignored: +- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" +Or: +- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator + diff --git a/persistence-modules/spring-data-jpa-annotations/pom.xml b/persistence-modules/spring-data-jpa-annotations/pom.xml new file mode 100644 index 0000000000..67b788c404 --- /dev/null +++ b/persistence-modules/spring-data-jpa-annotations/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + spring-data-jpa-annotations + spring-data-jpa-annotations + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.hibernate + hibernate-ehcache + + + org.hibernate + hibernate-envers + + + + com.h2database + h2 + + + + + org.testcontainers + postgresql + ${testcontainers.postgresql.version} + test + + + + org.postgresql + postgresql + + + + + org.springframework.security + spring-security-test + test + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + + com.google.guava + guava + ${guava.version} + + + + + com.baeldung.boot.Application + 1.10.6 + 42.2.5 + 21.0 + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/Application.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/Application.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/Application.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/Application.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate2.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate2.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate2.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate2.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate2Repository.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate2Repository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate2Repository.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate2Repository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate3.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate3.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate3.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate3.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate3Repository.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate3Repository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/Aggregate3Repository.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/Aggregate3Repository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/AggregateRepository.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/AggregateRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/AggregateRepository.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/AggregateRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/DddConfig.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/DddConfig.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/DddConfig.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/DddConfig.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/DomainEvent.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/DomainEvent.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/DomainEvent.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/DomainEvent.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/DomainService.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/DomainService.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/ddd/event/DomainService.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/boot/ddd/event/DomainService.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/BookApplication.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/composite/BookApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/BookApplication.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/composite/BookApplication.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/Book.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/composite/entity/Book.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/Book.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/composite/entity/Book.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/BookId.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/composite/entity/BookId.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/BookId.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/composite/entity/BookId.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/repository/BookRepository.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/composite/repository/BookRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/repository/BookRepository.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/composite/repository/BookRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/embeddable/model/Company.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/embeddable/model/Company.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/embeddable/model/Company.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/embeddable/model/Company.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/embeddable/model/ContactPerson.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/embeddable/model/ContactPerson.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/embeddable/model/ContactPerson.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/embeddable/model/ContactPerson.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/embeddable/repositories/CompanyRepository.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/embeddable/repositories/CompanyRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/embeddable/repositories/CompanyRepository.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/embeddable/repositories/CompanyRepository.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/lifecycleevents/SpringBootLifecycleEventApplication.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/lifecycleevents/SpringBootLifecycleEventApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/lifecycleevents/SpringBootLifecycleEventApplication.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/lifecycleevents/SpringBootLifecycleEventApplication.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/lifecycleevents/model/AuditTrailListener.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/lifecycleevents/model/AuditTrailListener.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/lifecycleevents/model/AuditTrailListener.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/lifecycleevents/model/AuditTrailListener.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/lifecycleevents/model/User.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/lifecycleevents/model/User.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/lifecycleevents/model/User.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/lifecycleevents/model/User.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/lifecycleevents/repository/UserRepository.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/lifecycleevents/repository/UserRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/lifecycleevents/repository/UserRepository.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/lifecycleevents/repository/UserRepository.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/tx/TxApplication.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/tx/TxApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/tx/TxApplication.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/tx/TxApplication.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/tx/model/Payment.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/tx/model/Payment.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/tx/model/Payment.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/tx/model/Payment.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-annotations/src/main/resources/application.properties similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/resources/application.properties rename to persistence-modules/spring-data-jpa-annotations/src/main/resources/application.properties diff --git a/persistence-modules/spring-data-jpa/src/main/resources/ddd.properties b/persistence-modules/spring-data-jpa-annotations/src/main/resources/ddd.properties similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/resources/ddd.properties rename to persistence-modules/spring-data-jpa-annotations/src/main/resources/ddd.properties diff --git a/persistence-modules/spring-data-jpa-3/src/main/resources/logback.xml b/persistence-modules/spring-data-jpa-annotations/src/main/resources/logback.xml similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/resources/logback.xml rename to persistence-modules/spring-data-jpa-annotations/src/main/resources/logback.xml diff --git a/persistence-modules/spring-data-jpa/src/main/resources/persistence.properties b/persistence-modules/spring-data-jpa-annotations/src/main/resources/persistence.properties similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/resources/persistence.properties rename to persistence-modules/spring-data-jpa-annotations/src/main/resources/persistence.properties diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/ddd/event/Aggregate2EventsIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/boot/ddd/event/Aggregate2EventsIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/ddd/event/Aggregate2EventsIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/boot/ddd/event/Aggregate2EventsIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/ddd/event/Aggregate3EventsIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/boot/ddd/event/Aggregate3EventsIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/ddd/event/Aggregate3EventsIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/boot/ddd/event/Aggregate3EventsIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/ddd/event/AggregateEventsIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/boot/ddd/event/AggregateEventsIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/ddd/event/AggregateEventsIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/boot/ddd/event/AggregateEventsIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/ddd/event/TestEventHandler.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/boot/ddd/event/TestEventHandler.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/ddd/event/TestEventHandler.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/boot/ddd/event/TestEventHandler.java diff --git a/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/embeddable/EmbeddableIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/embeddable/EmbeddableIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/embeddable/EmbeddableIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/embeddable/EmbeddableIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/tx/ManualTransactionIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/tx/ManualTransactionIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/tx/ManualTransactionIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/tx/ManualTransactionIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/lifecycleevents/UserRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/lifecycleevents/UserRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/lifecycleevents/UserRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/lifecycleevents/UserRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/README.md b/persistence-modules/spring-data-jpa-crud/README.md similarity index 55% rename from persistence-modules/spring-data-jpa-3/README.md rename to persistence-modules/spring-data-jpa-crud/README.md index bac52bf114..dc0c78c87e 100644 --- a/persistence-modules/spring-data-jpa-3/README.md +++ b/persistence-modules/spring-data-jpa-crud/README.md @@ -1,14 +1,15 @@ +## Spring Data JPA - CRUD + +This module contains articles about CRUD operations in Spring Data JPA + ### Relevant Articles: -- [Limiting Query Results with JPA and Spring Data JPA](https://www.baeldung.com/jpa-limit-query-results) -- [Sorting Query Results with Spring Data](https://www.baeldung.com/spring-data-sorting) +- [Spring Data JPA – Derived Delete Methods](https://www.baeldung.com/spring-data-jpa-deleteby) +- [Spring Data JPA Delete and Relationships](https://www.baeldung.com/spring-data-jpa-delete) - [INSERT Statement in JPA](https://www.baeldung.com/jpa-insert) -- [Pagination and Sorting using Spring Data JPA](https://www.baeldung.com/spring-data-jpa-pagination-sorting) -- [Spring Data JPA Query by Example](https://www.baeldung.com/spring-data-query-by-example) -- [DB Integration Tests with Spring Boot and Testcontainers](https://www.baeldung.com/spring-boot-testcontainers-integration-test) -- [Spring Data JPA @Modifying Annotation](https://www.baeldung.com/spring-data-jpa-modifying-annotation) - [Spring Data JPA Batch Inserts](https://www.baeldung.com/spring-data-jpa-batch-inserts) - [Batch Insert/Update with Hibernate/JPA](https://www.baeldung.com/jpa-hibernate-batch-insert-update) - [Difference Between save() and saveAndFlush() in Spring Data JPA](https://www.baeldung.com/spring-data-jpa-save-saveandflush) +- [Generate Database Schema with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-generate-db-schema) ### Eclipse Config After importing the project into Eclipse, you may see the following error: diff --git a/persistence-modules/spring-data-jpa-3/pom.xml b/persistence-modules/spring-data-jpa-crud/pom.xml similarity index 96% rename from persistence-modules/spring-data-jpa-3/pom.xml rename to persistence-modules/spring-data-jpa-crud/pom.xml index d02d089ba3..1708d14fc2 100644 --- a/persistence-modules/spring-data-jpa-3/pom.xml +++ b/persistence-modules/spring-data-jpa-crud/pom.xml @@ -4,8 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - spring-data-jpa-3 - spring-data-jpa-3 + spring-data-jpa-crud + spring-data-jpa-crud com.baeldung diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/Application.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/Application.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/Application.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/Application.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/batchinserts/DatasourceProxyBeanPostProcessor.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/batchinserts/DatasourceProxyBeanPostProcessor.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/batchinserts/DatasourceProxyBeanPostProcessor.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/batchinserts/DatasourceProxyBeanPostProcessor.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/batchinserts/model/School.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/batchinserts/model/School.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/batchinserts/model/School.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/batchinserts/model/School.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/batchinserts/model/Student.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/batchinserts/model/Student.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/batchinserts/model/Student.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/batchinserts/model/Student.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/Application.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/Application.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/Application.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/Application.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/CustomerRepository.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/daos/CustomerRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/CustomerRepository.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/daos/CustomerRepository.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/impl/PersonInsertRepository.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/daos/impl/PersonInsertRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/impl/PersonInsertRepository.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/daos/impl/PersonInsertRepository.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/domain/Customer.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/domain/Customer.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/domain/Customer.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/domain/Customer.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/domain/Person.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/domain/Person.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/domain/Person.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/domain/Person.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/web/controllers/CustomerController.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/web/controllers/CustomerController.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/web/controllers/CustomerController.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/boot/web/controllers/CustomerController.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/datajpadelete/entity/Book.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/datajpadelete/entity/Book.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/datajpadelete/entity/Book.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/datajpadelete/entity/Book.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/datajpadelete/entity/Category.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/datajpadelete/entity/Category.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/datajpadelete/entity/Category.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/datajpadelete/entity/Category.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/datajpadelete/repository/BookRepository.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/datajpadelete/repository/BookRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/datajpadelete/repository/BookRepository.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/datajpadelete/repository/BookRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/datajpadelete/repository/CategoryRepository.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/datajpadelete/repository/CategoryRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/datajpadelete/repository/CategoryRepository.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/datajpadelete/repository/CategoryRepository.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/entity/Employee.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/entity/Employee.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/entity/Employee.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/entity/Employee.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Fruit.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/entity/Fruit.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Fruit.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/entity/Fruit.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/repository/EmployeeRepository.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/repository/EmployeeRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/repository/EmployeeRepository.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/repository/EmployeeRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/FruitRepository.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/repository/FruitRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/FruitRepository.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/repository/FruitRepository.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/AccountApplication.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/AccountApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/AccountApplication.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/AccountApplication.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/HibernateUtil.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/HibernateUtil.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/HibernateUtil.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/HibernateUtil.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/Account.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/model/Account.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/Account.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/model/Account.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/AccountSetting.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/model/AccountSetting.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/AccountSetting.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/model/AccountSetting.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountRepository.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/repository/AccountRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountRepository.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/repository/AccountRepository.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountSettingRepository.java b/persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/repository/AccountSettingRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountSettingRepository.java rename to persistence-modules/spring-data-jpa-crud/src/main/java/com/baeldung/schemageneration/repository/AccountSettingRepository.java diff --git a/persistence-modules/spring-data-jpa-crud/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-crud/src/main/resources/application.properties new file mode 100644 index 0000000000..af0df308cd --- /dev/null +++ b/persistence-modules/spring-data-jpa-crud/src/main/resources/application.properties @@ -0,0 +1,14 @@ +spring.main.allow-bean-definition-overriding=true + +spring.jpa.properties.hibernate.jdbc.batch_size=4 +spring.jpa.properties.hibernate.order_inserts=true +spring.jpa.properties.hibernate.order_updates=true +spring.jpa.properties.hibernate.generate_statistics=true + +# JPA-Schema-Generation +# Use below configuration to generate database schema create commands based on the entity models +# and export them into the create.sql file +#spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create +#spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql +#spring.jpa.properties.javax.persistence.schema-generation.scripts.create-source=metadata +#spring.jpa.properties.hibernate.format_sql=true \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa/src/main/resources/logback.xml b/persistence-modules/spring-data-jpa-crud/src/main/resources/logback.xml similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/resources/logback.xml rename to persistence-modules/spring-data-jpa-crud/src/main/resources/logback.xml diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/SpringContextTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/SpringContextTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/SpringJpaContextIntegrationTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/SpringJpaContextIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/SpringJpaContextIntegrationTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/SpringJpaContextIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/batchinserts/BatchInsertIntegrationTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/batchinserts/BatchInsertIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/batchinserts/BatchInsertIntegrationTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/batchinserts/BatchInsertIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/batchinserts/JpaBatchInsertsIntegrationTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/batchinserts/JpaBatchInsertsIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/batchinserts/JpaBatchInsertsIntegrationTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/batchinserts/JpaBatchInsertsIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/batchinserts/JpaNoBatchInsertsIntegrationTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/batchinserts/JpaNoBatchInsertsIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/batchinserts/JpaNoBatchInsertsIntegrationTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/batchinserts/JpaNoBatchInsertsIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/batchinserts/TestObjectHelper.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/batchinserts/TestObjectHelper.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/batchinserts/TestObjectHelper.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/batchinserts/TestObjectHelper.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/daos/PersonInsertRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/boot/daos/PersonInsertRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/daos/PersonInsertRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/boot/daos/PersonInsertRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/datajpadelete/DeleteFromRepositoryUnitTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/datajpadelete/DeleteFromRepositoryUnitTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/datajpadelete/DeleteFromRepositoryUnitTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/datajpadelete/DeleteFromRepositoryUnitTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/datajpadelete/DeleteInRelationshipsUnitTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/datajpadelete/DeleteInRelationshipsUnitTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/datajpadelete/DeleteInRelationshipsUnitTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/datajpadelete/DeleteInRelationshipsUnitTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/repository/EmployeeRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/repository/EmployeeRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/repository/EmployeeRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/repository/EmployeeRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/FruitRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/repository/FruitRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/FruitRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/repository/FruitRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/schemageneration/AccountRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/schemageneration/AccountRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/schemageneration/AccountRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-crud/src/test/java/com/baeldung/schemageneration/AccountRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/resources/application-batchinserts.properties b/persistence-modules/spring-data-jpa-crud/src/test/resources/application-batchinserts.properties similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/resources/application-batchinserts.properties rename to persistence-modules/spring-data-jpa-crud/src/test/resources/application-batchinserts.properties diff --git a/persistence-modules/spring-data-jpa-3/src/test/resources/application-test.properties b/persistence-modules/spring-data-jpa-crud/src/test/resources/application-test.properties similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/resources/application-test.properties rename to persistence-modules/spring-data-jpa-crud/src/test/resources/application-test.properties diff --git a/persistence-modules/spring-data-jpa-2/src/test/resources/test-fruit-data.sql b/persistence-modules/spring-data-jpa-crud/src/test/resources/test-fruit-data.sql similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/resources/test-fruit-data.sql rename to persistence-modules/spring-data-jpa-crud/src/test/resources/test-fruit-data.sql diff --git a/persistence-modules/spring-data-jpa-4/README.md b/persistence-modules/spring-data-jpa-enterprise/README.md similarity index 51% rename from persistence-modules/spring-data-jpa-4/README.md rename to persistence-modules/spring-data-jpa-enterprise/README.md index 085dfcb366..81398b1f00 100644 --- a/persistence-modules/spring-data-jpa-4/README.md +++ b/persistence-modules/spring-data-jpa-enterprise/README.md @@ -1,12 +1,17 @@ +## Spring Data JPA - Enterprise + +This module contains articles about Spring Data JPA used in enterprise applications such as transactions, sessions, naming conventions and more + ### Relevant Articles: -- [Derived Query Methods in Spring Data JPA Repositories](https://www.baeldung.com/spring-data-derived-queries) -- [LIKE Queries in Spring JPA Repositories](https://www.baeldung.com/spring-jpa-like-queries) + +- [Spring JPA – Multiple Databases](https://www.baeldung.com/spring-data-jpa-multiple-databases) +- [Spring Data Java 8 Support](https://www.baeldung.com/spring-data-java-8) +- [Pagination and Sorting using Spring Data JPA](https://www.baeldung.com/spring-data-jpa-pagination-sorting) +- [DB Integration Tests with Spring Boot and Testcontainers](https://www.baeldung.com/spring-boot-testcontainers-integration-test) - [A Guide to Spring’s Open Session In View](https://www.baeldung.com/spring-open-session-in-view) -- [Programmatic Transaction Management in Spring](https://www.baeldung.com/spring-programmatic-transaction-management) -- [JPA Entity Lifecycle Events](https://www.baeldung.com/jpa-entity-lifecycle-events) - [Working with Lazy Element Collections in JPA](https://www.baeldung.com/java-jpa-lazy-collections) -- [Calling Stored Procedures from Spring Data JPA Repositories](https://www.baeldung.com/spring-data-jpa-stored-procedures) - [Custom Naming Convention with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-custom-naming) +- [Partial Data Update with Spring Data](https://www.baeldung.com/spring-data-partial-update) ### Eclipse Config After importing the project into Eclipse, you may see the following error: @@ -16,3 +21,4 @@ This can be ignored: - Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" Or: - Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator + diff --git a/persistence-modules/spring-data-jpa-5/pom.xml b/persistence-modules/spring-data-jpa-enterprise/pom.xml similarity index 71% rename from persistence-modules/spring-data-jpa-5/pom.xml rename to persistence-modules/spring-data-jpa-enterprise/pom.xml index db58a16062..093059ad78 100644 --- a/persistence-modules/spring-data-jpa-5/pom.xml +++ b/persistence-modules/spring-data-jpa-enterprise/pom.xml @@ -3,8 +3,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - spring-data-jpa-5 - spring-data-jpa-5 + spring-data-jpa-enterprise + spring-data-jpa-enterprise com.baeldung @@ -38,14 +38,39 @@ com.h2database h2 + + + org.hibernate + hibernate-envers + + + com.google.guava + guava + ${guava.version} + + org.mapstruct mapstruct-jdk8 ${mapstruct.version} provided + + + org.springframework.security + spring-security-test + test + + + + org.testcontainers + postgresql + ${testcontainers.version} + test + + @@ -75,6 +100,8 @@ 1.1.1.RELEASE 2.1.9.RELEASE 1.3.1.Final + 21.0 + 1.12.2
diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/MultipleDbApplication.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/Application.java similarity index 58% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/MultipleDbApplication.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/Application.java index 3b9aa2cc18..3ea3d113da 100644 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/MultipleDbApplication.java +++ b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/Application.java @@ -1,14 +1,13 @@ -package com.baeldung.multipledb; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class MultipleDbApplication { - - public static void main(String[] args) { - SpringApplication.run(MultipleDbApplication.class, args); - } - -} - +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/Application.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/Application.java new file mode 100644 index 0000000000..d9da2c53b6 --- /dev/null +++ b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/Application.java @@ -0,0 +1,17 @@ +package com.baeldung.boot; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@SpringBootApplication +@EnableJpaRepositories("com.baeldung.boot") +@EntityScan("com.baeldung.boot") +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/config/PersistenceConfiguration.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/config/PersistenceConfiguration.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/config/PersistenceConfiguration.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/config/PersistenceConfiguration.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/IBarCrudRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/IBarCrudRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/IBarCrudRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/IBarCrudRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/IFooDao.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/IFooDao.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/IFooDao.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/IFooDao.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/user/UserRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/user/UserRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/user/UserRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/user/UserRepository.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustom.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustom.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustom.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustom.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustomImpl.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustomImpl.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustomImpl.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustomImpl.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Bar.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/domain/Bar.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Bar.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/domain/Bar.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Foo.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/domain/Foo.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Foo.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/domain/Foo.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/domain/Possession.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/domain/Possession.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/domain/Possession.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/domain/Possession.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/domain/User.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/domain/User.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/domain/User.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/domain/User.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/IBarService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/IBarService.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/IBarService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/IBarService.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/IFooService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/IFooService.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/IFooService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/IFooService.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/IOperations.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/IOperations.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/IOperations.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/IOperations.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/impl/AbstractService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/impl/AbstractService.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/impl/AbstractService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/impl/AbstractService.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/impl/AbstractSpringDataJpaService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/impl/AbstractSpringDataJpaService.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/impl/AbstractSpringDataJpaService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/impl/AbstractSpringDataJpaService.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/impl/BarSpringDataJpaService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/impl/BarSpringDataJpaService.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/impl/BarSpringDataJpaService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/impl/BarSpringDataJpaService.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/impl/FooService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/impl/FooService.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/services/impl/FooService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/services/impl/FooService.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/elementcollection/ElementCollectionApplication.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/elementcollection/ElementCollectionApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/elementcollection/ElementCollectionApplication.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/elementcollection/ElementCollectionApplication.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/elementcollection/model/Employee.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/elementcollection/model/Employee.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/elementcollection/model/Employee.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/elementcollection/model/Employee.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/elementcollection/model/Phone.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/elementcollection/model/Phone.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/elementcollection/model/Phone.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/elementcollection/model/Phone.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/elementcollection/repository/EmployeeRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/elementcollection/repository/EmployeeRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/elementcollection/repository/EmployeeRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/elementcollection/repository/EmployeeRepository.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/MultipleDbApplication.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/MultipleDbApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/MultipleDbApplication.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/MultipleDbApplication.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceProductAutoConfiguration.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/PersistenceProductAutoConfiguration.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceProductAutoConfiguration.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/PersistenceProductAutoConfiguration.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/PersistenceProductConfiguration.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/PersistenceProductConfiguration.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/PersistenceProductConfiguration.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/PersistenceProductConfiguration.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceUserAutoConfiguration.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/PersistenceUserAutoConfiguration.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceUserAutoConfiguration.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/PersistenceUserAutoConfiguration.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceUserConfiguration.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/PersistenceUserConfiguration.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceUserConfiguration.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/PersistenceUserConfiguration.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/dao/product/ProductRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/dao/product/ProductRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/dao/product/ProductRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/dao/product/ProductRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/dao/user/PossessionRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/dao/user/PossessionRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/dao/user/PossessionRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/dao/user/PossessionRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/dao/user/UserRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/dao/user/UserRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/dao/user/UserRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/dao/user/UserRepository.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/model/product/Product.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/model/product/Product.java old mode 100644 new mode 100755 similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/multipledb/model/product/Product.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/model/product/Product.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/model/user/PossessionMultipleDB.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/model/user/PossessionMultipleDB.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/model/user/PossessionMultipleDB.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/model/user/PossessionMultipleDB.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/model/user/UserMultipleDB.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/model/user/UserMultipleDB.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/model/user/UserMultipleDB.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/multipledb/model/user/UserMultipleDB.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/Person.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/Person.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/Person.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/Person.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/PersonRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/PersonRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/PersonRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/PersonRepository.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategy.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategy.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategy.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategy.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategy.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategy.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategy.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategy.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/SpringDataJpaNamingConventionApplication.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/SpringDataJpaNamingConventionApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/SpringDataJpaNamingConventionApplication.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/SpringDataJpaNamingConventionApplication.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategy.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategy.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategy.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategy.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategy.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategy.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategy.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategy.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/OsivApplication.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/OsivApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/OsivApplication.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/OsivApplication.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/model/BasicUser.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/model/BasicUser.java similarity index 96% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/model/BasicUser.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/model/BasicUser.java index 98f4e379d4..a4f8e4e5f2 100644 --- a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/model/BasicUser.java +++ b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/model/BasicUser.java @@ -4,7 +4,7 @@ import javax.persistence.*; import java.util.Set; @Entity -@Table(name = "users") +@Table(name = "basic_users") public class BasicUser { @Id diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/repository/BasicUserRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/repository/BasicUserRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/repository/BasicUserRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/repository/BasicUserRepository.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/service/SimpleUserService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/service/SimpleUserService.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/service/SimpleUserService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/service/SimpleUserService.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/service/UserService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/service/UserService.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/service/UserService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/service/UserService.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/web/DetailedUserDto.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/web/DetailedUserDto.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/web/DetailedUserDto.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/web/DetailedUserDto.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/web/UserController.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/web/UserController.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/osiv/web/UserController.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/web/UserController.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/PartialUpdateApplication.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/PartialUpdateApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/PartialUpdateApplication.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/PartialUpdateApplication.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/model/ContactPhone.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/model/ContactPhone.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/model/ContactPhone.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/model/ContactPhone.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/model/Customer.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/model/Customer.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/model/Customer.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/model/Customer.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/model/CustomerDto.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/model/CustomerDto.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/model/CustomerDto.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/model/CustomerDto.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/model/CustomerStructured.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/model/CustomerStructured.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/model/CustomerStructured.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/model/CustomerStructured.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/repository/ContactPhoneRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/repository/ContactPhoneRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/repository/ContactPhoneRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/repository/ContactPhoneRepository.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/repository/CustomerRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/repository/CustomerRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/repository/CustomerRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/repository/CustomerRepository.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/repository/CustomerStructuredRepository.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/repository/CustomerStructuredRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/repository/CustomerStructuredRepository.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/repository/CustomerStructuredRepository.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/service/CustomerService.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/service/CustomerService.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/service/CustomerService.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/service/CustomerService.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/util/CustomerMapper.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/util/CustomerMapper.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/partialupdate/util/CustomerMapper.java rename to persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/partialupdate/util/CustomerMapper.java diff --git a/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-enterprise/src/main/resources/application.properties similarity index 76% rename from persistence-modules/spring-data-jpa-5/src/main/resources/application.properties rename to persistence-modules/spring-data-jpa-enterprise/src/main/resources/application.properties index f55ad438ff..29326c6061 100644 --- a/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties +++ b/persistence-modules/spring-data-jpa-enterprise/src/main/resources/application.properties @@ -10,4 +10,7 @@ spring.datasource.url=jdbc:h2:mem:baeldung #spring.jpa.properties.hibernate.format_sql=true spring.jpa.show-sql=true +spring.main.allow-bean-definition-overriding=true +#hibernate.dialect=org.hibernate.dialect.H2Dialect +spring.jpa.properties.hibernate.id.new_generator_mappings=false \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa/src/main/resources/persistence-multiple-db-boot.properties b/persistence-modules/spring-data-jpa-enterprise/src/main/resources/persistence-multiple-db-boot.properties similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/resources/persistence-multiple-db-boot.properties rename to persistence-modules/spring-data-jpa-enterprise/src/main/resources/persistence-multiple-db-boot.properties diff --git a/persistence-modules/spring-data-jpa-3/src/main/resources/persistence-multiple-db.properties b/persistence-modules/spring-data-jpa-enterprise/src/main/resources/persistence-multiple-db.properties similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/resources/persistence-multiple-db.properties rename to persistence-modules/spring-data-jpa-enterprise/src/main/resources/persistence-multiple-db.properties diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/SpringContextTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/SpringContextTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/SpringJpaContextIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/SpringJpaContextIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/SpringJpaContextIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/SpringJpaContextIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/services/AbstractServicePersistenceIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/services/AbstractServicePersistenceIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/services/AbstractServicePersistenceIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/services/AbstractServicePersistenceIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/services/FooServicePersistenceIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/services/FooServicePersistenceIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/services/FooServicePersistenceIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/services/FooServicePersistenceIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/services/SpringDataJPABarAuditIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/services/SpringDataJPABarAuditIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/services/SpringDataJPABarAuditIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/services/SpringDataJPABarAuditIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/elementcollection/ElementCollectionIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/elementcollection/ElementCollectionIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/elementcollection/ElementCollectionIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/elementcollection/ElementCollectionIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/multipledb/JpaMultipleDBIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/multipledb/JpaMultipleDBIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/multipledb/JpaMultipleDBIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/multipledb/JpaMultipleDBIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/multipledb/ProductRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/multipledb/ProductRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/multipledb/ProductRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/multipledb/ProductRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategyH2IntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategyH2IntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategyH2IntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategyH2IntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategyPostgresLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategyPostgresLiveTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategyPostgresLiveTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/QuotedLowerCaseNamingStrategyPostgresLiveTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategyH2IntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategyH2IntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategyH2IntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategyH2IntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategyPostgresLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategyPostgresLiveTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategyPostgresLiveTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/QuotedUpperCaseNamingStrategyPostgresLiveTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/SpringPhysicalNamingStrategyH2IntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/SpringPhysicalNamingStrategyH2IntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/SpringPhysicalNamingStrategyH2IntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/SpringPhysicalNamingStrategyH2IntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/SpringPhysicalNamingStrategyPostgresLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/SpringPhysicalNamingStrategyPostgresLiveTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/SpringPhysicalNamingStrategyPostgresLiveTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/SpringPhysicalNamingStrategyPostgresLiveTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategyH2IntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategyH2IntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategyH2IntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategyH2IntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategyPostgresLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategyPostgresLiveTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategyPostgresLiveTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/UnquotedLowerCaseNamingStrategyPostgresLiveTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategyH2IntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategyH2IntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategyH2IntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategyH2IntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategyPostgresLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategyPostgresLiveTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategyPostgresLiveTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/namingstrategy/UnquotedUpperCaseNamingStrategyPostgresLiveTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/osiv/UserControllerIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/osiv/UserControllerIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/osiv/UserControllerIntegrationTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/osiv/UserControllerIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/partialupdate/PartialUpdateUnitTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/partialupdate/PartialUpdateUnitTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/partialupdate/PartialUpdateUnitTest.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/partialupdate/PartialUpdateUnitTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/util/BaeldungPostgresqlContainer.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/util/BaeldungPostgresqlContainer.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/util/BaeldungPostgresqlContainer.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/util/BaeldungPostgresqlContainer.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/util/IDUtil.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/util/IDUtil.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/util/IDUtil.java rename to persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/util/IDUtil.java diff --git a/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/application-test.properties similarity index 100% rename from persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/application-test.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/quoted-lower-case-naming-strategy-on-postgres.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/quoted-lower-case-naming-strategy-on-postgres.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/quoted-lower-case-naming-strategy-on-postgres.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/quoted-lower-case-naming-strategy-on-postgres.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/quoted-lower-case-naming-strategy.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/quoted-lower-case-naming-strategy.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/quoted-lower-case-naming-strategy.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/quoted-lower-case-naming-strategy.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/quoted-upper-case-naming-strategy-on-postgres.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/quoted-upper-case-naming-strategy-on-postgres.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/quoted-upper-case-naming-strategy-on-postgres.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/quoted-upper-case-naming-strategy-on-postgres.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/quoted-upper-case-naming-strategy.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/quoted-upper-case-naming-strategy.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/quoted-upper-case-naming-strategy.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/quoted-upper-case-naming-strategy.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/spring-physical-naming-strategy-on-postgres.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/spring-physical-naming-strategy-on-postgres.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/spring-physical-naming-strategy-on-postgres.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/spring-physical-naming-strategy-on-postgres.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/spring-physical-naming-strategy.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/spring-physical-naming-strategy.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/spring-physical-naming-strategy.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/spring-physical-naming-strategy.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/unquoted-lower-case-naming-strategy-on-postgres.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/unquoted-lower-case-naming-strategy-on-postgres.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/unquoted-lower-case-naming-strategy-on-postgres.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/unquoted-lower-case-naming-strategy-on-postgres.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/unquoted-lower-case-naming-strategy.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/unquoted-lower-case-naming-strategy.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/unquoted-lower-case-naming-strategy.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/unquoted-lower-case-naming-strategy.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/unquoted-upper-case-naming-strategy-on-postgres.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/unquoted-upper-case-naming-strategy-on-postgres.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/unquoted-upper-case-naming-strategy-on-postgres.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/unquoted-upper-case-naming-strategy-on-postgres.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/unquoted-upper-case-naming-strategy.properties b/persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/unquoted-upper-case-naming-strategy.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/com/baeldung/namingstrategy/unquoted-upper-case-naming-strategy.properties rename to persistence-modules/spring-data-jpa-enterprise/src/test/resources/com/baeldung/namingstrategy/unquoted-upper-case-naming-strategy.properties diff --git a/persistence-modules/spring-data-jpa-filtering/README.md b/persistence-modules/spring-data-jpa-filtering/README.md new file mode 100644 index 0000000000..fe2f181154 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/README.md @@ -0,0 +1,19 @@ +## Spring Data JPA - Filtering + +This module contains articles about filtering data using Spring Data JPA + +### Relevant Articles: +- [An Advanced Tagging Implementation with JPA](https://www.baeldung.com/jpa-tagging-advanced) +- [A Simple Tagging Implementation with JPA](https://www.baeldung.com/jpa-tagging) +- [Spring Data JPA and Null Parameters](https://www.baeldung.com/spring-data-jpa-null-parameters) +- [Spring Data JPA Projections](https://www.baeldung.com/spring-data-jpa-projections) + +### Eclipse Config +After importing the project into Eclipse, you may see the following error: +"No persistence xml file found in project" + +This can be ignored: +- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" +Or: +- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator + diff --git a/persistence-modules/spring-data-jpa/pom.xml b/persistence-modules/spring-data-jpa-filtering/pom.xml similarity index 96% rename from persistence-modules/spring-data-jpa/pom.xml rename to persistence-modules/spring-data-jpa-filtering/pom.xml index ddd7e17dcd..2039ef1a37 100644 --- a/persistence-modules/spring-data-jpa/pom.xml +++ b/persistence-modules/spring-data-jpa-filtering/pom.xml @@ -2,8 +2,8 @@ 4.0.0 - spring-data-jpa - spring-data-jpa + spring-data-jpa-filtering + spring-data-jpa-filtering com.baeldung diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/Application.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/Application.java new file mode 100644 index 0000000000..3ea3d113da --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/Application.java @@ -0,0 +1,13 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/config/StudentJpaConfig.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/config/StudentJpaConfig.java new file mode 100644 index 0000000000..08f37ea806 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/config/StudentJpaConfig.java @@ -0,0 +1,68 @@ +package com.baeldung.config; + +import java.util.Properties; + +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@Configuration +@EnableJpaRepositories(basePackages = "com.baeldung.inmemory.persistence.dao") +@PropertySource("persistence-student.properties") +@EnableTransactionManagement +public class StudentJpaConfig { + + @Autowired + private Environment env; + + @Bean + public DataSource dataSource() { + final DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); + dataSource.setUrl(env.getProperty("jdbc.url")); + dataSource.setUsername(env.getProperty("jdbc.user")); + dataSource.setPassword(env.getProperty("jdbc.pass")); + + return dataSource; + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); + em.setDataSource(dataSource()); + em.setPackagesToScan(new String[] { "com.baeldung.inmemory.persistence.model" }); + em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); + em.setJpaProperties(additionalProperties()); + return em; + } + + @Bean + JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { + JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory); + return transactionManager; + } + + final Properties additionalProperties() { + final Properties hibernateProperties = new Properties(); + + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql")); + hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache")); + hibernateProperties.setProperty("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache")); + + return hibernateProperties; + } +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Customer.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/entity/Customer.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Customer.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/entity/Customer.java diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/ManyStudentRepository.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/ManyStudentRepository.java new file mode 100644 index 0000000000..a2aa0c5780 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/ManyStudentRepository.java @@ -0,0 +1,10 @@ +package com.baeldung.inmemory.persistence.dao; + +import com.baeldung.inmemory.persistence.model.ManyStudent; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ManyStudentRepository extends JpaRepository { + List findByManyTags_Name(String name); +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/ManyTagRepository.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/ManyTagRepository.java new file mode 100644 index 0000000000..63337f3cb9 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/ManyTagRepository.java @@ -0,0 +1,7 @@ +package com.baeldung.inmemory.persistence.dao; + +import com.baeldung.inmemory.persistence.model.ManyTag; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ManyTagRepository extends JpaRepository { +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/StudentRepository.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/StudentRepository.java new file mode 100644 index 0000000000..8ac91fbf0c --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/dao/StudentRepository.java @@ -0,0 +1,24 @@ +package com.baeldung.inmemory.persistence.dao; + +import com.baeldung.inmemory.persistence.model.Student; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface StudentRepository extends JpaRepository { + + @Query("SELECT s FROM Student s JOIN s.tags t WHERE t = LOWER(:tag)") + List retrieveByTag(@Param("tag") String tag); + + @Query("SELECT s FROM Student s JOIN s.tags t WHERE s.name = LOWER(:name) AND t = LOWER(:tag)") + List retrieveByNameFilterByTag(@Param("name") String name, @Param("tag") String tag); + + @Query("SELECT s FROM Student s JOIN s.skillTags t WHERE t.name = LOWER(:tagName) AND t.value > :tagValue") + List retrieveByNameFilterByMinimumSkillTag(@Param("tagName") String tagName, @Param("tagValue") int tagValue); + + @Query("SELECT s FROM Student s JOIN s.kvTags t WHERE t.key = LOWER(:key)") + List retrieveByKeyTag(@Param("key") String key); + +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/KVTag.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/KVTag.java new file mode 100644 index 0000000000..1fc186f4ce --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/KVTag.java @@ -0,0 +1,34 @@ +package com.baeldung.inmemory.persistence.model; + +import javax.persistence.Embeddable; + +@Embeddable +public class KVTag { + private String key; + private String value; + + public KVTag() { + } + + public KVTag(String key, String value) { + super(); + this.key = key; + this.value = value; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/LocationTag.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/LocationTag.java new file mode 100644 index 0000000000..b12ad9fbd1 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/LocationTag.java @@ -0,0 +1,40 @@ +package com.baeldung.inmemory.persistence.model; + +import javax.persistence.Embeddable; + +@Embeddable +public class LocationTag { + private String name; + private int xPos; + private int yPos; + + public LocationTag() { + } + + public LocationTag(String name, int xPos, int yPos) { + super(); + this.name = name; + this.xPos = xPos; + this.yPos = yPos; + } + + public String getName() { + return name; + } + + public int getxPos() { + return xPos; + } + + public void setxPos(int xPos) { + this.xPos = xPos; + } + + public int getyPos() { + return yPos; + } + + public void setyPos(int yPos) { + this.yPos = yPos; + } +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/ManyStudent.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/ManyStudent.java new file mode 100644 index 0000000000..190740d582 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/ManyStudent.java @@ -0,0 +1,33 @@ +package com.baeldung.inmemory.persistence.model; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Entity +public class ManyStudent { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + private String name; + + @ManyToMany(cascade = CascadeType.ALL) + @JoinTable(name = "manystudent_manytags", joinColumns = @JoinColumn(name = "manystudent_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "manytag_id", referencedColumnName = "id")) + private Set manyTags = new HashSet<>(); + + public ManyStudent() { + } + + public ManyStudent(String name) { + this.name = name; + } + + public Set getManyTags() { + return manyTags; + } + + public void setManyTags(Set manyTags) { + this.manyTags.addAll(manyTags); + } +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/ManyTag.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/ManyTag.java new file mode 100644 index 0000000000..5af898f7df --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/ManyTag.java @@ -0,0 +1,40 @@ +package com.baeldung.inmemory.persistence.model; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Entity +public class ManyTag { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + private String name; + + @ManyToMany(mappedBy = "manyTags") + private Set students = new HashSet<>(); + + public ManyTag() { + } + + public ManyTag(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Set getStudents() { + return students; + } + + public void setStudents(Set students) { + this.students.addAll(students); + } +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/SkillTag.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/SkillTag.java new file mode 100644 index 0000000000..738b5d0b36 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/SkillTag.java @@ -0,0 +1,30 @@ +package com.baeldung.inmemory.persistence.model; + +import javax.persistence.Embeddable; + +@Embeddable +public class SkillTag { + private String name; + private int value; + + public SkillTag() { + } + + public SkillTag(String name, int value) { + super(); + this.name = name; + this.value = value; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getName() { + return name; + } +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/Student.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/Student.java new file mode 100644 index 0000000000..f0e824e165 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/inmemory/persistence/model/Student.java @@ -0,0 +1,74 @@ +package com.baeldung.inmemory.persistence.model; + +import java.util.ArrayList; +import java.util.List; +import javax.persistence.ElementCollection; +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class Student { + + @Id + private long id; + private String name; + + @ElementCollection + private List tags = new ArrayList<>(); + + @ElementCollection + private List skillTags = new ArrayList<>(); + + @ElementCollection + private List kvTags = new ArrayList<>(); + + public Student() { + } + + public Student(long id, String name) { + super(); + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags.addAll(tags); + } + + public List getSkillTags() { + return skillTags; + } + + public void setSkillTags(List skillTags) { + this.skillTags.addAll(skillTags); + } + + public List getKVTags() { + return this.kvTags; + } + + public void setKVTags(List kvTags) { + this.kvTags.addAll(kvTags); + } + +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/model/Address.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/model/Address.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/model/Address.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/model/Address.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/model/Person.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/model/Person.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/model/Person.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/model/Person.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/repository/AddressRepository.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/repository/AddressRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/repository/AddressRepository.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/repository/AddressRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/repository/PersonRepository.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/repository/PersonRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/repository/PersonRepository.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/repository/PersonRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/view/AddressView.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/view/AddressView.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/view/AddressView.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/view/AddressView.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/view/PersonDto.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/view/PersonDto.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/view/PersonDto.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/view/PersonDto.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/view/PersonView.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/view/PersonView.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/projection/view/PersonView.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/projection/view/PersonView.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/CustomerRepository.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/repository/CustomerRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/CustomerRepository.java rename to persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/repository/CustomerRepository.java diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/resources/persistence-student.properties b/persistence-modules/spring-data-jpa-filtering/src/main/resources/persistence-student.properties new file mode 100644 index 0000000000..d4c82420de --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/main/resources/persistence-student.properties @@ -0,0 +1,11 @@ +jdbc.driverClassName=com.mysql.cj.jdbc.Driver +jdbc.url=jdbc:mysql://localhost:3306/myDb +jdbc.user=tutorialuser +jdbc.pass=tutorialpass + +hibernate.dialect=org.hibernate.dialect.MySQL5Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=create-drop + +hibernate.cache.use_second_level_cache=false +hibernate.cache.use_query_cache=false \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/persistence/repository/AdvancedTaggingIntegrationTest.java b/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/persistence/repository/AdvancedTaggingIntegrationTest.java new file mode 100644 index 0000000000..e98c1fa4a6 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/persistence/repository/AdvancedTaggingIntegrationTest.java @@ -0,0 +1,83 @@ +package com.baeldung.persistence.repository; + +import com.baeldung.config.StudentJpaConfig; +import com.baeldung.inmemory.persistence.dao.ManyStudentRepository; +import com.baeldung.inmemory.persistence.dao.ManyTagRepository; +import com.baeldung.inmemory.persistence.dao.StudentRepository; +import com.baeldung.inmemory.persistence.model.ManyStudent; +import com.baeldung.inmemory.persistence.model.ManyTag; +import com.baeldung.inmemory.persistence.model.SkillTag; +import com.baeldung.inmemory.persistence.model.Student; +import com.baeldung.inmemory.persistence.model.KVTag; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { StudentJpaConfig.class }, loader = AnnotationConfigContextLoader.class) +@Transactional +@DirtiesContext +public class AdvancedTaggingIntegrationTest { + @Resource + private StudentRepository studentRepository; + + @Resource + private ManyStudentRepository manyStudentRepository; + + @Resource + private ManyTagRepository manyTagRepository; + + @Test + public void givenStudentWithSkillTags_whenSave_thenGetByNameAndSkillTag() { + Student student = new Student(1, "Will"); + SkillTag skill1 = new SkillTag("java", 5); + student.setSkillTags(Arrays.asList(skill1)); + studentRepository.save(student); + + Student student2 = new Student(2, "Joe"); + SkillTag skill2 = new SkillTag("java", 1); + student2.setSkillTags(Arrays.asList(skill2)); + studentRepository.save(student2); + + List students = studentRepository.retrieveByNameFilterByMinimumSkillTag("java", 3); + assertEquals("size incorrect", 1, students.size()); + } + + @Test + public void givenStudentWithKVTags_whenSave_thenGetByTagOk() { + Student student = new Student(0, "John"); + student.setKVTags(Arrays.asList(new KVTag("department", "computer science"))); + studentRepository.save(student); + + Student student2 = new Student(1, "James"); + student2.setKVTags(Arrays.asList(new KVTag("department", "humanities"))); + studentRepository.save(student2); + + List students = studentRepository.retrieveByKeyTag("department"); + assertEquals("size incorrect", 2, students.size()); + } + + @Test + public void givenStudentWithManyTags_whenSave_theyGetByTagOk() { + ManyTag tag = new ManyTag("full time"); + manyTagRepository.save(tag); + + ManyStudent student = new ManyStudent("John"); + student.setManyTags(Collections.singleton(tag)); + manyStudentRepository.save(student); + + List students = manyStudentRepository.findByManyTags_Name("full time"); + assertEquals("size incorrect", 1, students.size()); + } +} diff --git a/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/persistence/repository/InMemoryDBIntegrationTest.java b/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/persistence/repository/InMemoryDBIntegrationTest.java new file mode 100644 index 0000000000..d8d867792e --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/persistence/repository/InMemoryDBIntegrationTest.java @@ -0,0 +1,84 @@ +package com.baeldung.persistence.repository; + +import com.baeldung.config.StudentJpaConfig; +import com.baeldung.inmemory.persistence.dao.StudentRepository; +import com.baeldung.inmemory.persistence.model.Student; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { StudentJpaConfig.class }, loader = AnnotationConfigContextLoader.class) +@Transactional +@DirtiesContext +public class InMemoryDBIntegrationTest { + + @Resource + private StudentRepository studentRepository; + + private static final long ID = 1; + private static final String NAME = "john"; + + @Test + public void givenStudent_whenSave_thenGetOk() { + Student student = new Student(ID, NAME); + studentRepository.save(student); + + Student student2 = studentRepository.findById(ID).get(); + assertEquals("name incorrect", NAME, student2.getName()); + } + + @Test + public void givenStudentWithTags_whenSave_thenGetByTagOk() { + Student student = new Student(ID, NAME); + student.setTags(Arrays.asList("full time", "computer science")); + studentRepository.save(student); + + Student student2 = studentRepository.retrieveByTag("full time").get(0); + assertEquals("name incorrect", NAME, student2.getName()); + } + + @Test + public void givenMultipleStudentsWithTags_whenSave_thenGetByTagReturnsCorrectCount() { + Student student = new Student(0, "Larry"); + student.setTags(Arrays.asList("full time", "computer science")); + studentRepository.save(student); + + Student student2 = new Student(1, "Curly"); + student2.setTags(Arrays.asList("part time", "rocket science")); + studentRepository.save(student2); + + Student student3 = new Student(2, "Moe"); + student3.setTags(Arrays.asList("full time", "philosophy")); + studentRepository.save(student3); + + Student student4 = new Student(3, "Shemp"); + student4.setTags(Arrays.asList("part time", "mathematics")); + studentRepository.save(student4); + + List students = studentRepository.retrieveByTag("full time"); + assertEquals("size incorrect", 2, students.size()); + } + + @Test + public void givenStudentWithTags_whenSave_thenGetByNameAndTagOk() { + Student student = new Student(ID, NAME); + student.setTags(Arrays.asList("full time", "computer science")); + studentRepository.save(student); + + Student student2 = studentRepository.retrieveByNameFilterByTag("John", "full time").get(0); + assertEquals("name incorrect", NAME, student2.getName()); + } + +} diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/projection/JpaProjectionIntegrationTest.java b/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/projection/JpaProjectionIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/projection/JpaProjectionIntegrationTest.java rename to persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/projection/JpaProjectionIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/CustomerRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/repository/CustomerRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/CustomerRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/repository/CustomerRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-filtering/src/test/resources/persistence-student.properties b/persistence-modules/spring-data-jpa-filtering/src/test/resources/persistence-student.properties new file mode 100644 index 0000000000..3b6b580630 --- /dev/null +++ b/persistence-modules/spring-data-jpa-filtering/src/test/resources/persistence-student.properties @@ -0,0 +1,9 @@ +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1 + +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=create + +hibernate.cache.use_second_level_cache=false +hibernate.cache.use_query_cache=false \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-2/src/test/resources/projection-clean-up-data.sql b/persistence-modules/spring-data-jpa-filtering/src/test/resources/projection-clean-up-data.sql similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/resources/projection-clean-up-data.sql rename to persistence-modules/spring-data-jpa-filtering/src/test/resources/projection-clean-up-data.sql diff --git a/persistence-modules/spring-data-jpa-2/src/test/resources/projection-insert-data.sql b/persistence-modules/spring-data-jpa-filtering/src/test/resources/projection-insert-data.sql similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/resources/projection-insert-data.sql rename to persistence-modules/spring-data-jpa-filtering/src/test/resources/projection-insert-data.sql diff --git a/persistence-modules/spring-data-jpa-query/README.md b/persistence-modules/spring-data-jpa-query/README.md new file mode 100644 index 0000000000..bfff3c0ef3 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/README.md @@ -0,0 +1,22 @@ +## Spring Data JPA - Query + +This module contains articles about querying data using Spring Data JPA + +### Relevant Articles: +- [Query Entities by Dates and Times with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-query-by-date) +- [The Exists Query in Spring Data](https://www.baeldung.com/spring-data-exists-query) +- [Customizing the Result of JPA Queries with Aggregation Functions](https://www.baeldung.com/jpa-queries-custom-result-with-aggregation-functions) +- [Limiting Query Results with JPA and Spring Data JPA](https://www.baeldung.com/jpa-limit-query-results) +- [Sorting Query Results with Spring Data](https://www.baeldung.com/spring-data-sorting) +- [Spring Data JPA Query by Example](https://www.baeldung.com/spring-data-query-by-example) +- [JPA Join Types](https://www.baeldung.com/jpa-join-types) +- [Spring Data JPA and Named Entity Graphs](https://www.baeldung.com/spring-data-jpa-named-entity-graphs) + +### Eclipse Config +After importing the project into Eclipse, you may see the following error: +"No persistence xml file found in project" + +This can be ignored: +- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" +Or: +- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator diff --git a/persistence-modules/spring-data-jpa-2/pom.xml b/persistence-modules/spring-data-jpa-query/pom.xml similarity index 90% rename from persistence-modules/spring-data-jpa-2/pom.xml rename to persistence-modules/spring-data-jpa-query/pom.xml index 838327de89..71498143c3 100644 --- a/persistence-modules/spring-data-jpa-2/pom.xml +++ b/persistence-modules/spring-data-jpa-query/pom.xml @@ -3,8 +3,8 @@ 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 - spring-data-jpa-2 - spring-data-jpa-2 + spring-data-jpa-query + spring-data-jpa-query com.baeldung diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/Application.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/Application.java new file mode 100644 index 0000000000..3ea3d113da --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/Application.java @@ -0,0 +1,13 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Comment.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Comment.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Post.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Post.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ArticleRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/daos/ArticleRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ArticleRepository.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/daos/ArticleRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Article.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/domain/Article.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Article.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/domain/Article.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/passenger/CustomPassengerRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/CustomPassengerRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/passenger/CustomPassengerRepository.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/CustomPassengerRepository.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/passenger/Passenger.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/passenger/Passenger.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/passenger/PassengerRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/passenger/PassengerRepository.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepository.java diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entitygraph/model/Characteristic.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Characteristic.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entitygraph/model/Characteristic.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Characteristic.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entitygraph/model/Item.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Item.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entitygraph/model/Item.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Item.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entitygraph/repository/CharacteristicsRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/repository/CharacteristicsRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entitygraph/repository/CharacteristicsRepository.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/repository/CharacteristicsRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entitygraph/repository/ItemRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/repository/ItemRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entitygraph/repository/ItemRepository.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/repository/ItemRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/Car.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/exists/Car.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/Car.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/exists/Car.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/CarRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/exists/CarRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/CarRepository.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/exists/CarRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/joins/model/Department.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Department.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/joins/model/Department.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Department.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/joins/model/Employee.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Employee.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/joins/model/Employee.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Employee.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/joins/model/Phone.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Phone.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/joins/model/Phone.java rename to persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Phone.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/resources/apple-fruit-data.xml b/persistence-modules/spring-data-jpa-query/src/main/resources/apple-fruit-data.xml similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/resources/apple-fruit-data.xml rename to persistence-modules/spring-data-jpa-query/src/main/resources/apple-fruit-data.xml diff --git a/persistence-modules/spring-data-jpa-2/src/main/resources/application-joins.properties b/persistence-modules/spring-data-jpa-query/src/main/resources/application-joins.properties similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/resources/application-joins.properties rename to persistence-modules/spring-data-jpa-query/src/main/resources/application-joins.properties diff --git a/persistence-modules/spring-data-jpa-2/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-query/src/main/resources/application.properties similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/resources/application.properties rename to persistence-modules/spring-data-jpa-query/src/main/resources/application.properties diff --git a/persistence-modules/spring-data-jpa-2/src/main/resources/db/import_joins.sql b/persistence-modules/spring-data-jpa-query/src/main/resources/db/import_joins.sql similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/resources/db/import_joins.sql rename to persistence-modules/spring-data-jpa-query/src/main/resources/db/import_joins.sql diff --git a/persistence-modules/spring-data-jpa-2/src/main/resources/fruit-data.json b/persistence-modules/spring-data-jpa-query/src/main/resources/fruit-data.json similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/resources/fruit-data.json rename to persistence-modules/spring-data-jpa-query/src/main/resources/fruit-data.json diff --git a/persistence-modules/spring-data-jpa-2/src/main/resources/guava-fruit-data.xml b/persistence-modules/spring-data-jpa-query/src/main/resources/guava-fruit-data.xml similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/resources/guava-fruit-data.xml rename to persistence-modules/spring-data-jpa-query/src/main/resources/guava-fruit-data.xml diff --git a/persistence-modules/spring-data-jpa-query/src/main/resources/import_entities.sql b/persistence-modules/spring-data-jpa-query/src/main/resources/import_entities.sql new file mode 100644 index 0000000000..4fe18bf4aa --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/main/resources/import_entities.sql @@ -0,0 +1,3 @@ +insert into Article(id, publication_date, publication_time, creation_date_time) values(1, TO_DATE('01/01/2018', 'DD/MM/YYYY'), TO_DATE('15:00', 'HH24:MI'), TO_DATE('31/12/2017 07:30', 'DD/MM/YYYY HH24:MI')); +insert into Article(id, publication_date, publication_time, creation_date_time) values(2, TO_DATE('01/01/2018', 'DD/MM/YYYY'), TO_DATE('15:30', 'HH24:MI'), TO_DATE('15/12/2017 08:00', 'DD/MM/YYYY HH24:MI')); +insert into Article(id, publication_date, publication_time, creation_date_time) values(3, TO_DATE('15/12/2017', 'DD/MM/YYYY'), TO_DATE('16:00', 'HH24:MI'), TO_DATE('01/12/2017 13:45', 'DD/MM/YYYY HH24:MI')); \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/aggregation/SpringDataAggregateIntegrationTest.java b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/aggregation/SpringDataAggregateIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/aggregation/SpringDataAggregateIntegrationTest.java rename to persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/aggregation/SpringDataAggregateIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/ArticleRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/boot/daos/ArticleRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/ArticleRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/boot/daos/ArticleRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/passenger/PassengerRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/boot/passenger/PassengerRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/boot/passenger/PassengerRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/boot/passenger/PassengerRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/entitygraph/EntityGraphIntegrationTest.java b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/entitygraph/EntityGraphIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/entitygraph/EntityGraphIntegrationTest.java rename to persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/entitygraph/EntityGraphIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/joins/JpaJoinsIntegrationTest.java b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/joins/JpaJoinsIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/joins/JpaJoinsIntegrationTest.java rename to persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/joins/JpaJoinsIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/resources/entitygraph-data.sql b/persistence-modules/spring-data-jpa-query/src/test/resources/entitygraph-data.sql similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/resources/entitygraph-data.sql rename to persistence-modules/spring-data-jpa-query/src/test/resources/entitygraph-data.sql diff --git a/persistence-modules/spring-data-jpa-query/src/test/resources/projection-clean-up-data.sql b/persistence-modules/spring-data-jpa-query/src/test/resources/projection-clean-up-data.sql new file mode 100644 index 0000000000..d34f6f0636 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/test/resources/projection-clean-up-data.sql @@ -0,0 +1,2 @@ +DELETE FROM address; +DELETE FROM person; \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query/src/test/resources/projection-insert-data.sql b/persistence-modules/spring-data-jpa-query/src/test/resources/projection-insert-data.sql new file mode 100644 index 0000000000..544dcc4b88 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/test/resources/projection-insert-data.sql @@ -0,0 +1,2 @@ +INSERT INTO person(id,first_name,last_name) VALUES (1,'John','Doe'); +INSERT INTO address(id,person_id,state,city,street,zip_code) VALUES (1,1,'CA', 'Los Angeles', 'Standford Ave', '90001'); \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-2/src/test/resources/test-aggregation-data.sql b/persistence-modules/spring-data-jpa-query/src/test/resources/test-aggregation-data.sql similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/resources/test-aggregation-data.sql rename to persistence-modules/spring-data-jpa-query/src/test/resources/test-aggregation-data.sql diff --git a/persistence-modules/spring-data-jpa-query/src/test/resources/test-fruit-data.sql b/persistence-modules/spring-data-jpa-query/src/test/resources/test-fruit-data.sql new file mode 100644 index 0000000000..d99f42e5a7 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/test/resources/test-fruit-data.sql @@ -0,0 +1,6 @@ +truncate table fruit; + +insert into fruit(id,name,color) values (1,'apple','red'); +insert into fruit(id,name,color) values (2,'custard apple','green'); +insert into fruit(id,name,color) values (3,'mango','yellow'); +insert into fruit(id,name,color) values (4,'guava','green'); \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa/README.md b/persistence-modules/spring-data-jpa-repo/README.md similarity index 53% rename from persistence-modules/spring-data-jpa/README.md rename to persistence-modules/spring-data-jpa-repo/README.md index 1c43edf42b..284a7ac2b5 100644 --- a/persistence-modules/spring-data-jpa/README.md +++ b/persistence-modules/spring-data-jpa-repo/README.md @@ -1,18 +1,16 @@ -========= +## Spring Data JPA - Repo -## Spring Data JPA Example Project +This module contains articles about repositories in Spring Data JPA ### Relevant Articles: -- [Spring JPA – Multiple Databases](https://www.baeldung.com/spring-data-jpa-multiple-databases) -- [Spring Data JPA – Adding a Method in All Repositories](https://www.baeldung.com/spring-data-jpa-method-in-all-repositories) -- [An Advanced Tagging Implementation with JPA](https://www.baeldung.com/jpa-tagging-advanced) -- [Spring Data Annotations](https://www.baeldung.com/spring-data-annotations) -- [Spring Data Java 8 Support](https://www.baeldung.com/spring-data-java-8) -- [A Simple Tagging Implementation with JPA](https://www.baeldung.com/jpa-tagging) -- [Spring Data Composable Repositories](https://www.baeldung.com/spring-data-composable-repositories) -- [Query Entities by Dates and Times with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-query-by-date) -- [DDD Aggregates and @DomainEvents](https://www.baeldung.com/spring-data-ddd) +- [Case Insensitive Queries with Spring Data Repository](https://www.baeldung.com/spring-data-case-insensitive-queries) +- [Derived Query Methods in Spring Data JPA Repositories](https://www.baeldung.com/spring-data-derived-queries) +- [LIKE Queries in Spring JPA Repositories](https://www.baeldung.com/spring-jpa-like-queries) - [Spring Data – CrudRepository save() Method](https://www.baeldung.com/spring-data-crud-repository-save) +- [Spring Data JPA – Adding a Method in All Repositories](https://www.baeldung.com/spring-data-jpa-method-in-all-repositories) +- [Spring Data Composable Repositories](https://www.baeldung.com/spring-data-composable-repositories) +- [Spring Data JPA Repository Populators](https://www.baeldung.com/spring-data-jpa-repository-populators) +- [Calling Stored Procedures from Spring Data JPA Repositories](https://www.baeldung.com/spring-data-jpa-stored-procedures) ### Eclipse Config After importing the project into Eclipse, you may see the following error: @@ -22,4 +20,3 @@ This can be ignored: - Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" Or: - Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator - diff --git a/persistence-modules/spring-data-jpa-4/pom.xml b/persistence-modules/spring-data-jpa-repo/pom.xml similarity index 85% rename from persistence-modules/spring-data-jpa-4/pom.xml rename to persistence-modules/spring-data-jpa-repo/pom.xml index 71fc21527f..984bc1bdff 100644 --- a/persistence-modules/spring-data-jpa-4/pom.xml +++ b/persistence-modules/spring-data-jpa-repo/pom.xml @@ -2,8 +2,8 @@ 4.0.0 - spring-data-jpa-4 - spring-data-jpa-4 + spring-data-jpa-repo + spring-data-jpa-repo com.baeldung @@ -42,6 +42,11 @@ com.h2database h2 + + + org.springframework + spring-oxm + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/Application.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/Application.java similarity index 94% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/Application.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/Application.java index c66921a3ca..47a18b557f 100644 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/Application.java +++ b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/Application.java @@ -1,4 +1,4 @@ -package com.baeldung.boot; +package com.baeldung; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/CustomItemRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/CustomItemRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/CustomItemRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/CustomItemRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/CustomItemTypeRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/CustomItemTypeRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/CustomItemTypeRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/CustomItemTypeRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ExtendedRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/ExtendedRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ExtendedRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/ExtendedRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ExtendedStudentRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/ExtendedStudentRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ExtendedStudentRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/ExtendedStudentRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/InventoryRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/InventoryRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/InventoryRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/InventoryRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ItemTypeRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/ItemTypeRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ItemTypeRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/ItemTypeRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/LocationRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/LocationRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/LocationRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/LocationRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ReadOnlyLocationRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/ReadOnlyLocationRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/ReadOnlyLocationRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/ReadOnlyLocationRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/StoreRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/StoreRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/StoreRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/StoreRepository.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/impl/CustomItemRepositoryImpl.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/impl/CustomItemRepositoryImpl.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/impl/CustomItemRepositoryImpl.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/impl/CustomItemRepositoryImpl.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/impl/CustomItemTypeRepositoryImpl.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/impl/CustomItemTypeRepositoryImpl.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/impl/CustomItemTypeRepositoryImpl.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/impl/CustomItemTypeRepositoryImpl.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/impl/ExtendedRepositoryImpl.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/impl/ExtendedRepositoryImpl.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/impl/ExtendedRepositoryImpl.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/daos/impl/ExtendedRepositoryImpl.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Item.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/Item.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Item.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/Item.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/ItemType.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/ItemType.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/ItemType.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/ItemType.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/KVTag.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/KVTag.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/KVTag.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/KVTag.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Location.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/Location.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Location.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/Location.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/MerchandiseEntity.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/MerchandiseEntity.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/MerchandiseEntity.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/MerchandiseEntity.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/SkillTag.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/SkillTag.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/SkillTag.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/SkillTag.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Store.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/Store.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Store.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/Store.java diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Student.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/Student.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Student.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/boot/domain/Student.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/config/JpaPopulators.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/config/JpaPopulators.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/config/JpaPopulators.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/config/JpaPopulators.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/derivedquery/QueryApplication.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/QueryApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/derivedquery/QueryApplication.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/QueryApplication.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/derivedquery/entity/User.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/entity/User.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/derivedquery/entity/User.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/entity/User.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/derivedquery/repository/UserRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/repository/UserRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/derivedquery/repository/UserRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/repository/UserRepository.java diff --git a/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/entity/Fruit.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/entity/Fruit.java new file mode 100644 index 0000000000..d45ac33db8 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/entity/Fruit.java @@ -0,0 +1,40 @@ +package com.baeldung.entity; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +@Entity +public class Fruit { + + @Id + private long id; + private String name; + private String color; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Passenger.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/entity/Passenger.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Passenger.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/entity/Passenger.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Song.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/entity/Song.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Song.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/entity/Song.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/like/LikeApplication.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/like/LikeApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/like/LikeApplication.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/like/LikeApplication.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/like/model/Movie.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/like/model/Movie.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/like/model/Movie.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/like/model/Movie.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/like/repository/MovieRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/like/repository/MovieRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/like/repository/MovieRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/like/repository/MovieRepository.java diff --git a/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/repository/FruitRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/repository/FruitRepository.java new file mode 100644 index 0000000000..5055252adf --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/repository/FruitRepository.java @@ -0,0 +1,27 @@ +package com.baeldung.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.baeldung.entity.Fruit; + +@Repository +public interface FruitRepository extends JpaRepository { + + Long deleteByName(String name); + + List deleteByColor(String color); + + Long removeByName(String name); + + List removeByColor(String color); + + @Modifying + @Query("delete from Fruit f where f.name=:name or f.color=:color") + int deleteFruits(@Param("name") String name, @Param("color") String color); +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/PassengerRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/repository/PassengerRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/PassengerRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/repository/PassengerRepository.java diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/SongRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/repository/SongRepository.java similarity index 99% rename from persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/SongRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/repository/SongRepository.java index ad887fe680..6faed411d3 100644 --- a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/SongRepository.java +++ b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/repository/SongRepository.java @@ -1,10 +1,11 @@ package com.baeldung.repository; -import com.baeldung.entity.Song; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import java.util.List; +import com.baeldung.entity.Song; @Repository public interface SongRepository extends JpaRepository { diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/StoredProcedureApplication.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/StoredProcedureApplication.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/StoredProcedureApplication.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/StoredProcedureApplication.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/controller/CarController.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/controller/CarController.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/controller/CarController.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/controller/CarController.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/entity/Car.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/entity/Car.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/entity/Car.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/entity/Car.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/repository/CarRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/repository/CarRepository.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/repository/CarRepository.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/repository/CarRepository.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/service/CarService.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/service/CarService.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/storedprocedure/service/CarService.java rename to persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/storedprocedure/service/CarService.java diff --git a/persistence-modules/spring-data-jpa-repo/src/main/resources/apple-fruit-data.xml b/persistence-modules/spring-data-jpa-repo/src/main/resources/apple-fruit-data.xml new file mode 100644 index 0000000000..d87ae28f1e --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo/src/main/resources/apple-fruit-data.xml @@ -0,0 +1,7 @@ + + + + 1 + apple + red + diff --git a/persistence-modules/spring-data-jpa-4/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-repo/src/main/resources/application.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/resources/application.properties rename to persistence-modules/spring-data-jpa-repo/src/main/resources/application.properties diff --git a/persistence-modules/spring-data-jpa-4/src/main/resources/car-mysql.sql b/persistence-modules/spring-data-jpa-repo/src/main/resources/car-mysql.sql similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/main/resources/car-mysql.sql rename to persistence-modules/spring-data-jpa-repo/src/main/resources/car-mysql.sql diff --git a/persistence-modules/spring-data-jpa-repo/src/main/resources/fruit-data.json b/persistence-modules/spring-data-jpa-repo/src/main/resources/fruit-data.json new file mode 100644 index 0000000000..6dc44e2586 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo/src/main/resources/fruit-data.json @@ -0,0 +1,14 @@ +[ + { + "_class": "com.baeldung.entity.Fruit", + "name": "apple", + "color": "red", + "id": 1 + }, + { + "_class": "com.baeldung.entity.Fruit", + "name": "guava", + "color": "green", + "id": 2 + } +] \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-repo/src/main/resources/guava-fruit-data.xml b/persistence-modules/spring-data-jpa-repo/src/main/resources/guava-fruit-data.xml new file mode 100644 index 0000000000..ffd75bb4bb --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo/src/main/resources/guava-fruit-data.xml @@ -0,0 +1,7 @@ + + + + 2 + guava + green + diff --git a/persistence-modules/spring-data-jpa/src/main/resources/import_entities.sql b/persistence-modules/spring-data-jpa-repo/src/main/resources/import_entities.sql similarity index 69% rename from persistence-modules/spring-data-jpa/src/main/resources/import_entities.sql rename to persistence-modules/spring-data-jpa-repo/src/main/resources/import_entities.sql index deb9d07f05..6282fd1481 100644 --- a/persistence-modules/spring-data-jpa/src/main/resources/import_entities.sql +++ b/persistence-modules/spring-data-jpa-repo/src/main/resources/import_entities.sql @@ -1,7 +1,3 @@ -insert into Article(id, publication_date, publication_time, creation_date_time) values(1, TO_DATE('01/01/2018', 'DD/MM/YYYY'), TO_DATE('15:00', 'HH24:MI'), TO_DATE('31/12/2017 07:30', 'DD/MM/YYYY HH24:MI')); -insert into Article(id, publication_date, publication_time, creation_date_time) values(2, TO_DATE('01/01/2018', 'DD/MM/YYYY'), TO_DATE('15:30', 'HH24:MI'), TO_DATE('15/12/2017 08:00', 'DD/MM/YYYY HH24:MI')); -insert into Article(id, publication_date, publication_time, creation_date_time) values(3, TO_DATE('15/12/2017', 'DD/MM/YYYY'), TO_DATE('16:00', 'HH24:MI'), TO_DATE('01/12/2017 13:45', 'DD/MM/YYYY HH24:MI')); - insert into location (id, country, city) values (1, 'Country X', 'City One'); insert into location (id, country, city) values (2, 'Country X', 'City Two'); insert into location (id, country, city) values (3, 'Country X', 'City Three'); diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/ExtendedStudentRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/boot/daos/ExtendedStudentRepositoryIntegrationTest.java similarity index 97% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/ExtendedStudentRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/boot/daos/ExtendedStudentRepositoryIntegrationTest.java index 71f92c94ab..b367b5fdca 100644 --- a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/ExtendedStudentRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/boot/daos/ExtendedStudentRepositoryIntegrationTest.java @@ -13,7 +13,7 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.boot.Application; +import com.baeldung.Application; import com.baeldung.boot.domain.Student; @RunWith(SpringRunner.class) diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/InventoryRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/boot/daos/InventoryRepositoryIntegrationTest.java similarity index 98% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/InventoryRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/boot/daos/InventoryRepositoryIntegrationTest.java index 5d73e261a4..22e2c81739 100644 --- a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/InventoryRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/boot/daos/InventoryRepositoryIntegrationTest.java @@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.boot.Application; +import com.baeldung.Application; import com.baeldung.boot.domain.MerchandiseEntity; @RunWith(SpringRunner.class) diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/JpaRepositoriesIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/boot/daos/JpaRepositoriesIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/JpaRepositoriesIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/boot/daos/JpaRepositoriesIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/derivedquery/repository/UserRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/derivedquery/repository/UserRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/derivedquery/repository/UserRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/derivedquery/repository/UserRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/like/MovieRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/like/MovieRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/like/MovieRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/like/MovieRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/FruitPopulatorIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/repository/FruitPopulatorIntegrationTest.java similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/FruitPopulatorIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/repository/FruitPopulatorIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java similarity index 99% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java index f96f0249d7..37fcef7dab 100644 --- a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java @@ -1,6 +1,14 @@ package com.baeldung.repository; -import com.baeldung.entity.Passenger; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.core.IsNot.not; + +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -8,13 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.junit4.SpringRunner; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.core.IsNot.not; +import com.baeldung.entity.Passenger; @DataJpaTest @RunWith(SpringRunner.class) diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/SongRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/repository/SongRepositoryIntegrationTest.java similarity index 97% rename from persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/SongRepositoryIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/repository/SongRepositoryIntegrationTest.java index 14912a4ecb..19362acd44 100644 --- a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/SongRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/repository/SongRepositoryIntegrationTest.java @@ -13,6 +13,7 @@ import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import com.baeldung.entity.Song; +import com.baeldung.repository.SongRepository; @RunWith(SpringRunner.class) @SpringBootTest diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/application-test.properties b/persistence-modules/spring-data-jpa-repo/src/test/resources/application-test.properties similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/application-test.properties rename to persistence-modules/spring-data-jpa-repo/src/test/resources/application-test.properties diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/test-movie-cleanup.sql b/persistence-modules/spring-data-jpa-repo/src/test/resources/test-movie-cleanup.sql similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/test-movie-cleanup.sql rename to persistence-modules/spring-data-jpa-repo/src/test/resources/test-movie-cleanup.sql diff --git a/persistence-modules/spring-data-jpa-4/src/test/resources/test-movie-data.sql b/persistence-modules/spring-data-jpa-repo/src/test/resources/test-movie-data.sql similarity index 100% rename from persistence-modules/spring-data-jpa-4/src/test/resources/test-movie-data.sql rename to persistence-modules/spring-data-jpa-repo/src/test/resources/test-movie-data.sql diff --git a/persistence-modules/spring-data-jpa-2/src/test/resources/test-song-data.sql b/persistence-modules/spring-data-jpa-repo/src/test/resources/test-song-data.sql similarity index 100% rename from persistence-modules/spring-data-jpa-2/src/test/resources/test-song-data.sql rename to persistence-modules/spring-data-jpa-repo/src/test/resources/test-song-data.sql diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/PossessionRepository.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/PossessionRepository.java deleted file mode 100644 index e102754c18..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/PossessionRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.boot.daos.user; - -import org.springframework.data.jpa.repository.JpaRepository; - -import com.baeldung.boot.domain.Possession; - -public interface PossessionRepository extends JpaRepository { - -} diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepository.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepository.java deleted file mode 100644 index 53f692ff28..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepository.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.baeldung.boot.daos.user; - -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -import com.baeldung.boot.domain.User; - -import java.time.LocalDate; -import java.util.Collection; -import java.util.List; -import java.util.stream.Stream; - -public interface UserRepository extends JpaRepository , UserRepositoryCustom{ - - Stream findAllByName(String name); - - @Query("SELECT u FROM User u WHERE u.status = 1") - Collection findAllActiveUsers(); - - @Query("select u from User u where u.email like '%@gmail.com'") - List findUsersWithGmailAddress(); - - @Query(value = "SELECT * FROM Users u WHERE u.status = 1", nativeQuery = true) - Collection findAllActiveUsersNative(); - - @Query("SELECT u FROM User u WHERE u.status = ?1") - User findUserByStatus(Integer status); - - @Query(value = "SELECT * FROM Users u WHERE u.status = ?1", nativeQuery = true) - User findUserByStatusNative(Integer status); - - @Query("SELECT u FROM User u WHERE u.status = ?1 and u.name = ?2") - User findUserByStatusAndName(Integer status, String name); - - @Query("SELECT u FROM User u WHERE u.status = :status and u.name = :name") - User findUserByStatusAndNameNamedParams(@Param("status") Integer status, @Param("name") String name); - - @Query(value = "SELECT * FROM Users u WHERE u.status = :status AND u.name = :name", nativeQuery = true) - User findUserByStatusAndNameNamedParamsNative(@Param("status") Integer status, @Param("name") String name); - - @Query("SELECT u FROM User u WHERE u.status = :status and u.name = :name") - User findUserByUserStatusAndUserName(@Param("status") Integer userStatus, @Param("name") String userName); - - @Query("SELECT u FROM User u WHERE u.name like ?1%") - User findUserByNameLike(String name); - - @Query("SELECT u FROM User u WHERE u.name like :name%") - User findUserByNameLikeNamedParam(@Param("name") String name); - - @Query(value = "SELECT * FROM users u WHERE u.name LIKE ?1%", nativeQuery = true) - User findUserByNameLikeNative(String name); - - @Query(value = "SELECT u FROM User u") - List findAllUsers(Sort sort); - - @Query(value = "SELECT u FROM User u ORDER BY id") - Page findAllUsersWithPagination(Pageable pageable); - - @Query(value = "SELECT * FROM Users ORDER BY id", countQuery = "SELECT count(*) FROM Users", nativeQuery = true) - Page findAllUsersWithPaginationNative(Pageable pageable); - - @Modifying - @Query("update User u set u.status = :status where u.name = :name") - int updateUserSetStatusForName(@Param("status") Integer status, @Param("name") String name); - - @Modifying - @Query(value = "UPDATE Users u SET u.status = ? WHERE u.name = ?", nativeQuery = true) - int updateUserSetStatusForNameNative(Integer status, String name); - - @Query(value = "INSERT INTO Users (name, age, email, status, active) VALUES (:name, :age, :email, :status, :active)", nativeQuery = true) - @Modifying - void insertUser(@Param("name") String name, @Param("age") Integer age, @Param("email") String email, @Param("status") Integer status, @Param("active") boolean active); - - @Modifying - @Query(value = "UPDATE Users u SET status = ? WHERE u.name = ?", nativeQuery = true) - int updateUserSetStatusForNameNativePostgres(Integer status, String name); - - @Query(value = "SELECT u FROM User u WHERE u.name IN :names") - List findUserByNameList(@Param("names") Collection names); - - void deleteAllByCreationDateAfter(LocalDate date); - - @Modifying(clearAutomatically = true, flushAutomatically = true) - @Query("update User u set u.active = false where u.lastLoginDate < :date") - void deactivateUsersNotLoggedInSince(@Param("date") LocalDate date); - - @Modifying(clearAutomatically = true, flushAutomatically = true) - @Query("delete User u where u.active = false") - int deleteDeactivatedUsers(); - - @Modifying(clearAutomatically = true, flushAutomatically = true) - @Query(value = "alter table USERS add column deleted int(1) not null default 0", nativeQuery = true) - void addDeletedColumn(); -} diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustom.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustom.java deleted file mode 100644 index c586b54027..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustom.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.boot.daos.user; - -import java.util.Collection; -import java.util.List; -import java.util.Set; -import java.util.function.Predicate; - -import com.baeldung.boot.domain.User; - -public interface UserRepositoryCustom { - List findUserByEmails(Set emails); - - List findAllUsersByPredicates(Collection> predicates); -} diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustomImpl.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustomImpl.java deleted file mode 100644 index 63a743b6b5..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/daos/user/UserRepositoryCustomImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.baeldung.boot.daos.user; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Path; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; - -import com.baeldung.boot.domain.User; - -public class UserRepositoryCustomImpl implements UserRepositoryCustom { - - @PersistenceContext - private EntityManager entityManager; - - @Override - public List findUserByEmails(Set emails) { - CriteriaBuilder cb = entityManager.getCriteriaBuilder(); - CriteriaQuery query = cb.createQuery(User.class); - Root user = query.from(User.class); - - Path emailPath = user.get("email"); - - List predicates = new ArrayList<>(); - for (String email : emails) { - - predicates.add(cb.like(emailPath, email)); - - } - query.select(user) - .where(cb.or(predicates.toArray(new Predicate[predicates.size()]))); - - return entityManager.createQuery(query) - .getResultList(); - } - - @Override - public List findAllUsersByPredicates(Collection> predicates) { - List allUsers = entityManager.createQuery("select u from User u", User.class).getResultList(); - Stream allUsersStream = allUsers.stream(); - for (java.util.function.Predicate predicate : predicates) { - allUsersStream = allUsersStream.filter(predicate); - } - - return allUsersStream.collect(Collectors.toList()); - } - -} diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Possession.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Possession.java deleted file mode 100644 index f13491ad82..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/Possession.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.baeldung.boot.domain; - -import javax.persistence.*; -import com.baeldung.boot.domain.Possession; - -@Entity -@Table -public class Possession { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - private String name; - - public Possession() { - super(); - } - - public Possession(final String name) { - super(); - - this.name = name; - } - - public long getId() { - return id; - } - - public void setId(final int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = (prime * result) + (int) (id ^ (id >>> 32)); - result = (prime * result) + ((name == null) ? 0 : name.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final Possession other = (Possession) obj; - if (id != other.id) { - return false; - } - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - return true; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Possesion [id=").append(id).append(", name=").append(name).append("]"); - return builder.toString(); - } - -} diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/User.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/User.java deleted file mode 100644 index cca00e52a2..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/boot/domain/User.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.baeldung.boot.domain; - -import javax.persistence.*; - -import java.time.LocalDate; -import java.util.List; -import java.util.Objects; - -@Entity -@Table(name = "users") -public class User { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id; - private String name; - private LocalDate creationDate; - private LocalDate lastLoginDate; - private boolean active; - private int age; - @Column(unique = true, nullable = false) - private String email; - private Integer status; - @OneToMany - List possessionList; - - public User() { - super(); - } - - public User(String name, LocalDate creationDate,String email, Integer status) { - this.name = name; - this.creationDate = creationDate; - this.email = email; - this.status = status; - this.active = true; - } - - public int getId() { - return id; - } - - public void setId(final int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - public String getEmail() { - return email; - } - - public void setEmail(final String email) { - this.email = email; - } - - public Integer getStatus() { - return status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public int getAge() { - return age; - } - - public void setAge(final int age) { - this.age = age; - } - - public LocalDate getCreationDate() { - return creationDate; - } - - public List getPossessionList() { - return possessionList; - } - - public void setPossessionList(List possessionList) { - this.possessionList = possessionList; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("User [name=").append(name).append(", id=").append(id).append("]"); - return builder.toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - User user = (User) o; - return id == user.id && - age == user.age && - Objects.equals(name, user.name) && - Objects.equals(creationDate, user.creationDate) && - Objects.equals(email, user.email) && - Objects.equals(status, user.status); - } - - @Override - public int hashCode() { - return Objects.hash(id, name, creationDate, age, email, status); - } - - public LocalDate getLastLoginDate() { - return lastLoginDate; - } - - public void setLastLoginDate(LocalDate lastLoginDate) { - this.lastLoginDate = lastLoginDate; - } - - public boolean isActive() { - return active; - } - - public void setActive(boolean active) { - this.active = active; - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/model/product/Product.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/model/product/Product.java deleted file mode 100755 index eaf471043c..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/model/product/Product.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.baeldung.multipledb.model.product; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -@Entity -@Table(schema = "products") -public class Product { - - @Id - private int id; - - private String name; - - private double price; - - public Product() { - super(); - } - - private Product(int id, String name, double price) { - super(); - this.id = id; - this.name = name; - this.price = price; - } - - public static Product from(int id, String name, double price) { - return new Product(id, name, price); - } - - public int getId() { - return id; - } - - public void setId(final int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - public double getPrice() { - return price; - } - - public void setPrice(final double price) { - this.price = price; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Product [name=") - .append(name) - .append(", id=") - .append(id) - .append("]"); - return builder.toString(); - } -} diff --git a/persistence-modules/spring-data-jpa/src/main/resources/application.properties b/persistence-modules/spring-data-jpa/src/main/resources/application.properties deleted file mode 100644 index f127dd5e50..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/resources/application.properties +++ /dev/null @@ -1,6 +0,0 @@ -spring.main.allow-bean-definition-overriding=true - -spring.jpa.properties.hibernate.jdbc.batch_size=4 -spring.jpa.properties.hibernate.order_inserts=true -spring.jpa.properties.hibernate.order_updates=true -spring.jpa.properties.hibernate.generate_statistics=true diff --git a/persistence-modules/spring-data-jpa/src/main/resources/persistence-multiple-db.properties b/persistence-modules/spring-data-jpa/src/main/resources/persistence-multiple-db.properties deleted file mode 100644 index 75534e8a54..0000000000 --- a/persistence-modules/spring-data-jpa/src/main/resources/persistence-multiple-db.properties +++ /dev/null @@ -1,13 +0,0 @@ -# jdbc.X -jdbc.driverClassName=org.h2.Driver -user.jdbc.url=jdbc:h2:mem:spring_jpa_user;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS USERS -product.jdbc.url=jdbc:h2:mem:spring_jpa_product;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS PRODUCTS -jdbc.user=sa -jdbc.pass=sa - -# hibernate.X -hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.show_sql=false -hibernate.hbm2ddl.auto=create-drop -hibernate.cache.use_second_level_cache=false -hibernate.cache.use_query_cache=false \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java b/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java deleted file mode 100644 index b2581b8034..0000000000 --- a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java +++ /dev/null @@ -1,545 +0,0 @@ -package com.baeldung.boot.daos; - -import org.junit.After; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.data.jpa.domain.JpaSort; -import org.springframework.data.mapping.PropertyReferenceException; -import org.springframework.transaction.annotation.Transactional; - -import com.baeldung.boot.daos.user.UserRepository; -import com.baeldung.boot.domain.User; - -import javax.persistence.EntityManager; -import javax.persistence.Query; -import java.time.LocalDate; -import java.util.*; -import java.util.function.Predicate; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.*; - -public class UserRepositoryCommon { - - final String USER_EMAIL = "email@example.com"; - final String USER_EMAIL2 = "email2@example.com"; - final String USER_EMAIL3 = "email3@example.com"; - final String USER_EMAIL4 = "email4@example.com"; - final Integer INACTIVE_STATUS = 0; - final Integer ACTIVE_STATUS = 1; - final String USER_EMAIL5 = "email5@example.com"; - final String USER_EMAIL6 = "email6@example.com"; - final String USER_NAME_ADAM = "Adam"; - final String USER_NAME_PETER = "Peter"; - - @Autowired - protected UserRepository userRepository; - @Autowired - private EntityManager entityManager; - - @Test - @Transactional - public void givenUsersWithSameNameInDB_WhenFindAllByName_ThenReturnStreamOfUsers() { - User user1 = new User(); - user1.setName(USER_NAME_ADAM); - user1.setEmail(USER_EMAIL); - userRepository.save(user1); - - User user2 = new User(); - user2.setName(USER_NAME_ADAM); - user2.setEmail(USER_EMAIL2); - userRepository.save(user2); - - User user3 = new User(); - user3.setName(USER_NAME_ADAM); - user3.setEmail(USER_EMAIL3); - userRepository.save(user3); - - User user4 = new User(); - user4.setName("SAMPLE"); - user4.setEmail(USER_EMAIL4); - userRepository.save(user4); - - try (Stream foundUsersStream = userRepository.findAllByName(USER_NAME_ADAM)) { - assertThat(foundUsersStream.count()).isEqualTo(3l); - } - } - - @Test - public void givenUsersInDB_WhenFindAllWithQueryAnnotation_ThenReturnCollectionWithActiveUsers() { - User user1 = new User(); - user1.setName(USER_NAME_ADAM); - user1.setEmail(USER_EMAIL); - user1.setStatus(ACTIVE_STATUS); - userRepository.save(user1); - - User user2 = new User(); - user2.setName(USER_NAME_ADAM); - user2.setEmail(USER_EMAIL2); - user2.setStatus(ACTIVE_STATUS); - userRepository.save(user2); - - User user3 = new User(); - user3.setName(USER_NAME_ADAM); - user3.setEmail(USER_EMAIL3); - user3.setStatus(INACTIVE_STATUS); - userRepository.save(user3); - - Collection allActiveUsers = userRepository.findAllActiveUsers(); - - assertThat(allActiveUsers.size()).isEqualTo(2); - } - - @Test - public void givenUsersInDB_WhenFindAllWithQueryAnnotationNative_ThenReturnCollectionWithActiveUsers() { - User user1 = new User(); - user1.setName(USER_NAME_ADAM); - user1.setEmail(USER_EMAIL); - user1.setStatus(ACTIVE_STATUS); - userRepository.save(user1); - - User user2 = new User(); - user2.setName(USER_NAME_ADAM); - user2.setEmail(USER_EMAIL2); - user2.setStatus(ACTIVE_STATUS); - userRepository.save(user2); - - User user3 = new User(); - user3.setName(USER_NAME_ADAM); - user3.setEmail(USER_EMAIL3); - user3.setStatus(INACTIVE_STATUS); - userRepository.save(user3); - - Collection allActiveUsers = userRepository.findAllActiveUsersNative(); - - assertThat(allActiveUsers.size()).isEqualTo(2); - } - - @Test - public void givenUserInDB_WhenFindUserByStatusWithQueryAnnotation_ThenReturnActiveUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User userByStatus = userRepository.findUserByStatus(ACTIVE_STATUS); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUserInDB_WhenFindUserByStatusWithQueryAnnotationNative_ThenReturnActiveUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User userByStatus = userRepository.findUserByStatusNative(ACTIVE_STATUS); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindUserByStatusAndNameWithQueryAnnotationIndexedParams_ThenReturnOneUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User user2 = new User(); - user2.setName(USER_NAME_PETER); - user2.setEmail(USER_EMAIL2); - user2.setStatus(ACTIVE_STATUS); - userRepository.save(user2); - - User userByStatus = userRepository.findUserByStatusAndName(ACTIVE_STATUS, USER_NAME_ADAM); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindUserByStatusAndNameWithQueryAnnotationNamedParams_ThenReturnOneUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User user2 = new User(); - user2.setName(USER_NAME_PETER); - user2.setEmail(USER_EMAIL2); - user2.setStatus(ACTIVE_STATUS); - userRepository.save(user2); - - User userByStatus = userRepository.findUserByStatusAndNameNamedParams(ACTIVE_STATUS, USER_NAME_ADAM); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindUserByStatusAndNameWithQueryAnnotationNativeNamedParams_ThenReturnOneUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User user2 = new User(); - user2.setName(USER_NAME_PETER); - user2.setEmail(USER_EMAIL2); - user2.setStatus(ACTIVE_STATUS); - userRepository.save(user2); - - User userByStatus = userRepository.findUserByStatusAndNameNamedParamsNative(ACTIVE_STATUS, USER_NAME_ADAM); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindUserByStatusAndNameWithQueryAnnotationNamedParamsCustomNames_ThenReturnOneUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User user2 = new User(); - user2.setName(USER_NAME_PETER); - user2.setEmail(USER_EMAIL2); - user2.setStatus(ACTIVE_STATUS); - userRepository.save(user2); - - User userByStatus = userRepository.findUserByUserStatusAndUserName(ACTIVE_STATUS, USER_NAME_ADAM); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindUserByNameLikeWithQueryAnnotationIndexedParams_ThenReturnUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User userByStatus = userRepository.findUserByNameLike("Ad"); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindUserByNameLikeWithQueryAnnotationNamedParams_ThenReturnUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User userByStatus = userRepository.findUserByNameLikeNamedParam("Ad"); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindUserByNameLikeWithQueryAnnotationNative_ThenReturnUser() { - User user = new User(); - user.setName(USER_NAME_ADAM); - user.setEmail(USER_EMAIL); - user.setStatus(ACTIVE_STATUS); - userRepository.save(user); - - User userByStatus = userRepository.findUserByNameLikeNative("Ad"); - - assertThat(userByStatus.getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindAllWithSortByName_ThenReturnUsersSorted() { - userRepository.save(new User(USER_NAME_ADAM, LocalDate.now(), USER_EMAIL, ACTIVE_STATUS)); - userRepository.save(new User(USER_NAME_PETER, LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL3, INACTIVE_STATUS)); - - List usersSortByName = userRepository.findAll(Sort.by(Sort.Direction.ASC, "name")); - - assertThat(usersSortByName.get(0) - .getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test(expected = PropertyReferenceException.class) - public void givenUsersInDB_WhenFindAllSortWithFunction_ThenThrowException() { - userRepository.save(new User(USER_NAME_ADAM, LocalDate.now(), USER_EMAIL, ACTIVE_STATUS)); - userRepository.save(new User(USER_NAME_PETER, LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL3, INACTIVE_STATUS)); - - userRepository.findAll(Sort.by(Sort.Direction.ASC, "name")); - - List usersSortByNameLength = userRepository.findAll(Sort.by("LENGTH(name)")); - - assertThat(usersSortByNameLength.get(0) - .getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindAllSortWithFunctionQueryAnnotationJPQL_ThenReturnUsersSorted() { - userRepository.save(new User(USER_NAME_ADAM, LocalDate.now(), USER_EMAIL, ACTIVE_STATUS)); - userRepository.save(new User(USER_NAME_PETER, LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL3, INACTIVE_STATUS)); - - userRepository.findAllUsers(Sort.by("name")); - - List usersSortByNameLength = userRepository.findAllUsers(JpaSort.unsafe("LENGTH(name)")); - - assertThat(usersSortByNameLength.get(0) - .getName()).isEqualTo(USER_NAME_ADAM); - } - - @Test - public void givenUsersInDB_WhenFindAllWithPageRequestQueryAnnotationJPQL_ThenReturnPageOfUsers() { - userRepository.save(new User(USER_NAME_ADAM, LocalDate.now(), USER_EMAIL, ACTIVE_STATUS)); - userRepository.save(new User(USER_NAME_PETER, LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL3, INACTIVE_STATUS)); - userRepository.save(new User("SAMPLE1", LocalDate.now(), USER_EMAIL4, INACTIVE_STATUS)); - userRepository.save(new User("SAMPLE2", LocalDate.now(), USER_EMAIL5, INACTIVE_STATUS)); - userRepository.save(new User("SAMPLE3", LocalDate.now(), USER_EMAIL6, INACTIVE_STATUS)); - - Page usersPage = userRepository.findAllUsersWithPagination(PageRequest.of(1, 3)); - - assertThat(usersPage.getContent() - .get(0) - .getName()).isEqualTo("SAMPLE1"); - } - - @Test - public void givenUsersInDB_WhenFindAllWithPageRequestQueryAnnotationNative_ThenReturnPageOfUsers() { - userRepository.save(new User(USER_NAME_ADAM, LocalDate.now(), USER_EMAIL, ACTIVE_STATUS)); - userRepository.save(new User(USER_NAME_PETER, LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL3, INACTIVE_STATUS)); - userRepository.save(new User("SAMPLE1", LocalDate.now(), USER_EMAIL4, INACTIVE_STATUS)); - userRepository.save(new User("SAMPLE2", LocalDate.now(), USER_EMAIL5, INACTIVE_STATUS)); - userRepository.save(new User("SAMPLE3", LocalDate.now(), USER_EMAIL6, INACTIVE_STATUS)); - - Page usersSortByNameLength = userRepository.findAllUsersWithPaginationNative(PageRequest.of(1, 3)); - - assertThat(usersSortByNameLength.getContent() - .get(0) - .getName()).isEqualTo(USER_NAME_PETER); - } - - @Test - @Transactional - public void givenUsersInDB_WhenUpdateStatusForNameModifyingQueryAnnotationJPQL_ThenModifyMatchingUsers() { - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE1", LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL3, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE3", LocalDate.now(), USER_EMAIL4, ACTIVE_STATUS)); - - int updatedUsersSize = userRepository.updateUserSetStatusForName(INACTIVE_STATUS, "SAMPLE"); - - assertThat(updatedUsersSize).isEqualTo(2); - } - - @Test - public void givenUsersInDB_WhenFindByEmailsWithDynamicQuery_ThenReturnCollection() { - - User user1 = new User(); - user1.setEmail(USER_EMAIL); - userRepository.save(user1); - - User user2 = new User(); - user2.setEmail(USER_EMAIL2); - userRepository.save(user2); - - User user3 = new User(); - user3.setEmail(USER_EMAIL3); - userRepository.save(user3); - - Set emails = new HashSet<>(); - emails.add(USER_EMAIL2); - emails.add(USER_EMAIL3); - - Collection usersWithEmails = userRepository.findUserByEmails(emails); - - assertThat(usersWithEmails.size()).isEqualTo(2); - } - - @Test - public void givenUsersInDBWhenFindByNameListReturnCollection() { - - User user1 = new User(); - user1.setName(USER_NAME_ADAM); - user1.setEmail(USER_EMAIL); - userRepository.save(user1); - - User user2 = new User(); - user2.setName(USER_NAME_PETER); - user2.setEmail(USER_EMAIL2); - userRepository.save(user2); - - List names = Arrays.asList(USER_NAME_ADAM, USER_NAME_PETER); - - List usersWithNames = userRepository.findUserByNameList(names); - - assertThat(usersWithNames.size()).isEqualTo(2); - } - - - @Test - @Transactional - public void whenInsertedWithQuery_ThenUserIsPersisted() { - userRepository.insertUser(USER_NAME_ADAM, 1, USER_EMAIL, ACTIVE_STATUS, true); - userRepository.insertUser(USER_NAME_PETER, 1, USER_EMAIL2, ACTIVE_STATUS, true); - - User userAdam = userRepository.findUserByNameLike(USER_NAME_ADAM); - User userPeter = userRepository.findUserByNameLike(USER_NAME_PETER); - - assertThat(userAdam).isNotNull(); - assertThat(userAdam.getEmail()).isEqualTo(USER_EMAIL); - assertThat(userPeter).isNotNull(); - assertThat(userPeter.getEmail()).isEqualTo(USER_EMAIL2); - } - - - @Test - @Transactional - public void givenTwoUsers_whenFindByNameUsr01_ThenUserUsr01() { - User usr01 = new User("usr01", LocalDate.now(), "usr01@baeldung.com", 1); - User usr02 = new User("usr02", LocalDate.now(), "usr02@baeldung.com", 1); - - userRepository.save(usr01); - userRepository.save(usr02); - - try (Stream users = userRepository.findAllByName("usr01")) { - assertTrue(users.allMatch(usr -> usr.equals(usr01))); - } - } - - @Test - @Transactional - public void givenTwoUsers_whenFindByNameUsr00_ThenNoUsers() { - User usr01 = new User("usr01", LocalDate.now(), "usr01@baeldung.com", 1); - User usr02 = new User("usr02", LocalDate.now(), "usr02@baeldung.com", 1); - - userRepository.save(usr01); - userRepository.save(usr02); - - try (Stream users = userRepository.findAllByName("usr00")) { - assertEquals(0, users.count()); - } - } - - @Test - public void givenTwoUsers_whenFindUsersWithGmailAddress_ThenUserUsr02() { - User usr01 = new User("usr01", LocalDate.now(), "usr01@baeldung.com", 1); - User usr02 = new User("usr02", LocalDate.now(), "usr02@gmail.com", 1); - - userRepository.save(usr01); - userRepository.save(usr02); - - List users = userRepository.findUsersWithGmailAddress(); - assertEquals(1, users.size()); - assertEquals(usr02, users.get(0)); - } - - @Test - @Transactional - public void givenTwoUsers_whenDeleteAllByCreationDateAfter_ThenOneUserRemains() { - User usr01 = new User("usr01", LocalDate.of(2018, 1, 1), "usr01@baeldung.com", 1); - User usr02 = new User("usr02", LocalDate.of(2018, 6, 1), "usr02@baeldung.com", 1); - - userRepository.save(usr01); - userRepository.save(usr02); - - userRepository.deleteAllByCreationDateAfter(LocalDate.of(2018, 5, 1)); - - List users = userRepository.findAll(); - - assertEquals(1, users.size()); - assertEquals(usr01, users.get(0)); - } - - @Test - public void givenTwoUsers_whenFindAllUsersByPredicates_ThenUserUsr01() { - User usr01 = new User("usr01", LocalDate.of(2018, 1, 1), "usr01@baeldung.com", 1); - User usr02 = new User("usr02", LocalDate.of(2018, 6, 1), "usr02@baeldung.org", 1); - - userRepository.save(usr01); - userRepository.save(usr02); - - List> predicates = new ArrayList<>(); - predicates.add(usr -> usr.getCreationDate().isAfter(LocalDate.of(2017, 12, 31))); - predicates.add(usr -> usr.getEmail().endsWith(".com")); - - List users = userRepository.findAllUsersByPredicates(predicates); - - assertEquals(1, users.size()); - assertEquals(usr01, users.get(0)); - } - - @Test - @Transactional - public void givenTwoUsers_whenDeactivateUsersNotLoggedInSince_ThenUserUsr02Deactivated() { - User usr01 = new User("usr01", LocalDate.of(2018, 1, 1), "usr01@baeldung.com", 1); - usr01.setLastLoginDate(LocalDate.now()); - User usr02 = new User("usr02", LocalDate.of(2018, 6, 1), "usr02@baeldung.org", 1); - usr02.setLastLoginDate(LocalDate.of(2018, 7, 20)); - - userRepository.save(usr01); - userRepository.save(usr02); - - userRepository.deactivateUsersNotLoggedInSince(LocalDate.of(2018, 8, 1)); - - List users = userRepository.findAllUsers(Sort.by(Sort.Order.asc("name"))); - assertTrue(users.get(0).isActive()); - assertFalse(users.get(1).isActive()); - } - - @Test - @Transactional - public void givenTwoUsers_whenDeleteDeactivatedUsers_ThenUserUsr02Deleted() { - User usr01 = new User("usr01", LocalDate.of(2018, 1, 1), "usr01@baeldung.com", 1); - usr01.setLastLoginDate(LocalDate.now()); - User usr02 = new User("usr02", LocalDate.of(2018, 6, 1), "usr02@baeldung.com", 0); - usr02.setLastLoginDate(LocalDate.of(2018, 7, 20)); - usr02.setActive(false); - - userRepository.save(usr01); - userRepository.save(usr02); - - int deletedUsersCount = userRepository.deleteDeactivatedUsers(); - - List users = userRepository.findAll(); - assertEquals(1, users.size()); - assertEquals(usr01, users.get(0)); - assertEquals(1, deletedUsersCount); - } - - @Test - @Transactional - public void givenTwoUsers_whenAddDeletedColumn_ThenUsersHaveDeletedColumn() { - User usr01 = new User("usr01", LocalDate.of(2018, 1, 1), "usr01@baeldung.com", 1); - usr01.setLastLoginDate(LocalDate.now()); - User usr02 = new User("usr02", LocalDate.of(2018, 6, 1), "usr02@baeldung.org", 1); - usr02.setLastLoginDate(LocalDate.of(2018, 7, 20)); - usr02.setActive(false); - - userRepository.save(usr01); - userRepository.save(usr02); - - userRepository.addDeletedColumn(); - - Query nativeQuery = entityManager.createNativeQuery("select deleted from USERS where NAME = 'usr01'"); - assertEquals(0, nativeQuery.getResultList().get(0)); - } - - @After - public void cleanUp() { - userRepository.deleteAll(); - } -} diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java b/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java deleted file mode 100644 index 99eabc8271..0000000000 --- a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung.boot.daos; - -import com.baeldung.boot.Application; -import com.baeldung.boot.domain.User; -import com.baeldung.util.BaeldungPostgresqlContainer; -import org.junit.ClassRule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.transaction.annotation.Transactional; -import org.testcontainers.containers.PostgreSQLContainer; - -import java.time.LocalDate; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Created by adam. - */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) -@ActiveProfiles({"tc", "tc-auto"}) -public class UserRepositoryTCAutoLiveTest extends UserRepositoryCommon { - - @ClassRule - public static PostgreSQLContainer postgreSQLContainer = BaeldungPostgresqlContainer.getInstance(); - - @Test - @Transactional - public void givenUsersInDB_WhenUpdateStatusForNameModifyingQueryAnnotationNativePostgres_ThenModifyMatchingUsers() { - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE1", LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL3, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE3", LocalDate.now(), USER_EMAIL4, ACTIVE_STATUS)); - userRepository.flush(); - - int updatedUsersSize = userRepository.updateUserSetStatusForNameNativePostgres(INACTIVE_STATUS, "SAMPLE"); - - assertThat(updatedUsersSize).isEqualTo(2); - } -} diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java b/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java deleted file mode 100644 index be8843c166..0000000000 --- a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.baeldung.boot.daos; - -import com.baeldung.boot.Application; -import com.baeldung.boot.domain.User; -import org.junit.ClassRule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.util.TestPropertyValues; -import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.transaction.annotation.Transactional; -import org.testcontainers.containers.PostgreSQLContainer; - -import java.time.LocalDate; - -import static org.assertj.core.api.Assertions.assertThat; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) -@ActiveProfiles("tc") -@ContextConfiguration(initializers = {UserRepositoryTCLiveTest.Initializer.class}) -public class UserRepositoryTCLiveTest extends UserRepositoryCommon { - - @ClassRule - public static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer("postgres:11.1") - .withDatabaseName("integration-tests-db") - .withUsername("sa") - .withPassword("sa"); - - @Test - @Transactional - public void givenUsersInDB_WhenUpdateStatusForNameModifyingQueryAnnotationNative_ThenModifyMatchingUsers() { - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE1", LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE", LocalDate.now(), USER_EMAIL3, ACTIVE_STATUS)); - userRepository.save(new User("SAMPLE3", LocalDate.now(), USER_EMAIL4, ACTIVE_STATUS)); - userRepository.flush(); - - int updatedUsersSize = userRepository.updateUserSetStatusForNameNativePostgres(INACTIVE_STATUS, "SAMPLE"); - - assertThat(updatedUsersSize).isEqualTo(2); - } - - static class Initializer - implements ApplicationContextInitializer { - public void initialize(ConfigurableApplicationContext configurableApplicationContext) { - TestPropertyValues.of( - "spring.datasource.url=" + postgreSQLContainer.getJdbcUrl(), - "spring.datasource.username=" + postgreSQLContainer.getUsername(), - "spring.datasource.password=" + postgreSQLContainer.getPassword() - ).applyTo(configurableApplicationContext.getEnvironment()); - } - } -} diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/util/BaeldungPostgresqlContainer.java b/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/util/BaeldungPostgresqlContainer.java deleted file mode 100644 index e5ad2dd448..0000000000 --- a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/util/BaeldungPostgresqlContainer.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.baeldung.util; - -import org.testcontainers.containers.PostgreSQLContainer; - -public class BaeldungPostgresqlContainer extends PostgreSQLContainer { - - private static final String IMAGE_VERSION = "postgres:11.1"; - - private static BaeldungPostgresqlContainer container; - - - private BaeldungPostgresqlContainer() { - super(IMAGE_VERSION); - } - - public static BaeldungPostgresqlContainer getInstance() { - if (container == null) { - container = new BaeldungPostgresqlContainer(); - } - return container; - } - - @Override - public void start() { - super.start(); - System.setProperty("DB_URL", container.getJdbcUrl()); - System.setProperty("DB_USERNAME", container.getUsername()); - System.setProperty("DB_PASSWORD", container.getPassword()); - } - - @Override - public void stop() { - //do nothing, JVM handles shut down - } -} diff --git a/persistence-modules/spring-data-jpa/src/test/resources/application-tc-auto.properties b/persistence-modules/spring-data-jpa/src/test/resources/application-tc-auto.properties deleted file mode 100644 index c3005d861f..0000000000 --- a/persistence-modules/spring-data-jpa/src/test/resources/application-tc-auto.properties +++ /dev/null @@ -1,4 +0,0 @@ -# configuration for test containers testing -spring.datasource.url=${DB_URL} -spring.datasource.username=${DB_USERNAME} -spring.datasource.password=${DB_PASSWORD} diff --git a/persistence-modules/spring-data-jpa/src/test/resources/application-tc.properties b/persistence-modules/spring-data-jpa/src/test/resources/application-tc.properties deleted file mode 100644 index 3bf8693d53..0000000000 --- a/persistence-modules/spring-data-jpa/src/test/resources/application-tc.properties +++ /dev/null @@ -1,4 +0,0 @@ -# configuration for Test Containers testing -spring.datasource.driver-class-name=org.postgresql.Driver -spring.jpa.hibernate.ddl-auto=create-drop -spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false diff --git a/persistence-modules/spring-jpa-2/.gitignore b/persistence-modules/spring-jpa-2/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/persistence-modules/spring-jpa-2/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-5/README.md b/persistence-modules/spring-jpa-2/README.md similarity index 57% rename from persistence-modules/spring-data-jpa-5/README.md rename to persistence-modules/spring-jpa-2/README.md index 0b78ced66c..71b368b44a 100644 --- a/persistence-modules/spring-data-jpa-5/README.md +++ b/persistence-modules/spring-jpa-2/README.md @@ -1,8 +1,12 @@ -### Relevant Articles: +========= + +## Spring JPA Example Project + + +### Relevant Articles: +- [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many) +- More articles: [[<-- prev]](/spring-jpa) -- [Spring JPA @Embedded and @EmbeddedId](https://www.baeldung.com/spring-jpa-embedded-method-parameters) -- [Generate Database Schema with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-generate-db-schema) -- [Partial Data Update with Spring Data](https://www.baeldung.com/spring-data-partial-update) ### Eclipse Config After importing the project into Eclipse, you may see the following error: diff --git a/persistence-modules/spring-jpa-2/pom.xml b/persistence-modules/spring-jpa-2/pom.xml new file mode 100644 index 0000000000..410ed592b0 --- /dev/null +++ b/persistence-modules/spring-jpa-2/pom.xml @@ -0,0 +1,152 @@ + + + 4.0.0 + spring-jpa + 0.1-SNAPSHOT + spring-jpa + war + + + com.baeldung + persistence-modules + 1.0.0-SNAPSHOT + + + + + + org.springframework + spring-orm + ${org.springframework.version} + + + commons-logging + commons-logging + + + + + org.springframework + spring-context + ${org.springframework.version} + + + org.springframework + spring-webmvc + ${org.springframework.version} + + + + + + org.hibernate + hibernate-entitymanager + ${hibernate.version} + + + xml-apis + xml-apis + ${xml-apis.version} + + + org.javassist + javassist + ${javassist.version} + + + mysql + mysql-connector-java + ${mysql-connector-java.version} + runtime + + + org.springframework.data + spring-data-jpa + ${spring-data-jpa.version} + + + com.h2database + h2 + ${h2.version} + + + + + + org.hibernate + hibernate-validator + ${hibernate-validator.version} + + + javax.el + javax.el-api + ${javax.el-api.version} + + + + + javax.servlet + jstl + ${jstl.version} + + + javax.servlet + servlet-api + provided + ${javax.servlet.servlet-api.version} + + + + + + com.google.guava + guava + ${guava.version} + + + org.assertj + assertj-core + ${assertj.version} + + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + test + + + + org.springframework + spring-test + ${org.springframework.version} + test + + + + + + + 5.1.5.RELEASE + 3.21.0-GA + + 6.0.6 + 2.1.5.RELEASE + + + 2.5 + + + 6.0.15.Final + 1.4.01 + 2.2.5 + + + 21.0 + 3.8.0 + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceProductConfiguration.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java similarity index 50% rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceProductConfiguration.java rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java index bcf2cd84eb..c489321122 100644 --- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/multipledb/PersistenceProductConfiguration.java +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java @@ -1,57 +1,59 @@ -package com.baeldung.multipledb; +package com.baeldung.config; import com.google.common.base.Preconditions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; -import java.util.HashMap; +import java.util.Properties; @Configuration -@PropertySource({"classpath:persistence-multiple-db.properties"}) -@EnableJpaRepositories(basePackages = "com.baeldung.multipledb.dao.product", entityManagerFactoryRef = "productEntityManager", transactionManagerRef = "productTransactionManager") -@Profile("!tc") -public class PersistenceProductConfiguration { +@EnableTransactionManagement +@PropertySource({ "classpath:persistence-h2.properties" }) +@ComponentScan({ "com.baeldung.persistence" }) +@EnableJpaRepositories(basePackages = "com.baeldung.persistence.dao") +public class PersistenceJPAConfig { + @Autowired private Environment env; - public PersistenceProductConfiguration() { + public PersistenceJPAConfig() { super(); } - // + // beans @Bean - public LocalContainerEntityManagerFactoryBean productEntityManager() { + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); - em.setDataSource(productDataSource()); - em.setPackagesToScan("com.baeldung.multipledb.model.product"); + em.setDataSource(dataSource()); + em.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); - final HashMap properties = new HashMap(); - properties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); - properties.put("hibernate.dialect", env.getProperty("hibernate.dialect")); - em.setJpaPropertyMap(properties); + em.setJpaProperties(additionalProperties()); return em; } @Bean - public DataSource productDataSource() { + public DataSource dataSource() { final DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); - dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("product.jdbc.url"))); + dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); @@ -59,10 +61,25 @@ public class PersistenceProductConfiguration { } @Bean - public PlatformTransactionManager productTransactionManager() { + public PlatformTransactionManager transactionManager(final EntityManagerFactory emf) { final JpaTransactionManager transactionManager = new JpaTransactionManager(); - transactionManager.setEntityManagerFactory(productEntityManager().getObject()); + transactionManager.setEntityManagerFactory(emf); return transactionManager; } -} + @Bean + public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { + return new PersistenceExceptionTranslationPostProcessor(); + } + + final Properties additionalProperties() { + final Properties hibernateProperties = new Properties(); + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", "false"); + + + return hibernateProperties; + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java new file mode 100644 index 0000000000..95224a4662 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java @@ -0,0 +1,17 @@ +package com.baeldung.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.ImportResource; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +// @Configuration +@EnableTransactionManagement +@ComponentScan({ "com.baeldung.persistence" }) +@ImportResource({ "classpath:jpaConfig.xml" }) +public class PersistenceJPAConfigXml { + + public PersistenceJPAConfigXml() { + super(); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java new file mode 100644 index 0000000000..475970d1f0 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java @@ -0,0 +1,24 @@ +package com.baeldung.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.view.InternalResourceViewResolver; +import org.springframework.web.servlet.view.JstlView; + +@EnableWebMvc +@Configuration +@ComponentScan({ "com.baeldung.web" }) +public class SpringWebConfig extends WebMvcConfigurerAdapter { + + @Bean + public InternalResourceViewResolver viewResolver() { + InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); + viewResolver.setViewClass(JstlView.class); + viewResolver.setPrefix("/WEB-INF/views/jsp/"); + viewResolver.setSuffix(".jsp"); + return viewResolver; + } +} diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java new file mode 100644 index 0000000000..54ced72dd1 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java @@ -0,0 +1,67 @@ +package com.baeldung.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; +import java.util.Properties; + +@Configuration +@EnableJpaRepositories(basePackages = "com.baeldung.inmemory.persistence.dao") +@PropertySource("persistence-student.properties") +@EnableTransactionManagement +public class StudentJpaConfig { + + @Autowired + private Environment env; + + @Bean + public DataSource dataSource() { + final DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); + dataSource.setUrl(env.getProperty("jdbc.url")); + dataSource.setUsername(env.getProperty("jdbc.user")); + dataSource.setPassword(env.getProperty("jdbc.pass")); + + return dataSource; + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); + em.setDataSource(dataSource()); + em.setPackagesToScan(new String[] { "com.baeldung.inmemory.persistence.model" }); + em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); + em.setJpaProperties(additionalProperties()); + return em; + } + + @Bean + JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { + JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory); + return transactionManager; + } + + final Properties additionalProperties() { + final Properties hibernateProperties = new Properties(); + + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql")); + hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache")); + hibernateProperties.setProperty("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache")); + + return hibernateProperties; + } +} diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java new file mode 100644 index 0000000000..be81cca76b --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java @@ -0,0 +1,20 @@ +package com.baeldung.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class[] getRootConfigClasses() { + return new Class[] { PersistenceJPAConfig.class }; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[] { SpringWebConfig.class }; + } + + @Override + protected String[] getServletMappings() { + return new String[] { "/" }; + } +} diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Course.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Course.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Course.java rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Course.java diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRating.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRating.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRating.java rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRating.java diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Student.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Student.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Student.java rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Student.java diff --git a/persistence-modules/spring-jpa-2/src/main/resources/context.xml b/persistence-modules/spring-jpa-2/src/main/resources/context.xml new file mode 100644 index 0000000000..a64dfe9a61 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/resources/context.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/main/resources/logback.xml b/persistence-modules/spring-jpa-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..ec0dc2469a --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties b/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties new file mode 100644 index 0000000000..a3060cc796 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties @@ -0,0 +1,10 @@ +# jdbc.X +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 +jdbc.user=sa +jdbc.pass= + +# hibernate.X +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=create-drop \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties b/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties new file mode 100644 index 0000000000..d4c82420de --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties @@ -0,0 +1,11 @@ +jdbc.driverClassName=com.mysql.cj.jdbc.Driver +jdbc.url=jdbc:mysql://localhost:3306/myDb +jdbc.user=tutorialuser +jdbc.pass=tutorialpass + +hibernate.dialect=org.hibernate.dialect.MySQL5Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=create-drop + +hibernate.cache.use_second_level_cache=false +hibernate.cache.use_query_cache=false \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml b/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml new file mode 100644 index 0000000000..57687c306d --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + ${hibernate.hbm2ddl.auto} + ${hibernate.dialect} + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/main/resources/server.xml b/persistence-modules/spring-jpa-2/src/main/resources/server.xml new file mode 100644 index 0000000000..5c61659018 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/resources/server.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties b/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties new file mode 100644 index 0000000000..0bea6adad1 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties @@ -0,0 +1 @@ +spring.jpa.hibernate.ddl-auto=none \ No newline at end of file diff --git a/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml b/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml new file mode 100644 index 0000000000..495f076fef --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml @@ -0,0 +1,20 @@ + + + + com.baeldung.persistence.model.Foo + com.baeldung.persistence.model.Bar + + + + + + + + + + + + + diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java new file mode 100644 index 0000000000..abc73e250d --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java @@ -0,0 +1,21 @@ +package com.baeldung; + +import com.baeldung.config.PersistenceJPAConfig; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.test.context.web.WebAppConfiguration; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class) +@WebAppConfiguration +@DirtiesContext +public class SpringContextTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } +} diff --git a/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java similarity index 100% rename from persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java rename to persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java diff --git a/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java similarity index 97% rename from persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java rename to persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java index f4635b563a..1cc3621f0d 100644 --- a/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java +++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java @@ -16,7 +16,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; @Configuration -@PropertySource("classpath:/manytomany/test.properties") +@PropertySource("manytomany/test.properties") public class ManyToManyTestConfiguration { @Bean diff --git a/persistence-modules/spring-jpa-2/src/test/resources/.gitignore b/persistence-modules/spring-jpa-2/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/persistence-modules/spring-jpa/src/test/resources/manytomany/db.sql b/persistence-modules/spring-jpa-2/src/test/resources/manytomany/db.sql similarity index 100% rename from persistence-modules/spring-jpa/src/test/resources/manytomany/db.sql rename to persistence-modules/spring-jpa-2/src/test/resources/manytomany/db.sql diff --git a/persistence-modules/spring-jpa/src/test/resources/manytomany/test.properties b/persistence-modules/spring-jpa-2/src/test/resources/manytomany/test.properties similarity index 100% rename from persistence-modules/spring-jpa/src/test/resources/manytomany/test.properties rename to persistence-modules/spring-jpa-2/src/test/resources/manytomany/test.properties diff --git a/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties b/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties new file mode 100644 index 0000000000..3b6b580630 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties @@ -0,0 +1,9 @@ +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1 + +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=create + +hibernate.cache.use_second_level_cache=false +hibernate.cache.use_query_cache=false \ No newline at end of file diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md index 94a1e1f575..3eb8ae8d55 100644 --- a/persistence-modules/spring-jpa/README.md +++ b/persistence-modules/spring-jpa/README.md @@ -11,9 +11,7 @@ - [A Guide to Spring AbstractRoutingDatasource](https://www.baeldung.com/spring-abstract-routing-data-source) - [Obtaining Auto-generated Keys in Spring JDBC](https://www.baeldung.com/spring-jdbc-autogenerated-keys) - [Use Criteria Queries in a Spring Data Application](https://www.baeldung.com/spring-data-criteria-queries) -- [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many) -- [Spring Persistence (Hibernate and JPA) with a JNDI datasource](https://www.baeldung.com/spring-persistence-hibernate-and-jpa-with-a-jndi-datasource-2) - +- More articles: [[next -->]](/spring-jpa-2) ### Eclipse Config After importing the project into Eclipse, you may see the following error: diff --git a/pom.xml b/pom.xml index 9d9c448887..a69ffa2798 100644 --- a/pom.xml +++ b/pom.xml @@ -343,18 +343,18 @@ animal-sniffer-mvn-plugin annotations antlr - - apache-cxf - apache-libraries - apache-olingo/olingo2 - apache-poi + + apache-cxf + apache-libraries + apache-olingo/olingo2 + apache-poi apache-rocketmq - apache-shiro + apache-shiro apache-spark apache-tapestry apache-thrift apache-tika - apache-velocity + apache-velocity asciidoctor asm @@ -415,13 +415,7 @@ graphql/graphql-java grpc - gson - guava - guava-2 - guava-collections - guava-collections-map - guava-collections-set - guava-io + gson guava-modules guice @@ -449,7 +443,8 @@ java-lite java-numbers java-numbers-2 - java-numbers-3 + java-numbers-3 + java-numbers-4 java-rmi java-spi java-vavr-stream @@ -862,18 +857,18 @@ animal-sniffer-mvn-plugin annotations antlr - - apache-cxf - apache-libraries - apache-olingo/olingo2 - apache-poi + + apache-cxf + apache-libraries + apache-olingo/olingo2 + apache-poi apache-rocketmq - apache-shiro + apache-shiro apache-spark apache-tapestry apache-thrift apache-tika - apache-velocity + apache-velocity asciidoctor asm @@ -933,12 +928,7 @@ graphql/graphql-java grpc - gson - guava - guava-collections - guava-collections-map - guava-collections-set - guava-io + gson guava-modules guice @@ -967,6 +957,7 @@ java-numbers java-numbers-2 java-numbers-3 + java-numbers-4 java-rmi java-spi java-vavr-stream @@ -1416,4 +1407,4 @@ 1.4.197 - + \ No newline at end of file diff --git a/reactive-systems/README.md b/reactive-systems/README.md index 0558dd141e..b23f4e4dc4 100644 --- a/reactive-systems/README.md +++ b/reactive-systems/README.md @@ -4,4 +4,4 @@ This module contains services for article about reactive systems in Java. Please ### Relevant Articles -- [Reactive Systems in Java](https://www.baeldung.com/) +- [Reactive Systems in Java](https://www.baeldung.com/java-reactive-systems) diff --git a/rule-engines/pom.xml b/rule-engines/pom.xml index d3d3127ce0..27748a5c3e 100644 --- a/rule-engines/pom.xml +++ b/rule-engines/pom.xml @@ -16,6 +16,7 @@ easy-rules openl-tablets rulebook + diff --git a/spring-5-reactive-2/README.md b/spring-5-reactive-2/README.md index 061c15b148..54f7ad35b1 100644 --- a/spring-5-reactive-2/README.md +++ b/spring-5-reactive-2/README.md @@ -8,5 +8,5 @@ This module contains articles about reactive Spring 5 - [Testing Reactive Streams Using StepVerifier and TestPublisher](https://www.baeldung.com/reactive-streams-step-verifier-test-publisher) - [Debugging Reactive Streams in Spring 5](https://www.baeldung.com/spring-debugging-reactive-streams) - [Static Content in Spring WebFlux](https://www.baeldung.com/spring-webflux-static-content) -- [Spring WebClient Filters](https://www.baeldung.com/spring-webclient-filters) +- [Server-Sent Events in Spring](https://www.baeldung.com/spring-server-sent-events) - More articles: [[<-- prev]](/spring-5-reactive) diff --git a/spring-5-reactive-2/pom.xml b/spring-5-reactive-2/pom.xml index fdeebd1dfd..4cb85d879e 100644 --- a/spring-5-reactive-2/pom.xml +++ b/spring-5-reactive-2/pom.xml @@ -53,6 +53,11 @@ reactor-test test + + org.springframework.security + spring-security-test + test + diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/serversentevents/consumer/ConsumerSSEApplication.java b/spring-5-reactive-2/src/main/java/com/baeldung/reactive/serversentevents/consumer/ConsumerSSEApplication.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/serversentevents/consumer/ConsumerSSEApplication.java rename to spring-5-reactive-2/src/main/java/com/baeldung/reactive/serversentevents/consumer/ConsumerSSEApplication.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/serversentevents/consumer/controller/ClientController.java b/spring-5-reactive-2/src/main/java/com/baeldung/reactive/serversentevents/consumer/controller/ClientController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/serversentevents/consumer/controller/ClientController.java rename to spring-5-reactive-2/src/main/java/com/baeldung/reactive/serversentevents/consumer/controller/ClientController.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/serversentevents/server/ServerSSEApplication.java b/spring-5-reactive-2/src/main/java/com/baeldung/reactive/serversentevents/server/ServerSSEApplication.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/serversentevents/server/ServerSSEApplication.java rename to spring-5-reactive-2/src/main/java/com/baeldung/reactive/serversentevents/server/ServerSSEApplication.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/serversentevents/server/controllers/ServerController.java b/spring-5-reactive-2/src/main/java/com/baeldung/reactive/serversentevents/server/controllers/ServerController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/serversentevents/server/controllers/ServerController.java rename to spring-5-reactive-2/src/main/java/com/baeldung/reactive/serversentevents/server/controllers/ServerController.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/reactive/serversentsevents/ServiceSentEventLiveTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/reactive/serversentsevents/ServiceSentEventLiveTest.java similarity index 92% rename from spring-5-reactive/src/test/java/com/baeldung/reactive/serversentsevents/ServiceSentEventLiveTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/reactive/serversentsevents/ServiceSentEventLiveTest.java index 547cd99034..946a038763 100644 --- a/spring-5-reactive/src/test/java/com/baeldung/reactive/serversentsevents/ServiceSentEventLiveTest.java +++ b/spring-5-reactive-2/src/test/java/com/baeldung/reactive/serversentsevents/ServiceSentEventLiveTest.java @@ -8,7 +8,9 @@ import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.reactive.server.WebTestClient; -@SpringBootTest +import com.baeldung.reactive.serversentevents.server.ServerSSEApplication; + +@SpringBootTest(classes = ServerSSEApplication.class) @WithMockUser public class ServiceSentEventLiveTest { diff --git a/spring-5-reactive-client/README.md b/spring-5-reactive-client/README.md index bb308ae330..eebdc23aed 100644 --- a/spring-5-reactive-client/README.md +++ b/spring-5-reactive-client/README.md @@ -10,3 +10,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Simultaneous Spring WebClient Calls](https://www.baeldung.com/spring-webclient-simultaneous-calls) - [Logging Spring WebClient Calls](https://www.baeldung.com/spring-log-webclient-calls) - [Mocking a WebClient in Spring](https://www.baeldung.com/spring-mocking-webclient) +- [Spring WebClient Filters](https://www.baeldung.com/spring-webclient-filters) diff --git a/spring-5-reactive-client/pom.xml b/spring-5-reactive-client/pom.xml index 0b5efd1a47..7ae7ba6edd 100644 --- a/spring-5-reactive-client/pom.xml +++ b/spring-5-reactive-client/pom.xml @@ -33,6 +33,10 @@ org.springframework.boot spring-boot-starter-webflux + + org.springframework.boot + spring-boot-starter-security + org.projectreactor reactor-spring diff --git a/spring-5-reactive-2/src/main/java/com/baeldung/webclient/filter/WebClientFilters.java b/spring-5-reactive-client/src/main/java/com/baeldung/webclient/filter/WebClientFilters.java similarity index 100% rename from spring-5-reactive-2/src/main/java/com/baeldung/webclient/filter/WebClientFilters.java rename to spring-5-reactive-client/src/main/java/com/baeldung/webclient/filter/WebClientFilters.java diff --git a/spring-5-reactive-2/src/test/java/com/baeldung/webclient/filter/FilteredWebClientUnitTest.java b/spring-5-reactive-client/src/test/java/com/baeldung/webclient/filter/FilteredWebClientUnitTest.java similarity index 100% rename from spring-5-reactive-2/src/test/java/com/baeldung/webclient/filter/FilteredWebClientUnitTest.java rename to spring-5-reactive-client/src/test/java/com/baeldung/webclient/filter/FilteredWebClientUnitTest.java diff --git a/spring-5-reactive-security/README.md b/spring-5-reactive-security/README.md index a0f47a503d..915f74cd78 100644 --- a/spring-5-reactive-security/README.md +++ b/spring-5-reactive-security/README.md @@ -12,3 +12,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Guide to Spring 5 WebFlux](https://www.baeldung.com/spring-webflux) - [Introduction to the Functional Web Framework in Spring 5](https://www.baeldung.com/spring-5-functional-web) - [Guide to the AuthenticationManagerResolver in Spring Security](https://www.baeldung.com/spring-security-authenticationmanagerresolver) +- [Spring Webflux and CORS](https://www.baeldung.com/spring-webflux-cors) diff --git a/spring-5-reactive-security/pom.xml b/spring-5-reactive-security/pom.xml index 58c993bda5..2024cb5138 100644 --- a/spring-5-reactive-security/pom.xml +++ b/spring-5-reactive-security/pom.xml @@ -128,7 +128,6 @@ 1.0 4.1 3.1.6.RELEASE - 2.2.2.RELEASE diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/annotated/CorsOnAnnotatedElementsApplication.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/annotated/CorsOnAnnotatedElementsApplication.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/annotated/CorsOnAnnotatedElementsApplication.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/annotated/CorsOnAnnotatedElementsApplication.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/annotated/controllers/CorsOnClassController.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/annotated/controllers/CorsOnClassController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/annotated/controllers/CorsOnClassController.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/annotated/controllers/CorsOnClassController.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/annotated/controllers/CorsOnMethodsController.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/annotated/controllers/CorsOnMethodsController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/annotated/controllers/CorsOnMethodsController.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/annotated/controllers/CorsOnMethodsController.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/CorsGlobalConfigApplication.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/CorsGlobalConfigApplication.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/CorsGlobalConfigApplication.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/CorsGlobalConfigApplication.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/config/CorsGlobalConfiguration.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/config/CorsGlobalConfiguration.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/config/CorsGlobalConfiguration.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/config/CorsGlobalConfiguration.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/controllers/FurtherCorsConfigsController.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/controllers/FurtherCorsConfigsController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/controllers/FurtherCorsConfigsController.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/controllers/FurtherCorsConfigsController.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/controllers/RegularRestController.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/controllers/RegularRestController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/controllers/RegularRestController.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/controllers/RegularRestController.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/functional/handlers/CorsGlobalFunctionalHandler.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/functional/handlers/CorsGlobalFunctionalHandler.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/functional/handlers/CorsGlobalFunctionalHandler.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/functional/handlers/CorsGlobalFunctionalHandler.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/functional/routers/CorsRouterFunctions.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/functional/routers/CorsRouterFunctions.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/global/functional/routers/CorsRouterFunctions.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/global/functional/routers/CorsRouterFunctions.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/CorsWebFilterApplication.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/CorsWebFilterApplication.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/CorsWebFilterApplication.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/CorsWebFilterApplication.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/config/CorsWebFilterConfig.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/config/CorsWebFilterConfig.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/config/CorsWebFilterConfig.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/config/CorsWebFilterConfig.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/controllers/FurtherCorsConfigsController.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/controllers/FurtherCorsConfigsController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/controllers/FurtherCorsConfigsController.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/controllers/FurtherCorsConfigsController.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/controllers/RegularRestController.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/controllers/RegularRestController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/controllers/RegularRestController.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/controllers/RegularRestController.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/functional/handlers/CorsWithWebFilterHandler.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/functional/handlers/CorsWithWebFilterHandler.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/functional/handlers/CorsWithWebFilterHandler.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/functional/handlers/CorsWithWebFilterHandler.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/functional/routers/CorsWithWebFilterRouterFunctions.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/functional/routers/CorsWithWebFilterRouterFunctions.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/reactive/cors/webfilter/functional/routers/CorsWithWebFilterRouterFunctions.java rename to spring-5-reactive-security/src/main/java/com/baeldung/reactive/cors/webfilter/functional/routers/CorsWithWebFilterRouterFunctions.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnAnnotatedElementsLiveTest.java b/spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnAnnotatedElementsLiveTest.java similarity index 96% rename from spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnAnnotatedElementsLiveTest.java rename to spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnAnnotatedElementsLiveTest.java index e6847e63da..5fd20eedfd 100644 --- a/spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnAnnotatedElementsLiveTest.java +++ b/spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnAnnotatedElementsLiveTest.java @@ -6,7 +6,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.test.web.reactive.server.WebTestClient.ResponseSpec; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +import com.baeldung.reactive.cors.annotated.CorsOnAnnotatedElementsApplication; + +@SpringBootTest(classes = CorsOnAnnotatedElementsApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class CorsOnAnnotatedElementsLiveTest { private static final String BASE_URL = "http://localhost:8081"; diff --git a/spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnGlobalConfigLiveTest.java b/spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnGlobalConfigLiveTest.java similarity index 94% rename from spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnGlobalConfigLiveTest.java rename to spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnGlobalConfigLiveTest.java index 008f1a16f2..5c6582c127 100644 --- a/spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnGlobalConfigLiveTest.java +++ b/spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnGlobalConfigLiveTest.java @@ -6,7 +6,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.test.web.reactive.server.WebTestClient.ResponseSpec; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +import com.baeldung.reactive.cors.global.CorsGlobalConfigApplication; + +@SpringBootTest(classes = CorsGlobalConfigApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class CorsOnGlobalConfigLiveTest { private static final String BASE_URL = "http://localhost:8082"; diff --git a/spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnWebFilterLiveTest.java b/spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnWebFilterLiveTest.java similarity index 94% rename from spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnWebFilterLiveTest.java rename to spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnWebFilterLiveTest.java index f8a4f34e29..7cc44454ec 100644 --- a/spring-5-reactive/src/test/java/com/baeldung/reactive/cors/CorsOnWebFilterLiveTest.java +++ b/spring-5-reactive-security/src/test/java/com/baeldung/reactive/cors/CorsOnWebFilterLiveTest.java @@ -6,7 +6,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.test.web.reactive.server.WebTestClient.ResponseSpec; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +import com.baeldung.reactive.cors.webfilter.CorsWebFilterApplication; + +@SpringBootTest(classes = CorsWebFilterApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class CorsOnWebFilterLiveTest { private static final String BASE_URL = "http://localhost:8083"; diff --git a/spring-5-reactive/README.md b/spring-5-reactive/README.md index 41d831632a..1945b7ea33 100644 --- a/spring-5-reactive/README.md +++ b/spring-5-reactive/README.md @@ -7,14 +7,11 @@ The "REST With Spring" Classes: https://bit.ly/restwithspring ### Relevant Articles -- [Introduction to the Functional Web Framework in Spring 5](https://www.baeldung.com/spring-5-functional-web) - [Spring 5 WebClient](https://www.baeldung.com/spring-5-webclient) - [Exploring the Spring 5 WebFlux URL Matching](https://www.baeldung.com/spring-5-mvc-url-matching) - [Reactive WebSockets with Spring 5](https://www.baeldung.com/spring-5-reactive-websockets) - [Spring Webflux Filters](https://www.baeldung.com/spring-webflux-filters) - [How to Set a Header on a Response with Spring 5](https://www.baeldung.com/spring-response-header) -- [Spring Webflux and CORS](https://www.baeldung.com/spring-webflux-cors) - [Handling Errors in Spring WebFlux](https://www.baeldung.com/spring-webflux-errors) -- [Server-Sent Events in Spring](https://www.baeldung.com/spring-server-sent-events) - [A Guide to Spring Session Reactive Support: WebSession](https://www.baeldung.com/spring-session-reactive) - More articles: [[next -->]](/spring-5-reactive-2) diff --git a/spring-5-security-oauth/pom.xml b/spring-5-security-oauth/pom.xml index 40d54bf668..325aacea86 100644 --- a/spring-5-security-oauth/pom.xml +++ b/spring-5-security-oauth/pom.xml @@ -37,7 +37,7 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - ${oauth-auto.version} + ${spring-boot.version} org.springframework.security @@ -65,8 +65,6 @@ - 2.1.0.RELEASE - 2.1.0.RELEASE com.baeldung.oauth2.SpringOAuthApplication diff --git a/spring-5-security/pom.xml b/spring-5-security/pom.xml index 3fd31c8bc5..c486d5346b 100644 --- a/spring-5-security/pom.xml +++ b/spring-5-security/pom.xml @@ -60,8 +60,5 @@ - - 2.2.1.RELEASE - diff --git a/spring-5-security/src/main/java/com/baeldung/logoutredirects/LogoutApplication.java b/spring-5-security/src/main/java/com/baeldung/logoutredirects/LogoutApplication.java new file mode 100644 index 0000000000..ef8175ffb2 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/logoutredirects/LogoutApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.logoutredirects; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LogoutApplication { + + public static void main(String[] args) { + SpringApplication.run(LogoutApplication.class, args); + } + +} diff --git a/spring-5-security/src/main/java/com/baeldung/logoutredirects/securityconfig/SpringSecurityConfig.java b/spring-5-security/src/main/java/com/baeldung/logoutredirects/securityconfig/SpringSecurityConfig.java new file mode 100644 index 0000000000..64141f63d8 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/logoutredirects/securityconfig/SpringSecurityConfig.java @@ -0,0 +1,27 @@ +package com.baeldung.logoutredirects.securityconfig; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests(authz -> authz.mvcMatchers("/login") + .permitAll() + .anyRequest() + .authenticated()) + .logout(logout -> logout.permitAll() + .logoutSuccessHandler((request, response, authentication) -> { + response.setStatus(HttpServletResponse.SC_OK); + })); + + } + +} diff --git a/spring-5-security/src/main/resources/application.properties b/spring-5-security/src/main/resources/application.properties index 5912b0f755..8159ace060 100644 --- a/spring-5-security/src/main/resources/application.properties +++ b/spring-5-security/src/main/resources/application.properties @@ -2,4 +2,6 @@ server.port=8081 logging.level.root=INFO -logging.level.com.baeldung.dsl.ClientErrorLoggingFilter=DEBUG \ No newline at end of file +logging.level.com.baeldung.dsl.ClientErrorLoggingFilter=DEBUG + +logging.level.org.springframework.security=DEBUG \ No newline at end of file diff --git a/spring-5-security/src/test/java/com/baeldung/logoutredirects/LogoutApplicationUnitTest.java b/spring-5-security/src/test/java/com/baeldung/logoutredirects/LogoutApplicationUnitTest.java new file mode 100644 index 0000000000..519a6bdc99 --- /dev/null +++ b/spring-5-security/src/test/java/com/baeldung/logoutredirects/LogoutApplicationUnitTest.java @@ -0,0 +1,34 @@ +package com.baeldung.logoutredirects; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.unauthenticated; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +@RunWith(SpringRunner.class) +@WebMvcTest() +public class LogoutApplicationUnitTest { + + @Autowired + private MockMvc mockMvc; + + @WithMockUser(value = "spring") + @Test + public void whenLogout_thenDisableRedirect() throws Exception { + + this.mockMvc.perform(post("/logout").with(csrf())) + .andExpect(status().isOk()) + .andExpect(jsonPath("$").doesNotExist()) + .andExpect(unauthenticated()) + .andReturn(); + } + +} \ No newline at end of file diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml index 84f1f0e86c..3a2f14f5df 100644 --- a/spring-boot-modules/pom.xml +++ b/spring-boot-modules/pom.xml @@ -62,6 +62,7 @@ spring-boot-springdoc spring-boot-testing spring-boot-vue + spring-boot-xml spring-boot-actuator diff --git a/spring-boot-modules/spring-boot-basic-customization/pom.xml b/spring-boot-modules/spring-boot-basic-customization/pom.xml index fc34994a85..2a4b321c5f 100644 --- a/spring-boot-modules/spring-boot-basic-customization/pom.xml +++ b/spring-boot-modules/spring-boot-basic-customization/pom.xml @@ -4,11 +4,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + - com.baeldung.spring-boot-modules - spring-boot-modules - 1.0.0-SNAPSHOT - ../ + org.springframework.boot + spring-boot-starter-parent + 2.3.2.RELEASE + spring-boot-basic-customization diff --git a/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/errorhandling/controllers/MyErrorController.java b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/errorhandling/controllers/MyErrorController.java index e002ac045d..8a7a3d6e45 100644 --- a/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/errorhandling/controllers/MyErrorController.java +++ b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/errorhandling/controllers/MyErrorController.java @@ -34,7 +34,7 @@ public class MyErrorController implements ErrorController { @Override public String getErrorPath() { - return "/error"; + return null; } } diff --git a/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/ExceptionExitCodeGeneratorApplication.java b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/ExceptionExitCodeGeneratorApplication.java new file mode 100644 index 0000000000..a4ccb61dbb --- /dev/null +++ b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/ExceptionExitCodeGeneratorApplication.java @@ -0,0 +1,21 @@ +package com.baeldung.exitcode.exceptionexitgen; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class ExceptionExitCodeGeneratorApplication { + + public static void main(String[] args) { + SpringApplication.run(ExceptionExitCodeGeneratorApplication.class, args); + } + + @Bean + CommandLineRunner failApplication() { + return args -> { + throw new FailedToStartException(); + }; + } +} diff --git a/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/FailedToStartException.java b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/FailedToStartException.java new file mode 100644 index 0000000000..04ac553153 --- /dev/null +++ b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/FailedToStartException.java @@ -0,0 +1,11 @@ +package com.baeldung.exitcode.exceptionexitgen; + +import org.springframework.boot.ExitCodeGenerator; + +public class FailedToStartException extends RuntimeException implements ExitCodeGenerator { + + @Override + public int getExitCode() { + return 127; + } +} diff --git a/spring-boot-modules/spring-boot-basic-customization/src/main/resources/application.properties b/spring-boot-modules/spring-boot-basic-customization/src/main/resources/application.properties index 4d4a6ec7bd..53f13c4767 100644 --- a/spring-boot-modules/spring-boot-basic-customization/src/main/resources/application.properties +++ b/spring-boot-modules/spring-boot-basic-customization/src/main/resources/application.properties @@ -5,3 +5,4 @@ #spring.banner.image.height= //TODO #spring.banner.image.margin= //TODO #spring.banner.image.invert= //TODO +server.error.path=/error diff --git a/spring-boot-modules/spring-boot-crud/pom.xml b/spring-boot-modules/spring-boot-crud/pom.xml index 8ba7bab171..a4be360b0f 100644 --- a/spring-boot-modules/spring-boot-crud/pom.xml +++ b/spring-boot-modules/spring-boot-crud/pom.xml @@ -63,6 +63,7 @@ org.apache.maven.plugins maven-assembly-plugin + 3.3.0 jar-with-dependencies diff --git a/spring-boot-modules/spring-boot-data/README.md b/spring-boot-modules/spring-boot-data/README.md index faa38d475e..98589cf2d2 100644 --- a/spring-boot-modules/spring-boot-data/README.md +++ b/spring-boot-modules/spring-boot-data/README.md @@ -10,3 +10,4 @@ This module contains articles about Spring Boot with Spring Data - [Repositories with Multiple Spring Data Modules](https://www.baeldung.com/spring-multiple-data-modules) - [Spring Custom Property Editor](https://www.baeldung.com/spring-mvc-custom-property-editor) - [Using @JsonComponent in Spring Boot](https://www.baeldung.com/spring-boot-jsoncomponent) +- [Running Setup Data on Startup in Spring](https://www.baeldung.com/running-setup-logic-on-startup-in-spring) diff --git a/spring-core-4/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java similarity index 99% rename from spring-core-4/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java index e08309d474..53b81da340 100644 --- a/spring-core-4/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java +++ b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java @@ -2,7 +2,6 @@ package com.baeldung.startup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; diff --git a/spring-core-4/src/main/java/com/baeldung/startup/EventListenerExampleBean.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/EventListenerExampleBean.java similarity index 99% rename from spring-core-4/src/main/java/com/baeldung/startup/EventListenerExampleBean.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/EventListenerExampleBean.java index a76fc6a2b2..8a2e36ed8e 100644 --- a/spring-core-4/src/main/java/com/baeldung/startup/EventListenerExampleBean.java +++ b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/EventListenerExampleBean.java @@ -2,7 +2,6 @@ package com.baeldung.startup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; diff --git a/spring-core-4/src/main/java/com/baeldung/startup/InitMethodExampleBean.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/InitMethodExampleBean.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/startup/InitMethodExampleBean.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/InitMethodExampleBean.java index a3b12028d1..86f61dd395 100644 --- a/spring-core-4/src/main/java/com/baeldung/startup/InitMethodExampleBean.java +++ b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/InitMethodExampleBean.java @@ -1,7 +1,5 @@ package com.baeldung.startup; -import java.util.Arrays; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -9,6 +7,8 @@ import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import java.util.Arrays; + @Component @Scope(value = "prototype") public class InitMethodExampleBean { diff --git a/spring-core-4/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java index c625a172fd..8fef3bf8b7 100644 --- a/spring-core-4/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java +++ b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java @@ -1,7 +1,5 @@ package com.baeldung.startup; -import java.util.Arrays; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; @@ -10,6 +8,8 @@ import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import java.util.Arrays; + @Component @Scope(value = "prototype") public class InitializingBeanExampleBean implements InitializingBean { diff --git a/spring-core-4/src/main/java/com/baeldung/startup/InvalidInitExampleBean.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/InvalidInitExampleBean.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/startup/InvalidInitExampleBean.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/InvalidInitExampleBean.java diff --git a/spring-core-4/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java index ade7573bbe..b4a102b09d 100644 --- a/spring-core-4/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java +++ b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java @@ -1,7 +1,5 @@ package com.baeldung.startup; -import java.util.Arrays; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -9,6 +7,8 @@ import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import java.util.Arrays; + @Component @Scope(value = "prototype") public class LogicInConstructorExampleBean { diff --git a/spring-core-4/src/main/java/com/baeldung/startup/PostConstructExampleBean.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/PostConstructExampleBean.java similarity index 99% rename from spring-core-4/src/main/java/com/baeldung/startup/PostConstructExampleBean.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/PostConstructExampleBean.java index 1001043d86..337aa1520a 100644 --- a/spring-core-4/src/main/java/com/baeldung/startup/PostConstructExampleBean.java +++ b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/PostConstructExampleBean.java @@ -1,9 +1,5 @@ package com.baeldung.startup; -import java.util.Arrays; - -import javax.annotation.PostConstruct; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -11,6 +7,9 @@ import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; +import java.util.Arrays; + @Component @Scope(value = "prototype") public class PostConstructExampleBean { diff --git a/spring-core-4/src/main/java/com/baeldung/startup/SpringStartupConfig.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/SpringStartupConfig.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/startup/SpringStartupConfig.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/SpringStartupConfig.java diff --git a/spring-core-4/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java similarity index 99% rename from spring-core-4/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java rename to spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java index 2cc5e6abcb..345fb3a625 100644 --- a/spring-core-4/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java +++ b/spring-boot-modules/spring-boot-data/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java @@ -2,7 +2,6 @@ package com.baeldung.startup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; diff --git a/spring-core-4/src/main/resources/startupConfig.xml b/spring-boot-modules/spring-boot-data/src/main/resources/startupConfig.xml similarity index 100% rename from spring-core-4/src/main/resources/startupConfig.xml rename to spring-boot-modules/spring-boot-data/src/main/resources/startupConfig.xml diff --git a/spring-core-4/src/test/java/com/baeldung/startup/SpringStartupIntegrationTest.java b/spring-boot-modules/spring-boot-data/src/test/java/com/baeldung/startup/SpringStartupIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/startup/SpringStartupIntegrationTest.java rename to spring-boot-modules/spring-boot-data/src/test/java/com/baeldung/startup/SpringStartupIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java b/spring-boot-modules/spring-boot-data/src/test/java/com/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java rename to spring-boot-modules/spring-boot-data/src/test/java/com/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java diff --git a/spring-boot-modules/spring-boot-mvc-2/README.md b/spring-boot-modules/spring-boot-mvc-2/README.md index c42730f9cc..f9becb721f 100644 --- a/spring-boot-modules/spring-boot-mvc-2/README.md +++ b/spring-boot-modules/spring-boot-mvc-2/README.md @@ -11,4 +11,5 @@ This module contains articles about Spring Web MVC in Spring Boot projects. - [Testing REST with multiple MIME types](https://www.baeldung.com/testing-rest-api-with-multiple-media-types) - [Testing Web APIs with Postman Collections](https://www.baeldung.com/postman-testing-collections) - [Spring Boot Consuming and Producing JSON](https://www.baeldung.com/spring-boot-json) +- [Serve Static Resources with Spring](https://www.baeldung.com/spring-mvc-static-resources) - More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc) diff --git a/spring-boot-modules/spring-boot-mvc-2/pom.xml b/spring-boot-modules/spring-boot-mvc-2/pom.xml index 73a75f020c..0b9213a7ea 100644 --- a/spring-boot-modules/spring-boot-mvc-2/pom.xml +++ b/spring-boot-modules/spring-boot-mvc-2/pom.xml @@ -90,15 +90,15 @@ - jcenter-snapshots + jcenter-release jcenter - http://oss.jfrog.org/artifactory/oss-snapshot-local/ + http://oss.jfrog.org/artifactory/oss-release-local/ - 3.0.0-SNAPSHOT + 3.0.0 com.baeldung.swagger2boot.SpringBootSwaggerApplication 1.4.11.1 diff --git a/spring-boot-modules/spring-boot-mvc-3/README.md b/spring-boot-modules/spring-boot-mvc-3/README.md index 58a3008966..0562224337 100644 --- a/spring-boot-modules/spring-boot-mvc-3/README.md +++ b/spring-boot-modules/spring-boot-mvc-3/README.md @@ -5,4 +5,5 @@ This module contains articles about Spring Web MVC in Spring Boot projects. ### Relevant Articles: - [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) +- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) - More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) diff --git a/spring-boot-modules/spring-boot-mvc-3/pom.xml b/spring-boot-modules/spring-boot-mvc-3/pom.xml index 71b7383ef4..31c43461d2 100644 --- a/spring-boot-modules/spring-boot-mvc-3/pom.xml +++ b/spring-boot-modules/spring-boot-mvc-3/pom.xml @@ -26,6 +26,15 @@ org.springframework.boot spring-boot-starter-thymeleaf + + commons-io + commons-io + ${commons-io.version} + + + 2.7 + + \ No newline at end of file diff --git a/spring-resttemplate/src/main/java/com/baeldung/produceimage/ImageApplication.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/produceimage/ImageApplication.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/produceimage/ImageApplication.java rename to spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/produceimage/ImageApplication.java diff --git a/spring-resttemplate/src/main/java/com/baeldung/produceimage/controller/DataProducerController.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/produceimage/controller/DataProducerController.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/produceimage/controller/DataProducerController.java rename to spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/produceimage/controller/DataProducerController.java diff --git a/spring-boot-modules/spring-boot-mvc/pom.xml b/spring-boot-modules/spring-boot-mvc/pom.xml index fd6f1b0a8a..9ae6d8341a 100644 --- a/spring-boot-modules/spring-boot-mvc/pom.xml +++ b/spring-boot-modules/spring-boot-mvc/pom.xml @@ -20,9 +20,9 @@ - jcenter-snapshots + jcenter-release jcenter - http://oss.jfrog.org/artifactory/oss-snapshot-local/ + http://oss.jfrog.org/artifactory/oss-release-local/ @@ -148,7 +148,7 @@ - 3.0.0-SNAPSHOT + 3.0.0 1.10.0 2.3.7 diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java deleted file mode 100644 index 56231a28bd..0000000000 --- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2resource; - -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@EnableResourceServer -@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2resource") -public class SpringBootOAuth2ResourceApplication { - - public static void main(String[] args) { - new SpringApplicationBuilder() - .profiles("resource") - .sources(SpringBootOAuth2ResourceApplication.class) - .build() - .run(args); - } - - @RestController - class SecuredResourceController { - - @GetMapping("/securedResource") - public String securedResource() { - return "Baeldung Secured Resource OK"; - } - - } -} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java deleted file mode 100644 index 04f046ff78..0000000000 --- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2server; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.annotation.CurrentSecurityContext; -import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; -import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.security.Principal; - -@EnableResourceServer -@EnableAuthorizationServer -@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2server") -public class SpringBootAuthorizationServerApplication { - - private static final Logger logger = LoggerFactory.getLogger(SpringBootAuthorizationServerApplication.class); - - public static void main(String[] args) { - SpringApplication.run(SpringBootAuthorizationServerApplication.class, args); - } - - @RestController - class UserController { - - @GetMapping("/user") - public Principal user(Principal user) { - return user; - } - - @GetMapping("/authentication") - public Object getAuthentication(@CurrentSecurityContext(expression = "authentication") Authentication authentication) { - logger.info("authentication -> {}", authentication); - return authentication.getDetails(); - } - - @GetMapping("/principal") - public String getPrincipal(@CurrentSecurityContext(expression = "authentication.principal") Principal principal) { - logger.info("principal -> {}", principal); - return principal.getName(); - } - } -} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java deleted file mode 100644 index 2b4135f36d..0000000000 --- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2server.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; - -@Configuration -@Profile("authz") -public class AuthenticationMananagerConfig extends WebSecurityConfigurerAdapter { - - @Bean - @Override - public AuthenticationManager authenticationManagerBean() throws Exception { - return super.authenticationManagerBean(); - } -} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java deleted file mode 100644 index 6e21987a89..0000000000 --- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2server.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; -import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; -import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer; - -@Configuration -@Profile("authz") -public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { - - @Autowired - private AuthenticationManager authenticationManager; - - @Override - public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { - endpoints.authenticationManager(authenticationManager); - } - - @Override - public void configure(ClientDetailsServiceConfigurer clients) throws Exception { - clients - .inMemory() - .withClient("baeldung") - .secret(passwordEncoder().encode("baeldung")) - .authorizedGrantTypes("client_credentials", "password", "authorization_code") - .scopes("openid", "read") - .autoApprove(true) - .and() - .withClient("baeldung-admin") - .secret(passwordEncoder().encode("baeldung")) - .authorizedGrantTypes("authorization_code", "client_credentials", "refresh_token") - .scopes("read", "write") - .autoApprove(true); - } - - @Bean - public BCryptPasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } -} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java deleted file mode 100644 index 3a8c073870..0000000000 --- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2server.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; - -@Configuration -@Profile("!authz") -public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { - - @Bean - public AuthenticationManager customAuthenticationManager() throws Exception { - return authenticationManager(); - } -} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java deleted file mode 100644 index 342c246e66..0000000000 --- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2sso; - -import org.springframework.boot.autoconfigure.SpringBootApplication; - -import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; -import org.springframework.boot.builder.SpringApplicationBuilder; - -@EnableOAuth2Sso -@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2sso") -public class SpringBootOAuth2SsoApplication { - - public static void main(String[] args) { - new SpringApplicationBuilder() - .profiles("sso") - .sources(SpringBootOAuth2SsoApplication.class) - .build() - .run(args); - } -} diff --git a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java deleted file mode 100644 index 104e115b18..0000000000 --- a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2server; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; -import org.springframework.security.oauth2.client.OAuth2RestTemplate; -import org.springframework.security.oauth2.client.resource.OAuth2AccessDeniedException; -import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; -import org.springframework.security.oauth2.common.OAuth2AccessToken; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringRunner; - -import java.net.URL; -import java.util.regex.Pattern; - -import static java.util.Collections.singletonList; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = RANDOM_PORT, classes = SpringBootAuthorizationServerApplication.class) -@ActiveProfiles("authz") -public class CustomConfigAuthorizationServerIntegrationTest extends OAuth2IntegrationTestSupport { - - @LocalServerPort - private int port; - - @Before - public void setUp() throws Exception { - base = new URL("http://localhost:" + port); - } - - @Test - public void givenOAuth2Context_whenAccessTokenIsRequested_ThenAccessTokenValueIsNotNull() { - ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung", singletonList("read")); - OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails); - - OAuth2AccessToken accessToken = restTemplate.getAccessToken(); - - assertNotNull(accessToken); - } - - @Test - public void givenOAuth2Context_whenAccessingAuthentication_ThenRespondTokenDetails() { - ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung", singletonList("read")); - OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails); - - String authentication = executeGetRequest(restTemplate, "/authentication"); - - Pattern pattern = Pattern.compile("\\{\"remoteAddress\":\".*" + - "\",\"sessionId\":null,\"tokenValue\":\".*" + - "\",\"tokenType\":\"Bearer\",\"decodedDetails\":null}"); - assertTrue("authentication", pattern.matcher(authentication).matches()); - } - - @Test - public void givenOAuth2Context_whenAccessingPrincipal_ThenRespondBaeldung() { - ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung", singletonList("read")); - OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails); - - String principal = executeGetRequest(restTemplate, "/principal"); - - assertEquals("baeldung", principal); - } - - @Test(expected = OAuth2AccessDeniedException.class) - public void givenOAuth2Context_whenAccessTokenIsRequestedWithInvalidException_ThenExceptionIsThrown() { - ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung", singletonList("write")); - OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails); - - restTemplate.getAccessToken(); - } - - @Test - public void givenOAuth2Context_whenAccessTokenIsRequestedByClientWithWriteScope_ThenAccessTokenIsNotNull() { - ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung-admin", singletonList("write")); - OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails); - - OAuth2AccessToken accessToken = restTemplate.getAccessToken(); - - assertNotNull(accessToken); - } - -} - diff --git a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java deleted file mode 100644 index 4d7b449380..0000000000 --- a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2server; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.security.oauth2.client.OAuth2RestTemplate; -import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; -import org.springframework.security.oauth2.common.OAuth2AccessToken; -import org.springframework.test.context.junit4.SpringRunner; - -import static java.util.Arrays.asList; -import static org.junit.Assert.assertNotNull; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = RANDOM_PORT, classes = SpringBootAuthorizationServerApplication.class, - properties = { "security.oauth2.client.client-id=client", "security.oauth2.client.client-secret=baeldung" }) -public class DefaultConfigAuthorizationServerIntegrationTest extends OAuth2IntegrationTestSupport { - - @Test - public void givenOAuth2Context_whenAccessTokenIsRequested_ThenAccessTokenValueIsNotNull() { - ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("client", asList("read", "write")); - OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails); - - OAuth2AccessToken accessToken = restTemplate.getAccessToken(); - - assertNotNull(accessToken); - - } - -} - diff --git a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/OAuth2IntegrationTestSupport.java b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/OAuth2IntegrationTestSupport.java deleted file mode 100644 index a005965998..0000000000 --- a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/OAuth2IntegrationTestSupport.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.baeldung.springbootsecurity.oauth2server; - -import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext; -import org.springframework.security.oauth2.client.OAuth2RestTemplate; -import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; -import org.springframework.web.client.RequestCallback; -import org.springframework.web.client.ResponseExtractor; - -import java.net.URL; -import java.nio.charset.Charset; -import java.util.List; - -import static java.lang.String.format; -import static java.util.Collections.singletonList; -import static org.springframework.http.HttpMethod.GET; - -public class OAuth2IntegrationTestSupport { - - public static final ResponseExtractor EXTRACT_BODY_AS_STRING = clientHttpResponse -> - IOUtils.toString(clientHttpResponse.getBody(), Charset.defaultCharset()); - private static final RequestCallback DO_NOTHING_CALLBACK = request -> { - }; - - @Value("${local.server.port}") - protected int port; - - protected URL base; - - protected ClientCredentialsResourceDetails getClientCredentialsResourceDetails(final String clientId, final List scopes) { - ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails(); - resourceDetails.setAccessTokenUri(format("http://localhost:%d/oauth/token", port)); - resourceDetails.setClientId(clientId); - resourceDetails.setClientSecret("baeldung"); - resourceDetails.setScope(scopes); - resourceDetails.setGrantType("client_credentials"); - return resourceDetails; - } - - protected OAuth2RestTemplate getOAuth2RestTemplate(final ClientCredentialsResourceDetails resourceDetails) { - DefaultOAuth2ClientContext clientContext = new DefaultOAuth2ClientContext(); - OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resourceDetails, clientContext); - restTemplate.setMessageConverters(singletonList(new MappingJackson2HttpMessageConverter())); - return restTemplate; - } - - protected String executeGetRequest(OAuth2RestTemplate restTemplate, String path) { - return restTemplate.execute(base.toString() + path, GET, DO_NOTHING_CALLBACK, EXTRACT_BODY_AS_STRING); - } - -} diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/testloglevel/TestLogLevelApplication.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/testloglevel/TestLogLevelApplication.java index ed8218c6a3..ef4534938b 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/testloglevel/TestLogLevelApplication.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/testloglevel/TestLogLevelApplication.java @@ -3,13 +3,11 @@ package com.baeldung.testloglevel; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import com.baeldung.boot.Application; - @SpringBootApplication(scanBasePackages = {"com.baeldung.testloglevel", "com.baeldung.component"}) public class TestLogLevelApplication { public static void main(String[] args) { - SpringApplication.run(Application.class, args); + SpringApplication.run(TestLogLevelApplication.class, args); } } diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/LogbackMultiProfileTestLogLevelIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/LogbackMultiProfileTestLogLevelIntegrationTest.java index f8bd61e5c7..ffe99672be 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/LogbackMultiProfileTestLogLevelIntegrationTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/LogbackMultiProfileTestLogLevelIntegrationTest.java @@ -16,9 +16,9 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_CLASS; +import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD; -@DirtiesContext(classMode = AFTER_CLASS) +@DirtiesContext(classMode = AFTER_EACH_TEST_METHOD) @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = TestLogLevelApplication.class) @EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class) diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/LogbackTestLogLevelIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/LogbackTestLogLevelIntegrationTest.java index ffe9d400ed..cbd22e8087 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/LogbackTestLogLevelIntegrationTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/LogbackTestLogLevelIntegrationTest.java @@ -16,9 +16,9 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_CLASS; +import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD; -@DirtiesContext(classMode = AFTER_CLASS) +@DirtiesContext(classMode = AFTER_EACH_TEST_METHOD) @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = TestLogLevelApplication.class) @EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class) diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/TestLogLevelWithProfileIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/TestLogLevelWithProfileIntegrationTest.java index 6e80f50c00..571b826b80 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/TestLogLevelWithProfileIntegrationTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/testloglevel/TestLogLevelWithProfileIntegrationTest.java @@ -16,10 +16,10 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_CLASS; +import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD; @RunWith(SpringRunner.class) -@DirtiesContext(classMode = AFTER_CLASS) +@DirtiesContext(classMode = AFTER_EACH_TEST_METHOD) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = TestLogLevelApplication.class) @EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class) @ActiveProfiles("logging-test") diff --git a/spring-boot-modules/spring-boot-xml/pom.xml b/spring-boot-modules/spring-boot-xml/pom.xml new file mode 100644 index 0000000000..e1ddd8f437 --- /dev/null +++ b/spring-boot-modules/spring-boot-xml/pom.xml @@ -0,0 +1,40 @@ + + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + 4.0.0 + + spring-boot-xml + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-test + + + junit + junit + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/Pojo.java b/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/Pojo.java new file mode 100644 index 0000000000..8c8b47ed40 --- /dev/null +++ b/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/Pojo.java @@ -0,0 +1,17 @@ +package com.baeldung.springbootxml; + +public class Pojo { + + private String field; + + public Pojo() { + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } +} diff --git a/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/SpringBootXmlApplication.java b/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/SpringBootXmlApplication.java new file mode 100644 index 0000000000..addf24c427 --- /dev/null +++ b/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/SpringBootXmlApplication.java @@ -0,0 +1,29 @@ +package com.baeldung.springbootxml; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.ImportResource; + +@Configuration +@EnableAutoConfiguration +@ImportResource("classpath:beans.xml") +public class SpringBootXmlApplication implements CommandLineRunner { + + private static final Logger logger = LoggerFactory.getLogger(SpringBootXmlApplication.class); + + @Autowired private Pojo pojo; + + public static void main(String[] args) { + SpringApplication.run(SpringBootXmlApplication.class, args); + } + + public void run(String... args) { + logger.info(pojo.getField()); + } + +} diff --git a/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/SpringBootXmlApplicationIntegrationTest.java b/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/SpringBootXmlApplicationIntegrationTest.java new file mode 100644 index 0000000000..2c3993d0d8 --- /dev/null +++ b/spring-boot-modules/spring-boot-xml/src/main/java/com/baeldung/springbootxml/SpringBootXmlApplicationIntegrationTest.java @@ -0,0 +1,26 @@ +package com.baeldung.springbootxml; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = SpringBootXmlApplication.class) +public class SpringBootXmlApplicationIntegrationTest { + + @Autowired private Pojo pojo; + @Value("${sample}") private String sample; + + @Test + public void whenCallingGetter_thenPrintingProperty() { + assertThat(pojo.getField()) + .isNotBlank() + .isEqualTo(sample); + } + +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-xml/src/main/resources/application.properties b/spring-boot-modules/spring-boot-xml/src/main/resources/application.properties new file mode 100644 index 0000000000..ab9de92c82 --- /dev/null +++ b/spring-boot-modules/spring-boot-xml/src/main/resources/application.properties @@ -0,0 +1 @@ +sample=string loaded from properties! \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-xml/src/main/resources/beans.xml b/spring-boot-modules/spring-boot-xml/src/main/resources/beans.xml new file mode 100644 index 0000000000..200afecbc9 --- /dev/null +++ b/spring-boot-modules/spring-boot-xml/src/main/resources/beans.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot/README.MD b/spring-boot-modules/spring-boot/README.MD index fb1c20e988..c95fe51842 100644 --- a/spring-boot-modules/spring-boot/README.MD +++ b/spring-boot-modules/spring-boot/README.MD @@ -25,4 +25,3 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Shutdown Callbacks](https://www.baeldung.com/spring-shutdown-callbacks) - [Container Configuration in Spring Boot 2](https://www.baeldung.com/embeddedservletcontainercustomizer-configurableembeddedservletcontainer-spring-boot) - [Validation in Spring Boot](https://www.baeldung.com/spring-boot-bean-validation) -- [Running Setup Data on Startup in Spring](https://www.baeldung.com/running-setup-logic-on-startup-in-spring) diff --git a/spring-cloud/spring-cloud-openfeign/pom.xml b/spring-cloud/spring-cloud-openfeign/pom.xml index df529d7fb1..c1f3f2dc30 100644 --- a/spring-cloud/spring-cloud-openfeign/pom.xml +++ b/spring-cloud/spring-cloud-openfeign/pom.xml @@ -51,8 +51,7 @@ - 2.0.1.RELEASE - Finchley.SR2 + Hoxton.SR6 diff --git a/spring-cloud/spring-cloud-zuul/pom.xml b/spring-cloud/spring-cloud-zuul/pom.xml index 140a1337b3..b3c66dd1c6 100644 --- a/spring-cloud/spring-cloud-zuul/pom.xml +++ b/spring-cloud/spring-cloud-zuul/pom.xml @@ -72,8 +72,7 @@ - Hoxton.RELEASE - 2.2.2.RELEASE + Hoxton.SR4 diff --git a/spring-cloud/spring-cloud-zuul/spring-zuul-post-filter/pom.xml b/spring-cloud/spring-cloud-zuul/spring-zuul-post-filter/pom.xml index 8643309645..0ca9f0d050 100644 --- a/spring-cloud/spring-cloud-zuul/spring-zuul-post-filter/pom.xml +++ b/spring-cloud/spring-cloud-zuul/spring-zuul-post-filter/pom.xml @@ -18,8 +18,4 @@ - - Hoxton.SR1 - - \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml b/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml index fd6d18fc09..8873282d1e 100644 --- a/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml +++ b/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml @@ -48,8 +48,6 @@ - Finchley.SR1 - 2.0.6.RELEASE 2.2.0.RELEASE diff --git a/spring-core-4/README.md b/spring-core-4/README.md index 83b5c4933d..03a6747c1d 100644 --- a/spring-core-4/README.md +++ b/spring-core-4/README.md @@ -9,7 +9,6 @@ This module contains articles about core Spring functionality - [Spring @Import Annotation](https://www.baeldung.com/spring-import-annotation) - [Spring BeanPostProcessor](https://www.baeldung.com/spring-beanpostprocessor) - [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class) -- [Running Setup Data on Startup in Spring](https://www.baeldung.com/running-setup-logic-on-startup-in-spring) - [Constructor Injection in Spring with Lombok](https://www.baeldung.com/spring-injection-lombok) - [The Spring ApplicationContext](https://www.baeldung.com/spring-application-context) - More articles: [[<-- prev]](/spring-core-3) diff --git a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java index fde56bebc0..9b79f716e9 100644 --- a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java +++ b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java @@ -30,23 +30,23 @@ public class KafkaApplication { MessageListener listener = context.getBean(MessageListener.class); /* * Sending a Hello World message to topic 'baeldung'. - * Must be recieved by both listeners with group foo + * Must be received by both listeners with group foo * and bar with containerFactory fooKafkaListenerContainerFactory * and barKafkaListenerContainerFactory respectively. - * It will also be recieved by the listener with - * headersKafkaListenerContainerFactory as container factory + * It will also be received by the listener with + * headersKafkaListenerContainerFactory as container factory. */ producer.sendMessage("Hello, World!"); listener.latch.await(10, TimeUnit.SECONDS); /* - * Sending message to a topic with 5 partition, + * Sending message to a topic with 5 partitions, * each message to a different partition. But as per * listener configuration, only the messages from * partition 0 and 3 will be consumed. */ for (int i = 0; i < 5; i++) { - producer.sendMessageToPartion("Hello To Partioned Topic!", i); + producer.sendMessageToPartition("Hello To Partitioned Topic!", i); } listener.partitionLatch.await(10, TimeUnit.SECONDS); @@ -61,7 +61,7 @@ public class KafkaApplication { /* * Sending message to 'greeting' topic. This will send - * and recieved a java object with the help of + * and received a java object with the help of * greetingKafkaListenerContainerFactory. */ producer.sendGreetingMessage(new Greeting("Greetings", "World!")); @@ -92,7 +92,7 @@ public class KafkaApplication { private String topicName; @Value(value = "${partitioned.topic.name}") - private String partionedTopicName; + private String partitionedTopicName; @Value(value = "${filtered.topic.name}") private String filteredTopicName; @@ -119,8 +119,8 @@ public class KafkaApplication { }); } - public void sendMessageToPartion(String message, int partition) { - kafkaTemplate.send(partionedTopicName, partition, null, message); + public void sendMessageToPartition(String message, int partition) { + kafkaTemplate.send(partitionedTopicName, partition, null, message); } public void sendMessageToFiltered(String message) { @@ -144,37 +144,37 @@ public class KafkaApplication { @KafkaListener(topics = "${message.topic.name}", groupId = "foo", containerFactory = "fooKafkaListenerContainerFactory") public void listenGroupFoo(String message) { - System.out.println("Received Messasge in group 'foo': " + message); + System.out.println("Received Message in group 'foo': " + message); latch.countDown(); } @KafkaListener(topics = "${message.topic.name}", groupId = "bar", containerFactory = "barKafkaListenerContainerFactory") public void listenGroupBar(String message) { - System.out.println("Received Messasge in group 'bar': " + message); + System.out.println("Received Message in group 'bar': " + message); latch.countDown(); } @KafkaListener(topics = "${message.topic.name}", containerFactory = "headersKafkaListenerContainerFactory") public void listenWithHeaders(@Payload String message, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition) { - System.out.println("Received Messasge: " + message + " from partition: " + partition); + System.out.println("Received Message: " + message + " from partition: " + partition); latch.countDown(); } @KafkaListener(topicPartitions = @TopicPartition(topic = "${partitioned.topic.name}", partitions = { "0", "3" }), containerFactory = "partitionsKafkaListenerContainerFactory") - public void listenToParition(@Payload String message, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition) { + public void listenToPartition(@Payload String message, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition) { System.out.println("Received Message: " + message + " from partition: " + partition); this.partitionLatch.countDown(); } @KafkaListener(topics = "${filtered.topic.name}", containerFactory = "filterKafkaListenerContainerFactory") public void listenWithFilter(String message) { - System.out.println("Recieved Message in filtered listener: " + message); + System.out.println("Received Message in filtered listener: " + message); this.filterLatch.countDown(); } @KafkaListener(topics = "${greeting.topic.name}", containerFactory = "greetingKafkaListenerContainerFactory") public void greetingListener(Greeting greeting) { - System.out.println("Recieved greeting message: " + greeting); + System.out.println("Received greeting message: " + greeting); this.greetingLatch.countDown(); } diff --git a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java index fb60fadde4..00e4147cd0 100644 --- a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java +++ b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java @@ -20,7 +20,7 @@ public class KafkaTopicConfig { private String topicName; @Value(value = "${partitioned.topic.name}") - private String partionedTopicName; + private String partitionedTopicName; @Value(value = "${filtered.topic.name}") private String filteredTopicName; @@ -42,7 +42,7 @@ public class KafkaTopicConfig { @Bean public NewTopic topic2() { - return new NewTopic(partionedTopicName, 6, (short) 1); + return new NewTopic(partitionedTopicName, 6, (short) 1); } @Bean diff --git a/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/CustomWebMvcConfigurationSupport.java b/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable.dottruncated/CustomWebMvcConfigurationSupport.java similarity index 92% rename from spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/CustomWebMvcConfigurationSupport.java rename to spring-mvc-java-2/src/main/java/com/baeldung/pathvariable.dottruncated/CustomWebMvcConfigurationSupport.java index 12c208c623..24d5a447ab 100644 --- a/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/CustomWebMvcConfigurationSupport.java +++ b/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable.dottruncated/CustomWebMvcConfigurationSupport.java @@ -1,4 +1,4 @@ -package com.baeldung.pathvariable; +package com.baeldung.pathvariable.dottruncated; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; diff --git a/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/SiteController.java b/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable.dottruncated/SiteController.java similarity index 96% rename from spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/SiteController.java rename to spring-mvc-java-2/src/main/java/com/baeldung/pathvariable.dottruncated/SiteController.java index 493161b0eb..c9584afdc9 100644 --- a/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/SiteController.java +++ b/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable.dottruncated/SiteController.java @@ -1,4 +1,4 @@ -package com.baeldung.pathvariable; +package com.baeldung.pathvariable.dottruncated; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/PathVariableAnnotationController.java b/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/PathVariableAnnotationController.java new file mode 100644 index 0000000000..0cbd852095 --- /dev/null +++ b/spring-mvc-java-2/src/main/java/com/baeldung/pathvariable/PathVariableAnnotationController.java @@ -0,0 +1,89 @@ +package com.baeldung.pathvariable; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; +import java.util.Optional; + +@RestController +public class PathVariableAnnotationController { + @GetMapping("/api/employees/{id}") + @ResponseBody + public String getEmployeesById(@PathVariable String id) { + return "ID: " + id; + } + + @GetMapping("/api/employeeswithvariable/{id}") + @ResponseBody + public String getEmployeesByIdWithVariableName(@PathVariable("id") String employeeId) { + return "ID: " + employeeId; + } + + @GetMapping("/api/employees/{id}/{name}") + @ResponseBody + public String getEmployeesByIdAndName(@PathVariable String id, @PathVariable String name) { + return "ID: " + id + ", name: " + name; + } + + @GetMapping("/api/employeeswithmapvariable/{id}/{name}") + @ResponseBody + public String getEmployeesByIdAndNameWithMapVariable(@PathVariable Map pathVarsMap) { + String id = pathVarsMap.get("id"); + String name = pathVarsMap.get("name"); + if (id != null && name != null) { + return "ID: " + id + ", name: " + name; + } else { + return "Missing Parameters"; + } + } + + @GetMapping(value = { "/api/employeeswithrequired", "/api/employeeswithrequired/{id}" }) + @ResponseBody + public String getEmployeesByIdWithRequired(@PathVariable String id) { + return "ID: " + id; + } + + @GetMapping(value = { "/api/employeeswithrequiredfalse", "/api/employeeswithrequiredfalse/{id}" }) + @ResponseBody + public String getEmployeesByIdWithRequiredFalse(@PathVariable(required = false) String id) { + if (id != null) { + return "ID: " + id; + } else { + return "ID missing"; + } + } + + @GetMapping(value = { "/api/employeeswithoptional", "/api/employeeswithoptional/{id}" }) + @ResponseBody + public String getEmployeesByIdWithOptional(@PathVariable Optional id) { + if (id.isPresent()) { + return "ID: " + id.get(); + } else { + return "ID missing"; + } + } + + @GetMapping(value = { "/api/defaultemployeeswithoptional", "/api/defaultemployeeswithoptional/{id}" }) + @ResponseBody + public String getDefaultEmployeesByIdWithOptional(@PathVariable Optional id) { + if (id.isPresent()) { + return "ID: " + id.get(); + } else { + return "ID: Default Employee"; + } + } + + @GetMapping(value = { "/api/employeeswithmap/{id}", "/api/employeeswithmap" }) + @ResponseBody + public String getEmployeesByIdWithMap(@PathVariable Map pathVarsMap) { + String id = pathVarsMap.get("id"); + if (id != null) { + return "ID: " + id; + } else { + return "ID missing"; + } + } +} diff --git a/spring-resttemplate-2/README.md b/spring-resttemplate-2/README.md index d7a8a8633a..e1e0ba40b0 100644 --- a/spring-resttemplate-2/README.md +++ b/spring-resttemplate-2/README.md @@ -5,3 +5,6 @@ This module contains articles about Spring RestTemplate ### Relevant Articles: - [Spring RestTemplate Request/Response Logging](https://www.baeldung.com/spring-resttemplate-logging) +- [Proxies With RestTemplate](https://www.baeldung.com/java-resttemplate-proxy) +- [A Custom Media Type for a Spring REST API](https://www.baeldung.com/spring-rest-custom-media-type) +- [RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json) diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java new file mode 100644 index 0000000000..8df3c13d7b --- /dev/null +++ b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.resttemplate; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class RestTemplateConfigurationApplication { + + public static void main(String[] args) { + SpringApplication.run(RestTemplateConfigurationApplication.class, args); + } +} diff --git a/spring-resttemplate/src/main/java/com/baeldung/resttemplate/web/controller/PersonAPI.java b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/controller/PersonAPI.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/resttemplate/web/controller/PersonAPI.java rename to spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/controller/PersonAPI.java diff --git a/spring-resttemplate/src/main/java/com/baeldung/resttemplate/web/dto/Person.java b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/dto/Person.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/resttemplate/web/dto/Person.java rename to spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/dto/Person.java diff --git a/spring-resttemplate/src/main/java/com/baeldung/resttemplate/web/service/PersonService.java b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonService.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/resttemplate/web/service/PersonService.java rename to spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonService.java diff --git a/spring-resttemplate/src/main/java/com/baeldung/resttemplate/web/service/PersonServiceImpl.java b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonServiceImpl.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/resttemplate/web/service/PersonServiceImpl.java rename to spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonServiceImpl.java diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/config/WebConfig.java b/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/config/WebConfig.java new file mode 100644 index 0000000000..cac12c6978 --- /dev/null +++ b/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/config/WebConfig.java @@ -0,0 +1,17 @@ +package com.baeldung.sampleapp.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@EnableWebMvc +@ComponentScan({ "com.baeldung.sampleapp.web" }) +public class WebConfig implements WebMvcConfigurer { + + public WebConfig() { + super(); + } + +} diff --git a/spring-resttemplate/src/main/java/com/baeldung/sampleapp/web/controller/mediatypes/CustomMediaTypeController.java b/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/mediatypes/CustomMediaTypeController.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/sampleapp/web/controller/mediatypes/CustomMediaTypeController.java rename to spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/mediatypes/CustomMediaTypeController.java diff --git a/spring-resttemplate/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItem.java b/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItem.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItem.java rename to spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItem.java diff --git a/spring-resttemplate/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItemV2.java b/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItemV2.java similarity index 100% rename from spring-resttemplate/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItemV2.java rename to spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItemV2.java diff --git a/spring-resttemplate/src/test/java/com/baeldung/resttemplate/postjson/PersonAPILiveTest.java b/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/postjson/PersonAPILiveTest.java similarity index 100% rename from spring-resttemplate/src/test/java/com/baeldung/resttemplate/postjson/PersonAPILiveTest.java rename to spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/postjson/PersonAPILiveTest.java diff --git a/spring-resttemplate/src/test/java/com/baeldung/resttemplate/proxy/RequestFactoryLiveTest.java b/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RequestFactoryLiveTest.java similarity index 100% rename from spring-resttemplate/src/test/java/com/baeldung/resttemplate/proxy/RequestFactoryLiveTest.java rename to spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RequestFactoryLiveTest.java diff --git a/spring-resttemplate/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java b/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java similarity index 100% rename from spring-resttemplate/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java rename to spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java diff --git a/spring-resttemplate/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java b/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java similarity index 100% rename from spring-resttemplate/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java rename to spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java diff --git a/spring-resttemplate/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerLiveTest.java b/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerLiveTest.java similarity index 100% rename from spring-resttemplate/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerLiveTest.java rename to spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerLiveTest.java diff --git a/spring-resttemplate/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java b/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java similarity index 100% rename from spring-resttemplate/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java rename to spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java diff --git a/spring-resttemplate/README.md b/spring-resttemplate/README.md index bbfda4f6b8..952f35e90b 100644 --- a/spring-resttemplate/README.md +++ b/spring-resttemplate/README.md @@ -11,16 +11,11 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring RestTemplate Error Handling](https://www.baeldung.com/spring-rest-template-error-handling) - [Configure a RestTemplate with RestTemplateBuilder](https://www.baeldung.com/spring-rest-template-builder) - [Mocking a RestTemplate in Spring](https://www.baeldung.com/spring-mock-rest-template) -- [RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json) - [Download a Large File Through a Spring RestTemplate](https://www.baeldung.com/spring-resttemplate-download-large-file) - [Using the Spring RestTemplate Interceptor](https://www.baeldung.com/spring-rest-template-interceptor) - [Uploading MultipartFile with Spring RestTemplate](https://www.baeldung.com/spring-rest-template-multipart-upload) - [Get and Post Lists of Objects with RestTemplate](https://www.baeldung.com/spring-rest-template-list) -- [Copy of RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json-test) - [HTTP PUT vs HTTP PATCH in a REST API](https://www.baeldung.com/http-put-patch-difference-spring) -- [A Custom Media Type for a Spring REST API](https://www.baeldung.com/spring-rest-custom-media-type) -- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) -- [Proxies With RestTemplate](https://www.baeldung.com/java-resttemplate-proxy) ### NOTE: diff --git a/spring-resttemplate/src/test/java/com/baeldung/SpringContextTest.java b/spring-resttemplate/src/test/java/com/baeldung/SpringContextTest.java index 19d5eabd2b..43901cf37f 100644 --- a/spring-resttemplate/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-resttemplate/src/test/java/com/baeldung/SpringContextTest.java @@ -5,12 +5,10 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.produceimage.ImageApplication; import com.baeldung.responseheaders.ResponseHeadersApplication; @RunWith(SpringRunner.class) -@SpringBootTest(classes = { ImageApplication.class, - ResponseHeadersApplication.class, +@SpringBootTest(classes = { ResponseHeadersApplication.class, com.baeldung.web.upload.app.UploadApplication.class, }) public class SpringContextTest { diff --git a/spring-security-modules/spring-security-config/cors/pom.xml b/spring-security-modules/spring-security-config/cors/pom.xml index 19ca7f5ccc..175b21a77d 100644 --- a/spring-security-modules/spring-security-config/cors/pom.xml +++ b/spring-security-modules/spring-security-config/cors/pom.xml @@ -11,6 +11,7 @@ com.baeldung spring-security-modules 0.0.1-SNAPSHOT + ../../ diff --git a/spring-security-modules/spring-security-config/pom.xml b/spring-security-modules/spring-security-config/pom.xml index b3796d1cc6..2b6b6b6b4e 100644 --- a/spring-security-modules/spring-security-config/pom.xml +++ b/spring-security-modules/spring-security-config/pom.xml @@ -11,6 +11,7 @@ com.baeldung parent-modules 1.0.0-SNAPSHOT + ../../ diff --git a/spring-security-modules/spring-security-oidc/pom.xml b/spring-security-modules/spring-security-oidc/pom.xml index 91e4641450..b9a4b340a3 100644 --- a/spring-security-modules/spring-security-oidc/pom.xml +++ b/spring-security-modules/spring-security-oidc/pom.xml @@ -26,8 +26,4 @@ - - 2.2.1.RELEASE - - diff --git a/spring-session/pom.xml b/spring-session/pom.xml index 8388efb6c3..6616a0d1f3 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -21,4 +21,4 @@ spring-session-mongodb - \ No newline at end of file + diff --git a/spring-soap/.gitignore b/spring-soap/.gitignore index b83d22266a..cce17abdb9 100644 --- a/spring-soap/.gitignore +++ b/spring-soap/.gitignore @@ -1 +1,2 @@ /target/ +sun-jaxb.episode diff --git a/spring-soap/pom.xml b/spring-soap/pom.xml index 137ff03c31..bea3d033e6 100644 --- a/spring-soap/pom.xml +++ b/spring-soap/pom.xml @@ -75,6 +75,7 @@ ${project.basedir}/src/main/java com.baeldung.springsoap.client.gen ${project.basedir}/src/main/resources + true countries.wsdl diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Country.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Country.java index e17dce55f9..bb196d625d 100644 --- a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Country.java +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Country.java @@ -1,10 +1,3 @@ -// -// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 -// See https://javaee.github.io/jaxb-v2/ -// Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2020.04.25 at 03:18:49 PM IST -// - package com.baeldung.springsoap.client.gen; diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java index 12fdef58c2..023a8103e5 100644 --- a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java @@ -1,10 +1,3 @@ -// -// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 -// See https://javaee.github.io/jaxb-v2/ -// Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2020.04.25 at 03:18:49 PM IST -// - package com.baeldung.springsoap.client.gen; diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java index 5739ee3b96..dcd5b1f08b 100644 --- a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java @@ -1,10 +1,3 @@ -// -// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 -// See https://javaee.github.io/jaxb-v2/ -// Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2020.04.25 at 03:18:49 PM IST -// - package com.baeldung.springsoap.client.gen; diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java index ba1ab56cf8..11135c32e1 100644 --- a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java @@ -1,10 +1,3 @@ -// -// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 -// See https://javaee.github.io/jaxb-v2/ -// Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2020.04.25 at 03:18:49 PM IST -// - package com.baeldung.springsoap.client.gen; diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java index 88b27245be..e6d56d5aba 100644 --- a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java @@ -1,10 +1,3 @@ -// -// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 -// See https://javaee.github.io/jaxb-v2/ -// Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2020.04.25 at 03:18:49 PM IST -// - package com.baeldung.springsoap.client.gen; diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java index eefed169a8..9432e0c328 100644 --- a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java @@ -1,9 +1,2 @@ -// -// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 -// See https://javaee.github.io/jaxb-v2/ -// Any modifications to this file will be lost upon recompilation of the source schema. -// Generated on: 2020.04.25 at 03:18:49 PM IST -// - @javax.xml.bind.annotation.XmlSchema(namespace = "http://www.baeldung.com/springsoap/gen", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package com.baeldung.springsoap.client.gen; diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md index 1a013f5de3..bb7235c2cc 100644 --- a/testing-modules/mockito-2/README.md +++ b/testing-modules/mockito-2/README.md @@ -5,4 +5,5 @@ - [Mockito Strict Stubbing and The UnnecessaryStubbingException](https://www.baeldung.com/mockito-unnecessary-stubbing-exception) - [Mockito and Fluent APIs](https://www.baeldung.com/mockito-fluent-apis) - [Mocking the ObjectMapper readValue() Method](https://www.baeldung.com/mockito-mock-jackson-read-value) -- [Introduction to Mockito’s AdditionalAnswers](https://www.baeldung.com/mockito-additionalanswers) \ No newline at end of file +- [Introduction to Mockito’s AdditionalAnswers](https://www.baeldung.com/mockito-additionalanswers) +- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy) diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/AuthenticationStatus.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/AuthenticationStatus.java new file mode 100644 index 0000000000..8307b4323b --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/AuthenticationStatus.java @@ -0,0 +1,7 @@ +package com.baeldung.mockito.argumentcaptor; + +public enum AuthenticationStatus { + AUTHENTICATED, + NOT_AUTHENTICATED, + ERROR +} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Credentials.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Credentials.java new file mode 100644 index 0000000000..d5d60bb6fc --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Credentials.java @@ -0,0 +1,14 @@ +package com.baeldung.mockito.argumentcaptor; + +public class Credentials { + private final String name; + private final String password; + private final String key; + + public Credentials(String name, String password, String key) { + this.name = name; + this.password = password; + this.key = key; + } +} + diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/DeliveryPlatform.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/DeliveryPlatform.java new file mode 100644 index 0000000000..6cbaf7b97c --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/DeliveryPlatform.java @@ -0,0 +1,10 @@ +package com.baeldung.mockito.argumentcaptor; + +public interface DeliveryPlatform { + + void deliver(Email email); + + String getServiceStatus(); + + AuthenticationStatus authenticate(Credentials credentials); +} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Email.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Email.java new file mode 100644 index 0000000000..6fc753a31c --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Email.java @@ -0,0 +1,47 @@ +package com.baeldung.mockito.argumentcaptor; + +public class Email { + + private String address; + private String subject; + private String body; + private Format format; + + public Email(String address, String subject, String body) { + this.address = address; + this.subject = subject; + this.body = body; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public Format getFormat() { + return format; + } + + public void setFormat(Format format) { + this.format = format; + } +} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/EmailService.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/EmailService.java new file mode 100644 index 0000000000..d22feaf8a4 --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/EmailService.java @@ -0,0 +1,36 @@ +package com.baeldung.mockito.argumentcaptor; + +public class EmailService { + + private DeliveryPlatform platform; + + public EmailService(DeliveryPlatform platform) { + this.platform = platform; + } + + public void send(String to, String subject, String body, boolean html) { + Format format = Format.TEXT_ONLY; + if (html) { + format = Format.HTML; + } + Email email = new Email(to, subject, body); + email.setFormat(format); + platform.deliver(email); + } + + public ServiceStatus checkServiceStatus() { + if (platform.getServiceStatus().equals("OK")) { + return ServiceStatus.UP; + } else { + return ServiceStatus.DOWN; + } + } + + public boolean authenticatedSuccessfully(Credentials credentials) { + if (platform.authenticate(credentials).equals(AuthenticationStatus.AUTHENTICATED)) { + return true; + } else { + return false; + } + } +} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Format.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Format.java new file mode 100644 index 0000000000..4c10375159 --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/Format.java @@ -0,0 +1,6 @@ +package com.baeldung.mockito.argumentcaptor; + +public enum Format { + TEXT_ONLY, + HTML +} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/ServiceStatus.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/ServiceStatus.java new file mode 100644 index 0000000000..65def5af64 --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/argumentcaptor/ServiceStatus.java @@ -0,0 +1,7 @@ +package com.baeldung.mockito.argumentcaptor; + +public enum ServiceStatus { + UP, + DOWN, + AUTHENTICATED +} diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/argumentcaptor/EmailServiceUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/argumentcaptor/EmailServiceUnitTest.java new file mode 100644 index 0000000000..5ed7be7d6e --- /dev/null +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/argumentcaptor/EmailServiceUnitTest.java @@ -0,0 +1,93 @@ +package com.baeldung.mockito.argumentcaptor; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.*; +import org.mockito.junit.MockitoJUnitRunner; + +import static org.junit.Assert.*; + +@RunWith(MockitoJUnitRunner.class) +public class EmailServiceUnitTest { + + @Mock + DeliveryPlatform platform; + + @InjectMocks + EmailService emailService; + + @Captor + ArgumentCaptor emailCaptor; + + @Captor + ArgumentCaptor credentialsCaptor; + + @Test + public void whenDoesNotSupportHtml_expectTextOnlyEmailFormat() { + String to = "info@baeldung.com"; + String subject = "Using ArgumentCaptor"; + String body = "Hey, let'use ArgumentCaptor"; + + emailService.send(to, subject, body, false); + + Mockito.verify(platform).deliver(emailCaptor.capture()); + Email emailCaptorValue = emailCaptor.getValue(); + assertEquals(Format.TEXT_ONLY, emailCaptorValue.getFormat()); + } + + @Test + public void whenDoesSupportHtml_expectHTMLEmailFormat() { + String to = "info@baeldung.com"; + String subject = "Using ArgumentCaptor"; + String body = "Hey, let'use ArgumentCaptor"; + + emailService.send(to, subject, body, true); + + Mockito.verify(platform).deliver(emailCaptor.capture()); + Email value = emailCaptor.getValue(); + assertEquals(Format.HTML, value.getFormat()); + } + + @Test + public void whenServiceRunning_expectUpResponse() { + Mockito.when(platform.getServiceStatus()).thenReturn("OK"); + + ServiceStatus serviceStatus = emailService.checkServiceStatus(); + + assertEquals(ServiceStatus.UP, serviceStatus); + } + + @Test + public void whenServiceNotRunning_expectDownResponse() { + Mockito.when(platform.getServiceStatus()).thenReturn("Error"); + + ServiceStatus serviceStatus = emailService.checkServiceStatus(); + + assertEquals(ServiceStatus.DOWN, serviceStatus); + } + + @Test + public void whenUsingArgumentMatcherForValidCredentials_expectTrue() { + Credentials credentials = new Credentials("baeldung", "correct_password", "correct_key"); + Mockito.when(platform.authenticate(Mockito.eq(credentials))).thenReturn(AuthenticationStatus.AUTHENTICATED); + + assertTrue(emailService.authenticatedSuccessfully(credentials)); + } + + @Test + public void whenUsingArgumentCaptorForValidCredentials_expectTrue() { + Credentials credentials = new Credentials("baeldung", "correct_password", "correct_key"); + Mockito.when(platform.authenticate(credentialsCaptor.capture())).thenReturn(AuthenticationStatus.AUTHENTICATED); + + assertTrue(emailService.authenticatedSuccessfully(credentials)); + assertEquals(credentials, credentialsCaptor.getValue()); + } + + @Test + public void whenNotAuthenticated_expectFalse() { + Credentials credentials = new Credentials("baeldung", "incorrect_password", "incorrect_key"); + Mockito.when(platform.authenticate(Mockito.eq(credentials))).thenReturn(AuthenticationStatus.NOT_AUTHENTICATED); + + assertFalse(emailService.authenticatedSuccessfully(credentials)); + } +} \ No newline at end of file diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaServiceUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaServiceUnitTest.java index b5dd10b1d4..5993d1968c 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaServiceUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaServiceUnitTest.java @@ -1,5 +1,16 @@ package com.baeldung.mockito.fluentapi; +import com.baeldung.mockito.fluentapi.Pizza.PizzaBuilder; +import com.baeldung.mockito.fluentapi.Pizza.PizzaSize; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; @@ -8,18 +19,7 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Answers; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; - -import com.baeldung.mockito.fluentapi.Pizza.PizzaBuilder; -import com.baeldung.mockito.fluentapi.Pizza.PizzaSize; - +@RunWith(MockitoJUnitRunner.class) public class PizzaServiceUnitTest { @Mock @@ -33,11 +33,6 @@ public class PizzaServiceUnitTest { @Captor private ArgumentCaptor sizeCaptor; - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - } - @Test public void givenTraditonalMocking_whenServiceInvoked_thenPizzaIsBuilt() { PizzaBuilder nameBuilder = Mockito.mock(Pizza.PizzaBuilder.class); diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/ArgumentMatcherWithLambdaUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/ArgumentMatcherWithLambdaUnitTest.java index 2efac513b7..8d6d4bade1 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/ArgumentMatcherWithLambdaUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/ArgumentMatcherWithLambdaUnitTest.java @@ -1,19 +1,19 @@ package com.baeldung.mockito.java8; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentMatchers; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import java.util.Optional; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; -import java.util.Optional; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.ArgumentMatchers; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - - +@RunWith(MockitoJUnitRunner.class) public class ArgumentMatcherWithLambdaUnitTest { @InjectMocks @@ -36,9 +36,4 @@ public class ArgumentMatcherWithLambdaUnitTest { assertTrue(unemploymentService.personIsEntitledToUnemploymentSupport(linda)); assertFalse(unemploymentService.personIsEntitledToUnemploymentSupport(peter)); } - - @Before - public void init() { - MockitoAnnotations.initMocks(this); - } } diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/ArgumentMatcherWithoutLambdaUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/ArgumentMatcherWithoutLambdaUnitTest.java index aaa8d03585..3b003d0a87 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/ArgumentMatcherWithoutLambdaUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/ArgumentMatcherWithoutLambdaUnitTest.java @@ -1,8 +1,12 @@ package com.baeldung.mockito.java8; -import org.junit.Before; import org.junit.Test; -import org.mockito.*; +import org.junit.runner.RunWith; +import org.mockito.ArgumentMatcher; +import org.mockito.ArgumentMatchers; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; import java.util.Optional; @@ -11,6 +15,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; +@RunWith(MockitoJUnitRunner.class) public class ArgumentMatcherWithoutLambdaUnitTest { private class PeterArgumentMatcher implements ArgumentMatcher { @@ -43,9 +48,4 @@ public class ArgumentMatcherWithoutLambdaUnitTest { assertTrue(unemploymentService.personIsEntitledToUnemploymentSupport(linda)); assertFalse(unemploymentService.personIsEntitledToUnemploymentSupport(peter)); } - - @Before - public void init() { - MockitoAnnotations.initMocks(this); - } } diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/CustomAnswerWithLambdaUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/CustomAnswerWithLambdaUnitTest.java index 06e9bca6d3..8886d1325c 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/CustomAnswerWithLambdaUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/CustomAnswerWithLambdaUnitTest.java @@ -2,9 +2,10 @@ package com.baeldung.mockito.java8; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; import java.util.stream.Stream; @@ -13,6 +14,7 @@ import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; +@RunWith(MockitoJUnitRunner.class) public class CustomAnswerWithLambdaUnitTest { @InjectMocks @@ -37,8 +39,6 @@ public class CustomAnswerWithLambdaUnitTest { @Before public void init() { - MockitoAnnotations.initMocks(this); - when(jobService.listJobs(any(Person.class))).then((i) -> Stream.of(new JobPosition("Teacher")) .filter(p -> ((Person) i.getArgument(0)).getName().equals("Peter"))); diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/CustomAnswerWithoutLambdaUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/CustomAnswerWithoutLambdaUnitTest.java index d5b9d6d1ce..f75a62fea5 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/CustomAnswerWithoutLambdaUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/CustomAnswerWithoutLambdaUnitTest.java @@ -2,10 +2,11 @@ package com.baeldung.mockito.java8; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; +import org.mockito.junit.MockitoJUnitRunner; import org.mockito.stubbing.Answer; import java.util.stream.Stream; @@ -15,7 +16,7 @@ import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; - +@RunWith(MockitoJUnitRunner.class) public class CustomAnswerWithoutLambdaUnitTest { private class PersonAnswer implements Answer> { @@ -54,8 +55,6 @@ public class CustomAnswerWithoutLambdaUnitTest { @Before public void init() { - MockitoAnnotations.initMocks(this); - when(jobService.listJobs(any(Person.class))).then(new PersonAnswer()); } } diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/JobServiceUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/JobServiceUnitTest.java index 9ea5c1db47..5b3bc5e3d5 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/JobServiceUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/JobServiceUnitTest.java @@ -1,18 +1,19 @@ package com.baeldung.mockito.java8; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import java.util.Optional; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.doCallRealMethod; import static org.mockito.Mockito.when; -import java.util.Optional; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; - +@RunWith(MockitoJUnitRunner.class) public class JobServiceUnitTest { @Mock private JobService jobService; @@ -36,9 +37,4 @@ public class JobServiceUnitTest { assertTrue(jobService.assignJobPosition(person, new JobPosition())); } - - @Before - public void init() { - MockitoAnnotations.initMocks(this); - } } diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/UnemploymentServiceImplUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/UnemploymentServiceImplUnitTest.java index b3b71e5bf9..87093fc1ba 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/UnemploymentServiceImplUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/UnemploymentServiceImplUnitTest.java @@ -1,19 +1,20 @@ package com.baeldung.mockito.java8; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import java.util.Optional; +import java.util.stream.Stream; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; -import java.util.Optional; -import java.util.stream.Stream; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - +@RunWith(MockitoJUnitRunner.class) public class UnemploymentServiceImplUnitTest { @Mock private JobService jobService; @@ -54,9 +55,4 @@ public class UnemploymentServiceImplUnitTest { // This will fail when Mockito 1 is used assertFalse(unemploymentService.searchJob(person, "").isPresent()); } - - @Before - public void init() { - MockitoAnnotations.initMocks(this); - } } diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/misusing/MockitoUnecessaryStubUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/misusing/MockitoUnecessaryStubUnitTest.java index 00edb699de..828d31f6f9 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/misusing/MockitoUnecessaryStubUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/misusing/MockitoUnecessaryStubUnitTest.java @@ -1,21 +1,22 @@ package com.baeldung.mockito.misusing; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.exceptions.misusing.UnnecessaryStubbingException; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoJUnitRunner; +import org.mockito.quality.Strictness; + +import java.util.ArrayList; + import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.when; -import java.util.ArrayList; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.mockito.exceptions.misusing.UnnecessaryStubbingException; -import org.mockito.junit.MockitoJUnit; -import org.mockito.quality.Strictness; - +@RunWith(MockitoJUnitRunner.class) public class MockitoUnecessaryStubUnitTest { @Rule @@ -25,11 +26,6 @@ public class MockitoUnecessaryStubUnitTest { @Mock private ArrayList mockList; - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - } - @Test public void givenUnusedStub_whenInvokingGetThenThrowUnnecessaryStubbingException() { rule.expectedFailure(UnnecessaryStubbingException.class); diff --git a/testing-modules/mockito/README.md b/testing-modules/mockito/README.md index 5f307c2f0b..38fb8225a6 100644 --- a/testing-modules/mockito/README.md +++ b/testing-modules/mockito/README.md @@ -12,5 +12,4 @@ - [Mocking Void Methods with Mockito](https://www.baeldung.com/mockito-void-methods) - [Mock Final Classes and Methods with Mockito](https://www.baeldung.com/mockito-final) - [Testing Callbacks with Mockito](https://www.baeldung.com/mockito-callbacks) -- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy) - [Quick Guide to BDDMockito](https://www.baeldung.com/bdd-mockito) diff --git a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java index 27e3258efb..1d3d6b1428 100644 --- a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java @@ -76,52 +76,6 @@ public class MockitoAnnotationUnitTest { assertEquals(100, spiedList.size()); } - @Test - public void whenSpyingOnList_thenCorrect() { - List list = new ArrayList(); - List spyList = Mockito.spy(list); - - spyList.add("one"); - spyList.add("two"); - - Mockito.verify(spyList).add("one"); - Mockito.verify(spyList).add("two"); - - assertEquals(2, spyList.size()); - } - - @Test - public void whenUsingTheSpyAnnotation_thenObjectIsSpied() { - spiedList.add("one"); - spiedList.add("two"); - - Mockito.verify(spiedList).add("one"); - Mockito.verify(spiedList).add("two"); - - assertEquals(2, spiedList.size()); - } - - @Test - public void whenStubASpy_thenStubbed() { - List list = new ArrayList(); - List spyList = Mockito.spy(list); - - assertEquals(0, spyList.size()); - - Mockito.doReturn(100).when(spyList).size(); - assertEquals(100, spyList.size()); - } - - @Test - public void whenCreateSpy_thenCreate() { - List spyList = Mockito.spy(new ArrayList<>()); - - spyList.add("one"); - Mockito.verify(spyList).add("one"); - - assertEquals(1, spyList.size()); - } - @Test public void whenNotUseCaptorAnnotation_thenCorrect() { final List mockList = Mockito.mock(List.class); diff --git a/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java b/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java index 3ffc508fa5..549f0ee7b9 100644 --- a/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java +++ b/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java @@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; import org.junit.Assert; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -19,7 +20,7 @@ class SystemOutPrintlnUnitTest { System.setOut(new PrintStream(outputStreamCaptor)); } - @BeforeEach + @AfterEach public void tearDown() { System.setOut(standardOut); }