Merge remote-tracking branch 'origin/PR-7145' into PR-7145
This commit is contained in:
		
						commit
						a01a1d720a
					
				| @ -0,0 +1,5 @@ | ||||
| ## Core Java Arrays - Basic Operations | ||||
| 
 | ||||
| This module contains articles about Java array fundamentals. They assume no previous background knowledge on working with arrays. | ||||
| 
 | ||||
| ### Relevant Articles:  | ||||
| @ -0,0 +1,16 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||
|     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"> | ||||
|     <modelVersion>4.0.0</modelVersion> | ||||
|     <artifactId>core-java-arrays-operations-basic-2</artifactId> | ||||
|     <name>core-java-arrays-operations-basic-2</name> | ||||
|     <packaging>jar</packaging> | ||||
| 
 | ||||
|     <parent> | ||||
|         <artifactId>core-java-modules</artifactId> | ||||
|         <groupId>com.baeldung.core-java-modules</groupId> | ||||
|         <version>0.0.1-SNAPSHOT</version> | ||||
|     </parent> | ||||
| 
 | ||||
| </project> | ||||
| @ -0,0 +1,269 @@ | ||||
| package com.baeldung.array.mismatch; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| import static org.junit.jupiter.api.Assertions.assertThrows; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| import java.util.Comparator; | ||||
| 
 | ||||
| import org.junit.jupiter.api.Test; | ||||
| 
 | ||||
| class ArrayMismatchUnitTest { | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoArraysWithACommonPrefix_whenMismatch_thenIndexOfFirstMismatch() { | ||||
|         int[] firstArray = {1, 2, 3, 4, 5}; | ||||
|         int[] secondArray = {1, 2, 3, 5, 8}; | ||||
|         assertEquals(3, Arrays.mismatch(firstArray, secondArray)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoIdenticalArrays_whenMismatch_thenMinusOne() { | ||||
|         int[] firstArray = {1, 2, 3, 4, 5}; | ||||
|         int[] secondArray = {1, 2, 3, 4, 5}; | ||||
|         assertEquals(-1, Arrays.mismatch(firstArray, secondArray)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenFirstArrayIsAPrefixOfTheSecond_whenMismatch_thenFirstArrayLength() { | ||||
|         int[] firstArray = {1, 2, 3, 4, 5}; | ||||
|         int[] secondArray = {1, 2, 3, 4, 5, 6, 7, 8, 9}; | ||||
|         assertEquals(firstArray.length, Arrays.mismatch(firstArray, secondArray)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenNoCommonPrefix_whenMismatch_thenZero() { | ||||
|         int[] firstArray = {1, 2, 3, 4, 5}; | ||||
|         int[] secondArray = {9, 8, 7}; | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, secondArray)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenAtLeastANullArray_whenMismatch_thenThrowsNullPointerException() { | ||||
|         int[] firstArray = null; | ||||
|         int[] secondArray = {1, 2, 3, 4, 5}; | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(firstArray, secondArray)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(secondArray, firstArray)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(firstArray, firstArray)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenExactlyOneAnEmptyArray_whenMismatch_thenZero() { | ||||
|         int[] firstArray = {}; | ||||
|         int[] secondArray = {1, 2, 3}; | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, secondArray)); | ||||
|         assertEquals(0, Arrays.mismatch(secondArray, firstArray)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoEmptyArrays_whenMismatch_thenMinusOne() { | ||||
|         assertEquals(-1, Arrays.mismatch(new int[] {}, new int[] {})); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoSubArraysWithACommonPrefix_whenMismatch_thenIndexOfFirstMismatch() { | ||||
|         int[] firstArray = {1, 2, 3, 4, 5}; | ||||
|         int[] secondArray = {0, 1, 2, 3, 5, 8}; | ||||
|         assertEquals(3, Arrays.mismatch(firstArray, 0, 4, secondArray, 1, 6)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoIdenticalSubArrays_whenMismatch_thenMinusOne() { | ||||
|         int[] firstArray = {0, 0, 1, 2}; | ||||
|         int[] secondArray = {0, 1, 2, 3, 4}; | ||||
|         assertEquals(-1, Arrays.mismatch(firstArray, 2, 4, secondArray, 1, 3)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenFirstSubArrayIsAPrefixOfTheSecond_whenMismatch_thenFirstArrayLength() { | ||||
|         int[] firstArray = {2, 3, 4, 5, 4, 3, 2}; | ||||
|         int[] secondArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; | ||||
|         assertEquals(4, Arrays.mismatch(firstArray, 0, 4, secondArray, 2, 9)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenNoCommonPrefixForSubArrays_whenMismatch_thenZero() { | ||||
|         int[] firstArray = {0, 0, 0, 0, 0}; | ||||
|         int[] secondArray = {9, 8, 7, 6, 5}; | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, 1, 2, secondArray, 1, 2)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenAtLeastANullSubArray_whenMismatch_thenThrowsNullPointerException() { | ||||
|         int[] firstArray = null; | ||||
|         int[] secondArray = {1, 2, 3, 4, 5}; | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(firstArray, 0, 1, secondArray, 0, 1)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(secondArray, 0, 1, firstArray, 0, 1)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(firstArray, 0, 1, firstArray, 0, 1)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenExactlyOneEmptySubArray_whenMismatch_thenZero() { | ||||
|         int[] firstArray = {1}; | ||||
|         int[] secondArray = {1, 2, 3}; | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, 0, 0, secondArray, 0, 2)); | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, 0, 1, secondArray, 2, 2)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoEmptySubArrays_whenMismatch_thenMinusOne() { | ||||
|         int[] firstArray = {1}; | ||||
|         int[] secondArray = {1, 2, 3}; | ||||
|         assertEquals(-1, Arrays.mismatch(firstArray, 0, 0, secondArray, 2, 2)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenToIndexGreaterThanFromIndex_whenMismatch_thenThrowsIllegalArgumentException() { | ||||
|         int[] firstArray = {2, 3, 4, 5, 4, 3, 2}; | ||||
|         int[] secondArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; | ||||
|         assertThrows(IllegalArgumentException.class, () -> Arrays.mismatch(firstArray, 4, 2, secondArray, 0, 6)); | ||||
|         assertThrows(IllegalArgumentException.class, () -> Arrays.mismatch(firstArray, 2, 3, secondArray, 6, 0)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenIllegalIndexes_whenMismatch_thenThrowsArrayIndexOutOfBoundsException() { | ||||
|         int[] firstArray = {2, 3, 4, 5, 4, 3, 2}; | ||||
|         int[] secondArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; | ||||
|         assertThrows(ArrayIndexOutOfBoundsException.class, () -> Arrays.mismatch(firstArray, -1, 2, secondArray, 0, 6)); | ||||
|         assertThrows(ArrayIndexOutOfBoundsException.class, () -> Arrays.mismatch(firstArray, 0, 8, secondArray, 0, 6)); | ||||
|         assertThrows(ArrayIndexOutOfBoundsException.class, () -> Arrays.mismatch(firstArray, 2, 3, secondArray, -5, 0)); | ||||
|         assertThrows(ArrayIndexOutOfBoundsException.class, () -> Arrays.mismatch(firstArray, 2, 3, secondArray, 11, 12)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoStringArraysAndAComparator_whenMismatch_thenIndexOfFirstMismatch() { | ||||
|         String[] firstArray = {"one", "two", "three"}; | ||||
|         String[] secondArray = {"ONE", "TWO", "FOUR"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(2, Arrays.mismatch(firstArray, secondArray, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoIdenticalStringArraysForTheComparator_whenMismatch_thenMinusOne() { | ||||
|         String[] firstArray = {"one", "two", "three"}; | ||||
|         String[] secondArray = {"ONE", "TWO", "THREE"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(-1, Arrays.mismatch(firstArray, secondArray, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenFirstStringArrayIsAPrefixOfTheSecondForTheComparator_whenMismatch_thenFirstArrayLength() { | ||||
|         String[] firstArray = {"one", "two", "three"}; | ||||
|         String[] secondArray = {"ONE", "TWO", "THREE", "FOUR", "FIVE"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(firstArray.length, Arrays.mismatch(firstArray, secondArray, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenNoCommonPrefixForTheComparator_whenMismatch_thenZero() { | ||||
|         String[] firstArray = {"one", "two", "three"}; | ||||
|         String[] secondArray = {"six", "seven", "eight"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, secondArray, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenAtLeastANullArrayOrNullComparator_whenMismatch_thenThrowsNullPointerException() { | ||||
|         String[] firstArray = null; | ||||
|         String[] secondArray = {"one"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(firstArray, secondArray, comparator)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(secondArray, firstArray, comparator)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(secondArray, secondArray, null)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenExactlyOneAnEmptyArrayAndAComparator_whenMismatch_thenZero() { | ||||
|         String[] firstArray = {}; | ||||
|         String[] secondArray = {"one"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, secondArray, comparator)); | ||||
|         assertEquals(0, Arrays.mismatch(secondArray, firstArray, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoEmptyStringArraysForTheComparator_whenMismatch_thenMinusOne() { | ||||
|         assertEquals(-1, Arrays.mismatch(new String[] {}, new String[] {}, String.CASE_INSENSITIVE_ORDER)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoStringSubarraysAndAComparator_whenMismatch_thenIndexOfFirstMismatch() { | ||||
|         String[] firstArray = {"one", "two", "three", "four"}; | ||||
|         String[] secondArray = {"ZERO", "ONE", "TWO", "FOUR", "EIGHT", "SIXTEEN"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(2, Arrays.mismatch(firstArray, 0, 4, secondArray, 1, 3, comparator)); | ||||
|     } | ||||
|     | ||||
|     @Test | ||||
|     void givenTwoIdenticalStringSubArraysForTheComparator_whenMismatch_thenMinusOne() { | ||||
|         String[] firstArray = {"zero", "zero", "one", "two"}; | ||||
|         String[] secondArray = {"zero", "one", "two", "three", "four"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(-1, Arrays.mismatch(firstArray, 2, 4, secondArray, 1, 3, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenFirstSubArrayIsAPrefixOfTheSecondForTheComparator_whenMismatch_thenFirstArrayLength() { | ||||
|         String[] firstArray = {"two", "three", "four", "five", "four", "three", "two"}; | ||||
|         String[] secondArray = {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "EIGHT", "NINE", "TEN"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(4, Arrays.mismatch(firstArray, 0, 4, secondArray, 2, 9, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenNoCommonPrefixForSubArraysForTheComparator_whenMismatch_thenZero() { | ||||
|         String[] firstArray = {"zero", "one"}; | ||||
|         String[] secondArray = {"TEN", "ELEVEN", "TWELVE"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, 1, 2, secondArray, 1, 2, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenAtLeastANullSubArrayOrNullComparator_whenMismatch_thenThrowsNullPointerException() { | ||||
|         String[] firstArray = null; | ||||
|         String[] secondArray = {"ONE", "TWO", "THREE", "FOUR", "FIVE"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(firstArray, 0, 1, secondArray, 0, 1, comparator)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(secondArray, 0, 1, firstArray, 0, 1, comparator)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(firstArray, 0, 1, firstArray, 0, 1, comparator)); | ||||
|         assertThrows(NullPointerException.class, () -> Arrays.mismatch(secondArray, 0, 1, secondArray, 0, 1, null)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenExactlyOneEmptySubArrayAndAComparator_whenMismatch_thenZero() { | ||||
|         String[] firstArray = {"one"}; | ||||
|         String[] secondArray = {"ONE", "TWO", "THREE"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, 0, 0, secondArray, 0, 2, comparator)); | ||||
|         assertEquals(0, Arrays.mismatch(firstArray, 0, 1, secondArray, 2, 2, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenTwoEmptySubArraysAndAComparator_whenMismatch_thenMinusOne() { | ||||
|         String[] firstArray = {"one"}; | ||||
|         String[] secondArray = {"ONE", "TWO", "THREE"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertEquals(-1, Arrays.mismatch(firstArray, 0, 0, secondArray, 2, 2, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenToIndexGreaterThanFromIndexAndAComparator_whenMismatch_thenThrowsIllegalArgumentException() { | ||||
|         String[] firstArray = {"two", "three", "four", "five", "four", "three", "two"}; | ||||
|         String[] secondArray = {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "EIGHT", "NINE", "TEN"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertThrows(IllegalArgumentException.class, () -> Arrays.mismatch(firstArray, 4, 2, secondArray, 0, 6, comparator)); | ||||
|         assertThrows(IllegalArgumentException.class, () -> Arrays.mismatch(firstArray, 2, 3, secondArray, 6, 0, comparator)); | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     void givenIllegalIndexesAndAComparator_whenMismatch_thenThrowsArrayIndexOutOfBoundsException() { | ||||
|         String[] firstArray = {"two", "three", "four", "five", "four", "three", "two"}; | ||||
|         String[] secondArray = {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "EIGHT", "NINE", "TEN"}; | ||||
|         Comparator<String> comparator = String.CASE_INSENSITIVE_ORDER; | ||||
|         assertThrows(ArrayIndexOutOfBoundsException.class, () -> Arrays.mismatch(firstArray, -1, 2, secondArray, 0, 6, comparator)); | ||||
|         assertThrows(ArrayIndexOutOfBoundsException.class, () -> Arrays.mismatch(firstArray, 0, 8, secondArray, 0, 6, comparator)); | ||||
|         assertThrows(ArrayIndexOutOfBoundsException.class, () -> Arrays.mismatch(firstArray, 2, 3, secondArray, -5, 0, comparator)); | ||||
|         assertThrows(ArrayIndexOutOfBoundsException.class, () -> Arrays.mismatch(firstArray, 2, 3, secondArray, 11, 12, comparator)); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -12,7 +12,7 @@ public class RemoveQueueElementsUnitTest { | ||||
|     @Test | ||||
|     public void givenQueueWithEvenAndOddNumbers_whenRemovingEvenNumbers_thenOddNumbersRemain() { | ||||
|         Queue<Integer> queue = new LinkedList<>(); | ||||
|         Queue<Integer> evenElementsQueue = new LinkedList<>(); | ||||
|         Queue<Integer> oddElementsQueue = new LinkedList<>(); | ||||
|         queue.add(1); | ||||
|         queue.add(2); | ||||
|         queue.add(3); | ||||
| @ -22,14 +22,14 @@ public class RemoveQueueElementsUnitTest { | ||||
|         while (queue.peek() != null) { | ||||
|             int element = queue.remove(); | ||||
|             if (element % 2 != 0) { | ||||
|                 evenElementsQueue.add(element); | ||||
|                 oddElementsQueue.add(element); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         assertEquals(3, evenElementsQueue.size()); | ||||
|         assertTrue(evenElementsQueue.contains(1)); | ||||
|         assertTrue(evenElementsQueue.contains(3)); | ||||
|         assertTrue(evenElementsQueue.contains(5)); | ||||
|         assertEquals(3, oddElementsQueue.size()); | ||||
|         assertTrue(oddElementsQueue.contains(1)); | ||||
|         assertTrue(oddElementsQueue.contains(3)); | ||||
|         assertTrue(oddElementsQueue.contains(5)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|  | ||||
| @ -0,0 +1,63 @@ | ||||
| package com.baeldung.concurrent.completablefuture.retry; | ||||
| 
 | ||||
| import java.util.concurrent.CompletableFuture; | ||||
| import java.util.function.Function; | ||||
| import java.util.function.Supplier; | ||||
| 
 | ||||
| public class RetryCompletableFuture { | ||||
|     public static <T> CompletableFuture<T> retryTask(Supplier<T> supplier, int maxRetries) { | ||||
|         Supplier<T> retryableSupplier = retryFunction(supplier, maxRetries); | ||||
|         return CompletableFuture.supplyAsync(retryableSupplier); | ||||
|     } | ||||
| 
 | ||||
|     static <T> Supplier<T> retryFunction(Supplier<T> supplier, int maxRetries) { | ||||
|         return () -> { | ||||
|             int retries = 0; | ||||
|             while (retries < maxRetries) { | ||||
|                 try { | ||||
|                     return supplier.get(); | ||||
|                 } catch (Exception e) { | ||||
|                     retries++; | ||||
|                 } | ||||
|             } | ||||
|             throw new IllegalStateException(String.format("Task failed after %s attempts", maxRetries)); | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     public static <T> CompletableFuture<T> retryUnsafe(Supplier<T> supplier, int maxRetries) { | ||||
|         CompletableFuture<T> cf = CompletableFuture.supplyAsync(supplier); | ||||
|         sleep(100l); | ||||
|         for (int i = 0; i < maxRetries; i++) { | ||||
|             cf = cf.exceptionally(__ -> supplier.get()); | ||||
|         } | ||||
|         return cf; | ||||
|     } | ||||
| 
 | ||||
|     public static <T> CompletableFuture<T> retryNesting(Supplier<T> supplier, int maxRetries) { | ||||
|         CompletableFuture<T> cf = CompletableFuture.supplyAsync(supplier); | ||||
|         sleep(100); | ||||
|         for (int i = 0; i < maxRetries; i++) { | ||||
|             cf = cf.thenApply(CompletableFuture::completedFuture) | ||||
|               .exceptionally(__ -> CompletableFuture.supplyAsync(supplier)) | ||||
|               .thenCompose(Function.identity()); | ||||
|         } | ||||
|         return cf; | ||||
|     } | ||||
| 
 | ||||
|     public static <T> CompletableFuture<T> retryExceptionallyAsync(Supplier<T> supplier, int maxRetries) { | ||||
|         CompletableFuture<T> cf = CompletableFuture.supplyAsync(supplier); | ||||
|         sleep(100); | ||||
|         for (int i = 0; i < maxRetries; i++) { | ||||
|             cf = cf.exceptionallyAsync(__ -> supplier.get()); | ||||
|         } | ||||
|         return cf; | ||||
|     } | ||||
| 
 | ||||
|     private static void sleep(long millis) { | ||||
|         try { | ||||
|             Thread.sleep(millis); | ||||
|         } catch (InterruptedException e) { | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,120 @@ | ||||
| package com.baeldung.concurrent.completablefuture.retry; | ||||
| 
 | ||||
| import static com.baeldung.concurrent.completablefuture.retry.RetryCompletableFuture.retryExceptionallyAsync; | ||||
| import static com.baeldung.concurrent.completablefuture.retry.RetryCompletableFuture.retryNesting; | ||||
| import static com.baeldung.concurrent.completablefuture.retry.RetryCompletableFuture.retryTask; | ||||
| import static com.baeldung.concurrent.completablefuture.retry.RetryCompletableFuture.retryUnsafe; | ||||
| import static org.assertj.core.api.Assertions.assertThat; | ||||
| import static org.assertj.core.api.Assertions.assertThatThrownBy; | ||||
| 
 | ||||
| import java.util.concurrent.CompletableFuture; | ||||
| import java.util.concurrent.CompletionException; | ||||
| import java.util.concurrent.atomic.AtomicInteger; | ||||
| import java.util.function.Supplier; | ||||
| 
 | ||||
| import org.junit.jupiter.api.BeforeEach; | ||||
| import org.junit.jupiter.api.Test; | ||||
| 
 | ||||
| class RetryCompletableFutureUnitTest { | ||||
|     private AtomicInteger retriesCounter = new AtomicInteger(0); | ||||
| 
 | ||||
|     @BeforeEach | ||||
|     void beforeEach() { | ||||
|         retriesCounter.set(0); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void whenRetryingTask_thenReturnsCorrectlyAfterFourInvocations() { | ||||
|         Supplier<Integer> codeToRun = () -> failFourTimesThenReturn(100); | ||||
| 
 | ||||
|         CompletableFuture<Integer> result = retryTask(codeToRun, 10); | ||||
| 
 | ||||
|         assertThat(result.join()).isEqualTo(100); | ||||
|         assertThat(retriesCounter).hasValue(4); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void whenRetryingTask_thenThrowsExceptionAfterThreeInvocations() { | ||||
|         Supplier<Integer> codeToRun = () -> failFourTimesThenReturn(100); | ||||
| 
 | ||||
|         CompletableFuture<Integer> result = retryTask(codeToRun, 3); | ||||
| 
 | ||||
|         assertThatThrownBy(result::join) | ||||
|           .isInstanceOf(CompletionException.class) | ||||
|           .hasMessageContaining("IllegalStateException: Task failed after 3 attempts"); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void whenRetryingExceptionally_thenReturnsCorrectlyAfterFourInvocations() { | ||||
|         Supplier<Integer> codeToRun = () -> failFourTimesThenReturn(100); | ||||
| 
 | ||||
|         CompletableFuture<Integer> result = retryUnsafe(codeToRun, 10); | ||||
| 
 | ||||
|         assertThat(result.join()).isEqualTo(100); | ||||
|         assertThat(retriesCounter).hasValue(4); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void whenRetryingExceptionally_thenThrowsExceptionAfterThreeInvocations() { | ||||
|         Supplier<Integer> codeToRun = () -> failFourTimesThenReturn(100); | ||||
| 
 | ||||
|         CompletableFuture<Integer> result = retryUnsafe(codeToRun, 3); | ||||
| 
 | ||||
|         assertThatThrownBy(result::join) | ||||
|           .isInstanceOf(CompletionException.class) | ||||
|           .hasMessageContaining("RuntimeException: task failed for 3 time(s)"); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void whenRetryingExceptionallyAsync_thenReturnsCorrectlyAfterFourInvocations() { | ||||
|         Supplier<Integer> codeToRun = () -> failFourTimesThenReturn(100); | ||||
| 
 | ||||
|         CompletableFuture<Integer> result = retryExceptionallyAsync(codeToRun, 10); | ||||
| 
 | ||||
|         assertThat(result.join()).isEqualTo(100); | ||||
|         assertThat(retriesCounter).hasValue(4); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void whenRetryingExceptionallyAsync_thenThrowsExceptionAfterThreeInvocations() { | ||||
|         Supplier<Integer> codeToRun = () -> failFourTimesThenReturn(100); | ||||
| 
 | ||||
|         CompletableFuture<Integer> result = retryExceptionallyAsync(codeToRun, 3); | ||||
| 
 | ||||
|         assertThatThrownBy(result::join) | ||||
|           .isInstanceOf(CompletionException.class) | ||||
|           .hasMessageContaining("RuntimeException: task failed for 3 time(s)"); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void whenRetryingNesting_thenReturnsCorrectlyAfterFourInvocations() { | ||||
|         Supplier<Integer> codeToRun = () -> failFourTimesThenReturn(100); | ||||
| 
 | ||||
|         CompletableFuture<Integer> result = retryNesting(codeToRun, 10); | ||||
| 
 | ||||
|         assertThat(result.join()).isEqualTo(100); | ||||
|         assertThat(retriesCounter).hasValue(4); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void whenRetryingNesting_thenThrowsExceptionAfterThreeInvocations() { | ||||
|         Supplier<Integer> codeToRun = () -> failFourTimesThenReturn(100); | ||||
| 
 | ||||
|         CompletableFuture<Integer> result = retryNesting(codeToRun, 3); | ||||
| 
 | ||||
|         assertThatThrownBy(result::join) | ||||
|           .isInstanceOf(CompletionException.class) | ||||
|           .hasMessageContaining("RuntimeException: task failed for 3 time(s)"); | ||||
|     } | ||||
| 
 | ||||
|     int failFourTimesThenReturn(int returnValue) { | ||||
|         int retryNr = retriesCounter.get(); | ||||
|         System.out.println(String.format("invocation: %s, thread: %s", retryNr, Thread.currentThread().getName())); | ||||
|         if (retryNr < 4) { | ||||
|             retriesCounter.set(retryNr + 1); | ||||
|             throw new RuntimeException(String.format("task failed for %s time(s)", retryNr)); | ||||
|         } | ||||
|         return returnValue; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,73 @@ | ||||
| package com.baeldung.truncatedouble; | ||||
| 
 | ||||
| import static org.junit.Assert.assertEquals; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.math.RoundingMode; | ||||
| import java.text.DecimalFormat; | ||||
| import java.text.NumberFormat; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| public class TruncateDoubleUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenADouble_whenUsingDecimalFormat_truncateToTwoDecimalPlaces() { | ||||
|         DecimalFormat df = new DecimalFormat("#.##"); | ||||
|         df.setRoundingMode(RoundingMode.DOWN); | ||||
| 
 | ||||
|         double value = 1.55555555; | ||||
|         String truncated = df.format(value); | ||||
|         assertEquals("1.55", truncated); | ||||
| 
 | ||||
|         double negativeValue = -1.55555555; | ||||
|         String negativeTruncated = df.format(negativeValue); | ||||
|         assertEquals("-1.55", negativeTruncated); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenADouble_whenUsingNumberFormat_truncateToTwoDecimalPlaces() { | ||||
|         NumberFormat nf = NumberFormat.getNumberInstance(); | ||||
|         nf.setMaximumFractionDigits(2); | ||||
|         nf.setRoundingMode(RoundingMode.DOWN); | ||||
| 
 | ||||
|         double value = 1.55555555; | ||||
|         String truncated = nf.format(value); | ||||
|         assertEquals("1.55", truncated); | ||||
| 
 | ||||
|         double negativeValue = -1.55555555; | ||||
|         String negativeTruncated = nf.format(negativeValue); | ||||
|         assertEquals("-1.55", negativeTruncated); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenADouble_whenUsingBigDecimal_truncateToTwoDecimalPlaces() { | ||||
|         BigDecimal positive = new BigDecimal(2.555555).setScale(2, RoundingMode.DOWN); | ||||
|         BigDecimal negative = new BigDecimal(-2.555555).setScale(2, RoundingMode.DOWN); | ||||
|         assertEquals("2.55", positive.toString()); | ||||
|         assertEquals("-2.55", negative.toString()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenADouble_whenUsingMath_truncateToTwoDecimalPlaces() { | ||||
|         double positive = 1.55555555; | ||||
|         double truncated = Math.floor(positive * 100) / 100; | ||||
|         assertEquals("1.55", String.valueOf(truncated)); | ||||
| 
 | ||||
|         double negative = -1.55555555; | ||||
|         double negativeTruncated = Math.ceil(negative * 100) / 100; | ||||
|         assertEquals("-1.55", String.valueOf(negativeTruncated)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenADouble_whenUsingStringFormat_truncateToTwoDecimalPlaces() { | ||||
|         double positive = 1.55555555; | ||||
|         String truncated = String.format("%.2f", positive); | ||||
|         assertEquals("1.56", truncated); | ||||
| 
 | ||||
|         double negative = -1.55555555; | ||||
|         String negativeTruncated = String.format("%.2f", negative); | ||||
|         assertEquals("-1.56", negativeTruncated); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -7,23 +7,27 @@ public class FloatDoubleConversionsTest { | ||||
| 
 | ||||
|     @Test | ||||
|     public void whenDoubleType_thenFloatTypeSuccess(){ | ||||
|         double interestRatesYearly = 13.333333333333334; | ||||
|         double interestRatesYearly = 13.333333333333333; | ||||
|         float interest = (float) interestRatesYearly; | ||||
|         Assert.assertEquals(13.333333f, interest, 0.000004f); | ||||
|         System.out.println(interest); //13.333333 | ||||
|         Assert.assertEquals(13.333333f, interest, 0.000001f); | ||||
| 
 | ||||
|         Double monthlyRates = 2.111111111111112; | ||||
|         Double monthlyRates = 2.111111111111111; | ||||
|         float rates = monthlyRates.floatValue(); | ||||
|         Assert.assertEquals(2.1111112f, rates, 0.00000013); | ||||
|         System.out.println(rates); //2.1111112 | ||||
|         Assert.assertEquals(2.1111111f, rates, 0.0000001f); | ||||
|     } | ||||
|     @Test | ||||
|     public void whenFloatType_thenDoubleTypeSuccess(){ | ||||
|         float gradeAverage =2.05f; | ||||
|         double average = gradeAverage; | ||||
|         Assert.assertEquals(2.05, average, 0.06); | ||||
|         System.out.println(average); //2.049999952316284 | ||||
|         Assert.assertEquals(2.05, average, 0.01); | ||||
| 
 | ||||
|         Float monthlyRates = 2.1111112f; | ||||
|         Float monthlyRates = 2.1111111f; | ||||
|         Double rates = monthlyRates.doubleValue(); | ||||
|         Assert.assertEquals(2.11111112, rates, 0.0000002);//true | ||||
|         System.out.println(rates); //2.1111111640930176 | ||||
|         Assert.assertEquals(2.11111111, rates, 0.0000001);//true | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -65,7 +65,7 @@ | ||||
|     <properties> | ||||
|         <maven.compiler.source>11</maven.compiler.source> | ||||
|         <maven.compiler.target>11</maven.compiler.target> | ||||
|         <apache.commons.lang3.version>3.12.0</apache.commons.lang3.version> | ||||
|         <apache.commons.lang3.version>3.13.0</apache.commons.lang3.version> | ||||
|         <commons-text.version>1.10.0</commons-text.version> | ||||
|     </properties> | ||||
| 
 | ||||
|  | ||||
| @ -0,0 +1,40 @@ | ||||
| package com.baeldung.capitalizefirstcharactereachword; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| import java.util.stream.Collectors; | ||||
| 
 | ||||
| import org.apache.commons.lang3.StringUtils; | ||||
| 
 | ||||
| class CapitalizeFirstCharacterEachWordUtils { | ||||
| 
 | ||||
|     static String usingCharacterToUpperCaseMethod(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         return Arrays.stream(input.split("\\s+")) | ||||
|           .map(word -> Character.toUpperCase(word.charAt(0)) + word.substring(1)) | ||||
|           .collect(Collectors.joining(" ")); | ||||
|     } | ||||
| 
 | ||||
|     static String usingStringToUpperCaseMethod(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         return Arrays.stream(input.split("\\s+")) | ||||
|           .map(word -> word.substring(0, 1).toUpperCase() + word.substring(1)) | ||||
|           .collect(Collectors.joining(" ")); | ||||
|     } | ||||
| 
 | ||||
|     static String usingStringUtilsClass(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         return Arrays.stream(input.split("\\s+")) | ||||
|           .map(StringUtils::capitalize) | ||||
|           .collect(Collectors.joining(" ")); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,77 @@ | ||||
| package com.baeldung.strcontainsnumber; | ||||
| 
 | ||||
| import java.util.regex.Pattern; | ||||
| 
 | ||||
| import org.apache.commons.lang3.StringUtils; | ||||
| 
 | ||||
| import com.google.common.base.CharMatcher; | ||||
| 
 | ||||
| public class StrContainsNumberUtils { | ||||
| 
 | ||||
|     static boolean checkUsingMatchesMethod(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         return input.matches(".*\\d.*"); | ||||
|     } | ||||
| 
 | ||||
|     static boolean checkUsingPatternClass(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         return Pattern.compile(".*\\d.*") | ||||
|           .matcher(input) | ||||
|           .matches(); | ||||
|     } | ||||
| 
 | ||||
|     static boolean checkUsingReplaceAllMethod(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         String result = input.replaceAll("\\d", ""); | ||||
|         return result.length() != input.length(); | ||||
|     } | ||||
| 
 | ||||
|     static boolean checkUsingIsDigitMethod(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         for (char c : input.toCharArray()) { | ||||
|             if (Character.isDigit(c)) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     static boolean checkUsingStreamApi(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         return input.chars() | ||||
|           .anyMatch(Character::isDigit); | ||||
|     } | ||||
| 
 | ||||
|     static boolean checkUsingApacheCommonsLang(String input) { | ||||
|         String result = StringUtils.getDigits(input); | ||||
|         return result != null && !result.isEmpty(); | ||||
|     } | ||||
| 
 | ||||
|     static boolean checkUsingGuava(String input) { | ||||
|         if (input == null || input.isEmpty()) { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         String result = CharMatcher.forPredicate(Character::isDigit) | ||||
|           .retainFrom(input); | ||||
| 
 | ||||
|         return !result.isEmpty(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,38 @@ | ||||
| package com.baeldung.capitalizefirstcharactereachword; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| 
 | ||||
| import org.apache.commons.text.WordUtils; | ||||
| import org.junit.jupiter.api.Test; | ||||
| 
 | ||||
| class CapitalizeFirstCharacterEachWordUtilsUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     void givenString_whenUsingCharacterToUpperCaseMethod_thenCapitalizeFirstCharacter() { | ||||
|         String input = "hello baeldung visitors"; | ||||
| 
 | ||||
|         assertEquals("Hello Baeldung Visitors", CapitalizeFirstCharacterEachWordUtils.usingCharacterToUpperCaseMethod(input)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenString_whenUsingSubstringMethod_thenCapitalizeFirstCharacter() { | ||||
|         String input = "Hi, my name is azhrioun"; | ||||
| 
 | ||||
|         assertEquals("Hi, My Name Is Azhrioun", CapitalizeFirstCharacterEachWordUtils.usingStringToUpperCaseMethod(input)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenString_whenUsingStringUtilsClass_thenCapitalizeFirstCharacter() { | ||||
|         String input = "life is short the world is wide"; | ||||
| 
 | ||||
|         assertEquals("Life Is Short The World Is Wide", CapitalizeFirstCharacterEachWordUtils.usingStringUtilsClass(input)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenString_whenUsingWordUtilsClass_thenCapitalizeFirstCharacter() { | ||||
|         String input = "smile sunshine is good for your teeth"; | ||||
| 
 | ||||
|         assertEquals("Smile Sunshine Is Good For Your Teeth", WordUtils.capitalizeFully(input)); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,69 @@ | ||||
| package com.baeldung.strcontainsnumber; | ||||
| 
 | ||||
| import static org.junit.Assert.assertTrue; | ||||
| import static org.junit.jupiter.api.Assertions.assertFalse; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| public class StrContainsNumberUtilsUnitTest { | ||||
| 
 | ||||
|     private static final String INPUT_WITH_NUMBERS = "We hope 2024 will be great"; | ||||
|     private static final String INPUT_WITHOUT_NUMBERS = "Hello world"; | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInputString_whenUsingMatchesMethod_ThenCheck() { | ||||
|         assertTrue(StrContainsNumberUtils.checkUsingMatchesMethod(INPUT_WITH_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingMatchesMethod(INPUT_WITHOUT_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingMatchesMethod("")); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingMatchesMethod(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInputString_whenUsingPatternClass_ThenCheck() { | ||||
|         assertTrue(StrContainsNumberUtils.checkUsingPatternClass(INPUT_WITH_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingPatternClass(INPUT_WITHOUT_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingPatternClass("")); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingPatternClass(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInputString_whenUsingReplaceAllMethod_ThenCheck() { | ||||
|         assertTrue(StrContainsNumberUtils.checkUsingReplaceAllMethod(INPUT_WITH_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingReplaceAllMethod(INPUT_WITHOUT_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingReplaceAllMethod("")); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingReplaceAllMethod(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInputString_whenUsingIsDigitMethod_ThenCheck() { | ||||
|         assertTrue(StrContainsNumberUtils.checkUsingIsDigitMethod(INPUT_WITH_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingIsDigitMethod(INPUT_WITHOUT_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingIsDigitMethod("")); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingIsDigitMethod(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInputString_whenUsingStreamApi_ThenCheck() { | ||||
|         assertTrue(StrContainsNumberUtils.checkUsingStreamApi(INPUT_WITH_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingStreamApi(INPUT_WITHOUT_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingStreamApi("")); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingStreamApi(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInputString_whenUsingApacheCommonsLang_ThenCheck() { | ||||
|         assertTrue(StrContainsNumberUtils.checkUsingApacheCommonsLang(INPUT_WITH_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingApacheCommonsLang(INPUT_WITHOUT_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingApacheCommonsLang("")); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingApacheCommonsLang(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInputString_whenUsingGuava_ThenCheck() { | ||||
|         assertTrue(StrContainsNumberUtils.checkUsingGuava(INPUT_WITH_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingGuava(INPUT_WITHOUT_NUMBERS)); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingGuava("")); | ||||
|         assertFalse(StrContainsNumberUtils.checkUsingGuava(null)); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -73,6 +73,7 @@ | ||||
|         <module>core-java-arrays-multidimensional</module> | ||||
|         <module>core-java-arrays-convert</module> | ||||
|         <module>core-java-arrays-operations-basic</module> | ||||
|         <module>core-java-arrays-operations-basic-2</module> | ||||
|         <module>core-java-arrays-operations-advanced</module> | ||||
|         <module>core-java-arrays-operations-advanced-2</module> | ||||
|         <module>core-java-booleans</module> | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
|         <groupId>com.baeldung</groupId> | ||||
|         <artifactId>parent-boot-2</artifactId> | ||||
|         <version>0.0.1-SNAPSHOT</version> | ||||
|         <relativePath>../parent-boot-2</relativePath> | ||||
|         <relativePath>../../parent-boot-2</relativePath> | ||||
|     </parent> | ||||
| 
 | ||||
|     <dependencyManagement> | ||||
							
								
								
									
										0
									
								
								axon/start_axon_server.sh → patterns-modules/axon/start_axon_server.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								axon/start_axon_server.sh → patterns-modules/axon/start_axon_server.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								axon/start_mongo.sh → patterns-modules/axon/start_mongo.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								axon/start_mongo.sh → patterns-modules/axon/start_mongo.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| @ -11,7 +11,7 @@ | ||||
| 
 | ||||
|     <parent> | ||||
|         <groupId>com.baeldung</groupId> | ||||
|         <artifactId>parent-modules</artifactId> | ||||
|         <artifactId>patterns-modules</artifactId> | ||||
|         <version>1.0.0-SNAPSHOT</version> | ||||
|     </parent> | ||||
| 
 | ||||
| @ -12,7 +12,7 @@ | ||||
|         <groupId>com.baeldung</groupId> | ||||
|         <artifactId>parent-boot-2</artifactId> | ||||
|         <version>0.0.1-SNAPSHOT</version> | ||||
|         <relativePath>../parent-boot-2</relativePath> | ||||
|         <relativePath>../../parent-boot-2</relativePath> | ||||
|     </parent> | ||||
| 
 | ||||
|     <dependencyManagement> | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user