commit
						b50684ab37
					
				| @ -98,7 +98,7 @@ public class SlopeOne { | ||||
|             for (Item j : InputData.items) { | ||||
|                 if (e.getValue().containsKey(j)) { | ||||
|                     clean.put(j, e.getValue().get(j)); | ||||
|                 } else { | ||||
|                 } else if (!clean.containsKey(j)) { | ||||
|                     clean.put(j, -1.0); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| @ -0,0 +1,36 @@ | ||||
| package com.baeldung.algorithms.balancedbrackets; | ||||
| 
 | ||||
| import java.util.Deque; | ||||
| import java.util.LinkedList; | ||||
| 
 | ||||
| public class BalancedBracketsUsingDeque { | ||||
| 
 | ||||
|     public boolean isBalanced(String str) { | ||||
|         if (null == str || ((str.length() % 2) != 0)) { | ||||
|             return false; | ||||
|         } else { | ||||
|             char[] ch = str.toCharArray(); | ||||
|             for (char c : ch) { | ||||
|                 if (!(c == '{' || c == '[' || c == '(' || c == '}' || c == ']' || c == ')')) { | ||||
|                     return false; | ||||
|                 } | ||||
| 
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         Deque<Character> deque = new LinkedList<>(); | ||||
|         for (char ch : str.toCharArray()) { | ||||
|             if (ch == '{' || ch == '[' || ch == '(') { | ||||
|                 deque.addFirst(ch); | ||||
|             } else { | ||||
|                 if (!deque.isEmpty() && ((deque.peekFirst() == '{' && ch == '}') || (deque.peekFirst() == '[' && ch == ']') || (deque.peekFirst() == '(' && ch == ')'))) { | ||||
|                     deque.removeFirst(); | ||||
|                 } else { | ||||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return true; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,27 @@ | ||||
| package com.baeldung.algorithms.balancedbrackets; | ||||
| 
 | ||||
| public class BalancedBracketsUsingString { | ||||
| 
 | ||||
|     public boolean isBalanced(String str) { | ||||
|         if (null == str || ((str.length() % 2) != 0)) { | ||||
|             return false; | ||||
|         } else { | ||||
|             char[] ch = str.toCharArray(); | ||||
|             for (char c : ch) { | ||||
|                 if (!(c == '{' || c == '[' || c == '(' || c == '}' || c == ']' || c == ')')) { | ||||
|                     return false; | ||||
|                 } | ||||
| 
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         while (str.contains("()") || str.contains("[]") || str.contains("{}")) { | ||||
|             str = str.replaceAll("\\(\\)", "") | ||||
|                 .replaceAll("\\[\\]", "") | ||||
|                 .replaceAll("\\{\\}", ""); | ||||
|         } | ||||
|         return (str.length() == 0); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,76 @@ | ||||
| package com.baeldung.algorithms.balancedbrackets; | ||||
| 
 | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| import static org.assertj.core.api.Assertions.assertThat; | ||||
| 
 | ||||
| public class BalancedBracketsUsingDequeUnitTest { | ||||
|     private BalancedBracketsUsingDeque balancedBracketsUsingDeque; | ||||
| 
 | ||||
|     @Before | ||||
|     public void setup() { | ||||
|         balancedBracketsUsingDeque = new BalancedBracketsUsingDeque(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenNullInput_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced(null); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenEmptyString_whenCheckingForBalance_shouldReturnTrue() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced(""); | ||||
|         assertThat(result).isTrue(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInvalidCharacterString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced("abc[](){}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenOddLengthString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced("{{[]()}}}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenEvenLengthString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced("{{[]()}}}}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenEvenLengthUnbalancedString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced("{[(])}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenEvenLengthBalancedString_whenCheckingForBalance_shouldReturnTrue() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced("{[()]}"); | ||||
|         assertThat(result).isTrue(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenBalancedString_whenCheckingForBalance_shouldReturnTrue() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced("{{[[(())]]}}"); | ||||
|         assertThat(result).isTrue(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenAnotherBalancedString_whenCheckingForBalance_shouldReturnTrue() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced("{{([])}}"); | ||||
|         assertThat(result).isTrue(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenUnBalancedString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingDeque.isBalanced("{{)[](}}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,76 @@ | ||||
| package com.baeldung.algorithms.balancedbrackets; | ||||
| 
 | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| import static org.assertj.core.api.Assertions.assertThat; | ||||
| 
 | ||||
| public class BalancedBracketsUsingStringUnitTest { | ||||
|     private BalancedBracketsUsingString balancedBracketsUsingString; | ||||
| 
 | ||||
|     @Before | ||||
|     public void setup() { | ||||
|         balancedBracketsUsingString = new BalancedBracketsUsingString(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenNullInput_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced(null); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenEmptyString_whenCheckingForBalance_shouldReturnTrue() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced(""); | ||||
|         assertThat(result).isTrue(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenInvalidCharacterString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced("abc[](){}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenOddLengthString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced("{{[]()}}}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenEvenLengthString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced("{{[]()}}}}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenEvenLengthUnbalancedString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced("{[(])}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenEvenLengthBalancedString_whenCheckingForBalance_shouldReturnTrue() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced("{[()]}"); | ||||
|         assertThat(result).isTrue(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenBalancedString_whenCheckingForBalance_shouldReturnTrue() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced("{{[[(())]]}}"); | ||||
|         assertThat(result).isTrue(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenAnotherBalancedString_whenCheckingForBalance_shouldReturnTrue() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced("{{([])}}"); | ||||
|         assertThat(result).isTrue(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenUnBalancedString_whenCheckingForBalance_shouldReturnFalse() { | ||||
|         boolean result = balancedBracketsUsingString.isBalanced("{{)[](}}"); | ||||
|         assertThat(result).isFalse(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -61,7 +61,7 @@ | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <classifier>spring-boot</classifier> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|  | ||||
| @ -75,7 +75,7 @@ | ||||
|                         <manifest> | ||||
|                             <addClasspath>true</addClasspath> | ||||
|                             <classpathPrefix>libs/</classpathPrefix> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                         </manifest> | ||||
|                     </archive> | ||||
|                 </configuration> | ||||
| @ -94,7 +94,7 @@ | ||||
|                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> | ||||
|                             <archive> | ||||
|                                 <manifest> | ||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                 </manifest> | ||||
|                             </archive> | ||||
|                             <descriptorRefs> | ||||
| @ -118,7 +118,7 @@ | ||||
|                             <shadedArtifactAttached>true</shadedArtifactAttached> | ||||
|                             <transformers> | ||||
|                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> | ||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                 </transformer> | ||||
|                             </transformers> | ||||
|                         </configuration> | ||||
| @ -133,7 +133,7 @@ | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <configuration> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <attachToBuild>true</attachToBuild> | ||||
|                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> | ||||
|                         </configuration> | ||||
| @ -155,7 +155,7 @@ | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <classifier>spring-boot</classifier> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.collections; | ||||
| package com.baeldung.collections; | ||||
| 
 | ||||
| import com.google.common.collect.Sets; | ||||
| import org.junit.Before; | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.collections; | ||||
| package com.baeldung.collections; | ||||
| 
 | ||||
| import com.google.common.collect.ImmutableList; | ||||
| import org.apache.commons.collections4.ListUtils; | ||||
| @ -3,13 +3,13 @@ | ||||
| This module contains articles about the Java List collection | ||||
| 
 | ||||
| ### Relevant Articles:  | ||||
| - [Check If Two Lists are Equal in Java](http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality) | ||||
| - [Check If Two Lists are Equal in Java](https://www.baeldung.com/java-test-a-list-for-ordinality-and-equality) | ||||
| - [Java 8 Streams: Find Items From One List Based On Values From Another List](https://www.baeldung.com/java-streams-find-list-items) | ||||
| - [A Guide to the Java LinkedList](http://www.baeldung.com/java-linkedlist) | ||||
| - [Java List UnsupportedOperationException](http://www.baeldung.com/java-list-unsupported-operation-exception) | ||||
| - [A Guide to the Java LinkedList](https://www.baeldung.com/java-linkedlist) | ||||
| - [Java List UnsupportedOperationException](https://www.baeldung.com/java-list-unsupported-operation-exception) | ||||
| - [Java List Initialization in One Line](https://www.baeldung.com/java-init-list-one-line) | ||||
| - [Ways to Iterate Over a List in Java](https://www.baeldung.com/java-iterate-list) | ||||
| - [Flattening Nested Collections in Java](http://www.baeldung.com/java-flatten-nested-collections) | ||||
| - [Flattening Nested Collections in Java](https://www.baeldung.com/java-flatten-nested-collections) | ||||
| - [Intersection of Two Lists in Java](https://www.baeldung.com/java-lists-intersection) | ||||
| - [Searching for a String in an ArrayList](https://www.baeldung.com/java-search-string-arraylist) | ||||
| - [[<-- Prev]](/core-java-modules/core-java-collections-list)[[Next -->]](/core-java-modules/core-java-collections-list-3) | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.lists; | ||||
| package com.baeldung.java.list; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.lists; | ||||
| package com.baeldung.java.list; | ||||
| 
 | ||||
| import org.junit.Assert; | ||||
| import org.junit.Test; | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.lists; | ||||
| package com.baeldung.java.list; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| @ -1,2 +0,0 @@ | ||||
| ### Relevant Articles: | ||||
| - [Check If Two Lists are Equal in Java](http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality) | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.collections; | ||||
| package com.baeldung.collections; | ||||
| 
 | ||||
| import static org.hamcrest.Matchers.hasSize; | ||||
| import static org.junit.Assert.assertThat; | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung; | ||||
| package com.baeldung.list.random; | ||||
| 
 | ||||
| import com.google.common.collect.Lists; | ||||
| import org.junit.Test; | ||||
| @ -0,0 +1,85 @@ | ||||
| package com.baeldung.workstealing; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
| import java.util.concurrent.ForkJoinTask; | ||||
| import java.util.concurrent.RecursiveAction; | ||||
| import java.util.concurrent.atomic.AtomicInteger; | ||||
| 
 | ||||
| public class PrimeNumbers extends RecursiveAction { | ||||
| 
 | ||||
|     private int lowerBound; | ||||
|     private int upperBound; | ||||
|     private int granularity; | ||||
|     static final List<Integer> GRANULARITIES | ||||
|       = Arrays.asList(1, 10, 100, 1000, 10000); | ||||
|     private AtomicInteger noOfPrimeNumbers; | ||||
| 
 | ||||
|     PrimeNumbers(int lowerBound, int upperBound, int granularity, AtomicInteger noOfPrimeNumbers) { | ||||
|         this.lowerBound = lowerBound; | ||||
|         this.upperBound = upperBound; | ||||
|         this.granularity = granularity; | ||||
|         this.noOfPrimeNumbers = noOfPrimeNumbers; | ||||
|     } | ||||
| 
 | ||||
|     PrimeNumbers(int upperBound) { | ||||
|         this(1, upperBound, 100, new AtomicInteger(0)); | ||||
|     } | ||||
| 
 | ||||
|     private PrimeNumbers(int lowerBound, int upperBound, AtomicInteger noOfPrimeNumbers) { | ||||
|         this(lowerBound, upperBound, 100, noOfPrimeNumbers); | ||||
|     } | ||||
| 
 | ||||
|     private List<PrimeNumbers> subTasks() { | ||||
|         List<PrimeNumbers> subTasks = new ArrayList<>(); | ||||
| 
 | ||||
|         for (int i = 1; i <= this.upperBound / granularity; i++) { | ||||
|             int upper = i * granularity; | ||||
|             int lower = (upper - granularity) + 1; | ||||
|             subTasks.add(new PrimeNumbers(lower, upper, noOfPrimeNumbers)); | ||||
|         } | ||||
|         return subTasks; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected void compute() { | ||||
|         if (((upperBound + 1) - lowerBound) > granularity) { | ||||
|             ForkJoinTask.invokeAll(subTasks()); | ||||
|         } else { | ||||
|             findPrimeNumbers(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     void findPrimeNumbers() { | ||||
|         for (int num = lowerBound; num <= upperBound; num++) { | ||||
|             if (isPrime(num)) { | ||||
|                 noOfPrimeNumbers.getAndIncrement(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private boolean isPrime(int number) { | ||||
|         if (number == 2) { | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         if (number == 1 || number % 2 == 0) { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         int noOfNaturalNumbers = 0; | ||||
| 
 | ||||
|         for (int i = 1; i <= number; i++) { | ||||
|             if (number % i == 0) { | ||||
|                 noOfNaturalNumbers++; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return noOfNaturalNumbers == 2; | ||||
|     } | ||||
| 
 | ||||
|     public int noOfPrimeNumbers() { | ||||
|         return noOfPrimeNumbers.intValue(); | ||||
|     } | ||||
| } | ||||
| @ -33,7 +33,7 @@ public class SaturationPolicyUnitTest { | ||||
|     @Test | ||||
|     public void givenAbortPolicy_WhenSaturated_ThenShouldThrowRejectedExecutionException() { | ||||
|         executor = new ThreadPoolExecutor(1, 1, 0, MILLISECONDS, new SynchronousQueue<>(), new AbortPolicy()); | ||||
|         executor.execute(() -> waitFor(100)); | ||||
|         executor.execute(() -> waitFor(250)); | ||||
| 
 | ||||
|         assertThatThrownBy(() -> executor.execute(() -> System.out.println("Will be rejected"))).isInstanceOf(RejectedExecutionException.class); | ||||
|     } | ||||
| @ -42,13 +42,13 @@ public class SaturationPolicyUnitTest { | ||||
|     @Test | ||||
|     public void givenCallerRunsPolicy_WhenSaturated_ThenTheCallerThreadRunsTheTask() { | ||||
|         executor = new ThreadPoolExecutor(1, 1, 0, MILLISECONDS, new SynchronousQueue<>(), new CallerRunsPolicy()); | ||||
|         executor.execute(() -> waitFor(100)); | ||||
|         executor.execute(() -> waitFor(250)); | ||||
| 
 | ||||
|         long startTime = System.nanoTime(); | ||||
|         executor.execute(() -> waitFor(100)); | ||||
|         double blockedDuration = (System.nanoTime() - startTime) / 1_000_000.0; | ||||
|         long startTime = System.currentTimeMillis(); | ||||
|         executor.execute(() -> waitFor(500)); | ||||
|         long blockedDuration = System.currentTimeMillis() - startTime; | ||||
| 
 | ||||
|         assertThat(blockedDuration).isGreaterThanOrEqualTo(100); | ||||
|         assertThat(blockedDuration).isGreaterThanOrEqualTo(500); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|  | ||||
| @ -0,0 +1,101 @@ | ||||
| package com.baeldung.workstealing; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| import org.openjdk.jmh.annotations.*; | ||||
| import org.openjdk.jmh.runner.Runner; | ||||
| import org.openjdk.jmh.runner.RunnerException; | ||||
| import org.openjdk.jmh.runner.options.Options; | ||||
| import org.openjdk.jmh.runner.options.OptionsBuilder; | ||||
| 
 | ||||
| import java.util.concurrent.Executors; | ||||
| import java.util.concurrent.ForkJoinPool; | ||||
| import java.util.concurrent.TimeUnit; | ||||
| import java.util.concurrent.atomic.AtomicInteger; | ||||
| import java.util.logging.Logger; | ||||
| 
 | ||||
| import static org.junit.Assert.fail; | ||||
| 
 | ||||
| public class PrimeNumbersUnitTest { | ||||
| 
 | ||||
|     private static Logger logger = Logger.getAnonymousLogger(); | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenPrimesCalculated_whenUsingPoolsAndOneThread_thenOneThreadSlowest() { | ||||
|         Options opt = new OptionsBuilder() | ||||
|           .include(Benchmarker.class.getSimpleName()) | ||||
|           .forks(1) | ||||
|           .build(); | ||||
| 
 | ||||
|         try { | ||||
|             new Runner(opt).run(); | ||||
|         } catch (RunnerException e) { | ||||
|             fail(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenNewWorkStealingPool_whenGettingPrimes_thenStealCountChanges() { | ||||
|         StringBuilder info = new StringBuilder(); | ||||
| 
 | ||||
|         for (int granularity : PrimeNumbers.GRANULARITIES) { | ||||
|             int parallelism = ForkJoinPool.getCommonPoolParallelism(); | ||||
|             ForkJoinPool pool = | ||||
|               (ForkJoinPool) Executors.newWorkStealingPool(parallelism); | ||||
| 
 | ||||
|             stealCountInfo(info, granularity, pool); | ||||
|         } | ||||
|         logger.info("\nExecutors.newWorkStealingPool ->" + info.toString()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenCommonPool_whenGettingPrimes_thenStealCountChangesSlowly() { | ||||
|         StringBuilder info = new StringBuilder(); | ||||
| 
 | ||||
|         for (int granularity : PrimeNumbers.GRANULARITIES) { | ||||
|             ForkJoinPool pool = ForkJoinPool.commonPool(); | ||||
|             stealCountInfo(info, granularity, pool); | ||||
|         } | ||||
|         logger.info("\nForkJoinPool.commonPool ->" + info.toString()); | ||||
|     } | ||||
| 
 | ||||
|     private void stealCountInfo(StringBuilder info, int granularity, ForkJoinPool forkJoinPool) { | ||||
|         PrimeNumbers primes = new PrimeNumbers(1, 10000, granularity, new AtomicInteger(0)); | ||||
|         forkJoinPool.invoke(primes); | ||||
|         forkJoinPool.shutdown(); | ||||
| 
 | ||||
|         long steals = forkJoinPool.getStealCount(); | ||||
|         String output = "\nGranularity: [" + granularity + "], Steals: [" + steals + "]"; | ||||
|         info.append(output); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @BenchmarkMode(Mode.AverageTime) | ||||
|     @OutputTimeUnit(TimeUnit.MILLISECONDS) | ||||
|     @State(Scope.Benchmark) | ||||
|     @Fork(value = 2, warmups = 1, jvmArgs = {"-Xms2G", "-Xmx2G"}) | ||||
|     public static class Benchmarker { | ||||
| 
 | ||||
|         @Benchmark | ||||
|         public void singleThread() { | ||||
|             PrimeNumbers primes = new PrimeNumbers(10000); | ||||
|             primes.findPrimeNumbers(); // get prime numbers using a single thread | ||||
|         } | ||||
| 
 | ||||
|         @Benchmark | ||||
|         public void commonPoolBenchmark() { | ||||
|             PrimeNumbers primes = new PrimeNumbers(10000); | ||||
|             ForkJoinPool pool = ForkJoinPool.commonPool(); | ||||
|             pool.invoke(primes); | ||||
|             pool.shutdown(); | ||||
|         } | ||||
| 
 | ||||
|         @Benchmark | ||||
|         public void newWorkStealingPoolBenchmark() { | ||||
|             PrimeNumbers primes = new PrimeNumbers(10000); | ||||
|             int parallelism = ForkJoinPool.getCommonPoolParallelism(); | ||||
|             ForkJoinPool stealer = (ForkJoinPool) Executors.newWorkStealingPool(parallelism); | ||||
|             stealer.invoke(primes); | ||||
|             stealer.shutdown(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.streams; | ||||
| package com.baeldung.java.stream; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| @ -13,12 +13,24 @@ | ||||
| 		<version>0.0.1-SNAPSHOT</version> | ||||
| 		<relativePath>../../parent-java</relativePath> | ||||
| 	</parent> | ||||
| 	 | ||||
| 	<dependencies> | ||||
| 		<!-- test scoped --> | ||||
| 		<dependency> | ||||
|             <groupId>org.assertj</groupId> | ||||
|             <artifactId>assertj-core</artifactId> | ||||
|             <version>${assertj-core.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
| 	</dependencies> | ||||
| 
 | ||||
| 	<description> </description> | ||||
| 	<url>http://maven.apache.org</url> | ||||
| 
 | ||||
| 	<properties> | ||||
| 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||
| 		<!-- testing --> | ||||
| 		<assertj-core.version>3.10.0</assertj-core.version> | ||||
| 	</properties> | ||||
| 
 | ||||
| </project> | ||||
|  | ||||
| @ -0,0 +1,28 @@ | ||||
| package com.baeldung.exceptions; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.net.HttpURLConnection; | ||||
| import java.net.URL; | ||||
| import java.net.UnknownHostException; | ||||
| 
 | ||||
| public class UnknownHostExceptionHandling { | ||||
| 
 | ||||
|     public static int getResponseCode(String hostname) throws IOException { | ||||
|         URL url = new URL(hostname.trim()); | ||||
|         HttpURLConnection con = (HttpURLConnection) url.openConnection(); | ||||
|         int resCode = -1; | ||||
|         try { | ||||
|             resCode = con.getResponseCode(); | ||||
|         } catch (UnknownHostException e){ | ||||
|             con.disconnect(); | ||||
|         } | ||||
|         return resCode; | ||||
|     } | ||||
|      | ||||
|     public static int getResponseCodeUnhandled(String hostname) throws IOException { | ||||
|         URL url = new URL(hostname.trim()); | ||||
|         HttpURLConnection con = (HttpURLConnection) url.openConnection(); | ||||
|         int resCode = con.getResponseCode(); | ||||
|         return resCode; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,15 @@ | ||||
| package com.baeldung.exceptions; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.net.UnknownHostException; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| public class UnknownHostExceptionHandlingUnitTest { | ||||
| 
 | ||||
|     @Test(expected = UnknownHostException.class) | ||||
|     public void givenUnknownHost_whenResolve_thenUnknownHostException() throws IOException { | ||||
|         UnknownHostExceptionHandling.getResponseCodeUnhandled("http://locaihost"); | ||||
|     } | ||||
|      | ||||
| } | ||||
| @ -99,7 +99,7 @@ | ||||
|                         <manifest> | ||||
|                             <addClasspath>true</addClasspath> | ||||
|                             <classpathPrefix>libs/</classpathPrefix> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                         </manifest> | ||||
|                     </archive> | ||||
|                 </configuration> | ||||
| @ -118,7 +118,7 @@ | ||||
|                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> | ||||
|                             <archive> | ||||
|                                 <manifest> | ||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                 </manifest> | ||||
|                             </archive> | ||||
|                             <descriptorRefs> | ||||
| @ -142,7 +142,7 @@ | ||||
|                             <shadedArtifactAttached>true</shadedArtifactAttached> | ||||
|                             <transformers> | ||||
|                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> | ||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                 </transformer> | ||||
|                             </transformers> | ||||
|                         </configuration> | ||||
| @ -157,7 +157,7 @@ | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <configuration> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <attachToBuild>true</attachToBuild> | ||||
|                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> | ||||
|                         </configuration> | ||||
| @ -179,7 +179,7 @@ | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <classifier>spring-boot</classifier> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|  | ||||
| @ -49,7 +49,7 @@ | ||||
|                         <manifest> | ||||
|                             <addClasspath>true</addClasspath> | ||||
|                             <classpathPrefix>libs/</classpathPrefix> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                         </manifest> | ||||
|                     </archive> | ||||
|                 </configuration> | ||||
|  | ||||
| @ -99,7 +99,7 @@ | ||||
|                         <manifest> | ||||
|                             <addClasspath>true</addClasspath> | ||||
|                             <classpathPrefix>libs/</classpathPrefix> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                         </manifest> | ||||
|                     </archive> | ||||
|                 </configuration> | ||||
| @ -118,7 +118,7 @@ | ||||
|                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> | ||||
|                             <archive> | ||||
|                                 <manifest> | ||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                 </manifest> | ||||
|                             </archive> | ||||
|                             <descriptorRefs> | ||||
| @ -142,7 +142,7 @@ | ||||
|                             <shadedArtifactAttached>true</shadedArtifactAttached> | ||||
|                             <transformers> | ||||
|                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> | ||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                                 </transformer> | ||||
|                             </transformers> | ||||
|                         </configuration> | ||||
| @ -157,7 +157,7 @@ | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <configuration> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <attachToBuild>true</attachToBuild> | ||||
|                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> | ||||
|                         </configuration> | ||||
| @ -179,7 +179,7 @@ | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <classifier>spring-boot</classifier> | ||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|  | ||||
| @ -1,10 +0,0 @@ | ||||
| package org.baeldung.executable; | ||||
| 
 | ||||
| import javax.swing.*; | ||||
| 
 | ||||
| public class ExecutableMavenJar { | ||||
| 
 | ||||
|     public static void main(String[] args) { | ||||
|         JOptionPane.showMessageDialog(null, "It worked!", "Executable Jar with Maven", 1); | ||||
|     } | ||||
| } | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java; | ||||
| package com.baeldung; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| import org.slf4j.Logger; | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.arrays; | ||||
| package com.baeldung.arrays; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.rawtypes; | ||||
| package com.baeldung.rawtypes; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| @ -1,4 +1,4 @@ | ||||
| package org.baeldung.java.sandbox; | ||||
| package com.baeldung.sandbox; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| import org.slf4j.Logger; | ||||
							
								
								
									
										14
									
								
								core-kotlin-2/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								core-kotlin-2/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,14 +0,0 @@ | ||||
| /bin/ | ||||
| 
 | ||||
| #ignore gradle | ||||
| .gradle/ | ||||
| 
 | ||||
| 
 | ||||
| #ignore build and generated files | ||||
| build/ | ||||
| node/ | ||||
| out/ | ||||
| 
 | ||||
| #ignore installed node modules and package lock file | ||||
| node_modules/ | ||||
| package-lock.json | ||||
| @ -1,14 +0,0 @@ | ||||
| ## Core Kotlin | ||||
| 
 | ||||
| This module contains articles about core Kotlin. | ||||
| 
 | ||||
| ### Relevant articles: | ||||
| 
 | ||||
| - [Kotlin Scope Functions](https://www.baeldung.com/kotlin-scope-functions) | ||||
| - [Kotlin Annotations](https://www.baeldung.com/kotlin-annotations) | ||||
| - [Split a List into Parts in Kotlin](https://www.baeldung.com/kotlin-split-list-into-parts) | ||||
| - [String Comparison in Kotlin](https://www.baeldung.com/kotlin-string-comparison) | ||||
| - [Guide to JVM Platform Annotations in Kotlin](https://www.baeldung.com/kotlin-jvm-annotations) | ||||
| - [Finding an Element in a List Using Kotlin](https://www.baeldung.com/kotlin-finding-element-in-list) | ||||
| - [Kotlin Ternary Conditional Operator](https://www.baeldung.com/kotlin-ternary-conditional-operator) | ||||
| - More articles: [[<-- prev]](/core-kotlin) | ||||
| @ -1,58 +0,0 @@ | ||||
| 
 | ||||
| 
 | ||||
| group 'com.baeldung.ktor' | ||||
| version '1.0-SNAPSHOT' | ||||
| 
 | ||||
| 
 | ||||
| buildscript { | ||||
|     ext.kotlin_version = '1.3.30' | ||||
| 
 | ||||
|     repositories { | ||||
|         mavenCentral() | ||||
|     } | ||||
|     dependencies { | ||||
| 
 | ||||
|         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| apply plugin: 'java' | ||||
| apply plugin: 'kotlin' | ||||
| apply plugin: 'application' | ||||
| 
 | ||||
| mainClassName = 'APIServer.kt' | ||||
| 
 | ||||
| sourceCompatibility = 1.8 | ||||
| compileKotlin { kotlinOptions.jvmTarget = "1.8" } | ||||
| compileTestKotlin { kotlinOptions.jvmTarget = "1.8" } | ||||
| 
 | ||||
| repositories { | ||||
|     mavenCentral() | ||||
|     jcenter() | ||||
|     maven { url "https://dl.bintray.com/kotlin/ktor" } | ||||
| } | ||||
| sourceSets { | ||||
|     main{ | ||||
|         kotlin{ | ||||
|             srcDirs 'com/baeldung/ktor' | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| test { | ||||
|     useJUnitPlatform() | ||||
|     testLogging { | ||||
|         events "passed", "skipped", "failed" | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation "ch.qos.logback:logback-classic:1.2.1" | ||||
|     implementation "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}" | ||||
|     testImplementation 'org.junit.jupiter:junit-jupiter:5.4.2' | ||||
|     testImplementation 'junit:junit:4.12' | ||||
|     testImplementation 'org.assertj:assertj-core:3.12.2' | ||||
|     testImplementation 'org.mockito:mockito-core:2.27.0' | ||||
|     testImplementation "org.jetbrains.kotlin:kotlin-test:${kotlin_version}" | ||||
|     testImplementation "org.jetbrains.kotlin:kotlin-test-junit5:${kotlin_version}" | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								core-kotlin-2/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								core-kotlin-2/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -1,5 +0,0 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-bin.zip | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
| zipStorePath=wrapper/dists | ||||
							
								
								
									
										188
									
								
								core-kotlin-2/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										188
									
								
								core-kotlin-2/gradlew
									
									
									
									
										vendored
									
									
								
							| @ -1,188 +0,0 @@ | ||||
| #!/usr/bin/env sh | ||||
| 
 | ||||
| # | ||||
| # Copyright 2015 the original author or authors. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #      http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| 
 | ||||
| ############################################################################## | ||||
| ## | ||||
| ##  Gradle start up script for UN*X | ||||
| ## | ||||
| ############################################################################## | ||||
| 
 | ||||
| # Attempt to set APP_HOME | ||||
| # Resolve links: $0 may be a link | ||||
| PRG="$0" | ||||
| # Need this for relative symlinks. | ||||
| while [ -h "$PRG" ] ; do | ||||
|     ls=`ls -ld "$PRG"` | ||||
|     link=`expr "$ls" : '.*-> \(.*\)$'` | ||||
|     if expr "$link" : '/.*' > /dev/null; then | ||||
|         PRG="$link" | ||||
|     else | ||||
|         PRG=`dirname "$PRG"`"/$link" | ||||
|     fi | ||||
| done | ||||
| SAVED="`pwd`" | ||||
| cd "`dirname \"$PRG\"`/" >/dev/null | ||||
| APP_HOME="`pwd -P`" | ||||
| cd "$SAVED" >/dev/null | ||||
| 
 | ||||
| APP_NAME="Gradle" | ||||
| APP_BASE_NAME=`basename "$0"` | ||||
| 
 | ||||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||
| 
 | ||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
| MAX_FD="maximum" | ||||
| 
 | ||||
| warn () { | ||||
|     echo "$*" | ||||
| } | ||||
| 
 | ||||
| die () { | ||||
|     echo | ||||
|     echo "$*" | ||||
|     echo | ||||
|     exit 1 | ||||
| } | ||||
| 
 | ||||
| # OS specific support (must be 'true' or 'false'). | ||||
| cygwin=false | ||||
| msys=false | ||||
| darwin=false | ||||
| nonstop=false | ||||
| case "`uname`" in | ||||
|   CYGWIN* ) | ||||
|     cygwin=true | ||||
|     ;; | ||||
|   Darwin* ) | ||||
|     darwin=true | ||||
|     ;; | ||||
|   MINGW* ) | ||||
|     msys=true | ||||
|     ;; | ||||
|   NONSTOP* ) | ||||
|     nonstop=true | ||||
|     ;; | ||||
| esac | ||||
| 
 | ||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||
| 
 | ||||
| # Determine the Java command to use to start the JVM. | ||||
| if [ -n "$JAVA_HOME" ] ; then | ||||
|     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||||
|         # IBM's JDK on AIX uses strange locations for the executables | ||||
|         JAVACMD="$JAVA_HOME/jre/sh/java" | ||||
|     else | ||||
|         JAVACMD="$JAVA_HOME/bin/java" | ||||
|     fi | ||||
|     if [ ! -x "$JAVACMD" ] ; then | ||||
|         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||||
| 
 | ||||
| Please set the JAVA_HOME variable in your environment to match the | ||||
| location of your Java installation." | ||||
|     fi | ||||
| else | ||||
|     JAVACMD="java" | ||||
|     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| 
 | ||||
| Please set the JAVA_HOME variable in your environment to match the | ||||
| location of your Java installation." | ||||
| fi | ||||
| 
 | ||||
| # Increase the maximum file descriptors if we can. | ||||
| if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then | ||||
|     MAX_FD_LIMIT=`ulimit -H -n` | ||||
|     if [ $? -eq 0 ] ; then | ||||
|         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||||
|             MAX_FD="$MAX_FD_LIMIT" | ||||
|         fi | ||||
|         ulimit -n $MAX_FD | ||||
|         if [ $? -ne 0 ] ; then | ||||
|             warn "Could not set maximum file descriptor limit: $MAX_FD" | ||||
|         fi | ||||
|     else | ||||
|         warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||||
|     fi | ||||
| fi | ||||
| 
 | ||||
| # For Darwin, add options to specify how the application appears in the dock | ||||
| if $darwin; then | ||||
|     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||||
| fi | ||||
| 
 | ||||
| # For Cygwin, switch paths to Windows format before running java | ||||
| if $cygwin ; then | ||||
|     APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||||
|     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||||
|     JAVACMD=`cygpath --unix "$JAVACMD"` | ||||
| 
 | ||||
|     # We build the pattern for arguments to be converted via cygpath | ||||
|     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||||
|     SEP="" | ||||
|     for dir in $ROOTDIRSRAW ; do | ||||
|         ROOTDIRS="$ROOTDIRS$SEP$dir" | ||||
|         SEP="|" | ||||
|     done | ||||
|     OURCYGPATTERN="(^($ROOTDIRS))" | ||||
|     # Add a user-defined pattern to the cygpath arguments | ||||
|     if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||||
|         OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||||
|     fi | ||||
|     # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||||
|     i=0 | ||||
|     for arg in "$@" ; do | ||||
|         CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||||
|         CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option | ||||
| 
 | ||||
|         if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition | ||||
|             eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||||
|         else | ||||
|             eval `echo args$i`="\"$arg\"" | ||||
|         fi | ||||
|         i=$((i+1)) | ||||
|     done | ||||
|     case $i in | ||||
|         (0) set -- ;; | ||||
|         (1) set -- "$args0" ;; | ||||
|         (2) set -- "$args0" "$args1" ;; | ||||
|         (3) set -- "$args0" "$args1" "$args2" ;; | ||||
|         (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||||
|         (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||||
|         (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||||
|         (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||||
|         (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||||
|         (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||||
|     esac | ||||
| fi | ||||
| 
 | ||||
| # Escape application args | ||||
| save () { | ||||
|     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | ||||
|     echo " " | ||||
| } | ||||
| APP_ARGS=$(save "$@") | ||||
| 
 | ||||
| # Collect all arguments for the java command, following the shell quoting and substitution rules | ||||
| eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ||||
| 
 | ||||
| # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | ||||
| if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then | ||||
|   cd "$(dirname "$0")" | ||||
| fi | ||||
| 
 | ||||
| exec "$JAVACMD" "$@" | ||||
							
								
								
									
										100
									
								
								core-kotlin-2/gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										100
									
								
								core-kotlin-2/gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @ -1,100 +0,0 @@ | ||||
| @rem | ||||
| @rem Copyright 2015 the original author or authors. | ||||
| @rem | ||||
| @rem Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| @rem you may not use this file except in compliance with the License. | ||||
| @rem You may obtain a copy of the License at | ||||
| @rem | ||||
| @rem      http://www.apache.org/licenses/LICENSE-2.0 | ||||
| @rem | ||||
| @rem Unless required by applicable law or agreed to in writing, software | ||||
| @rem distributed under the License is distributed on an "AS IS" BASIS, | ||||
| @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| @rem See the License for the specific language governing permissions and | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
| 
 | ||||
| @if "%DEBUG%" == "" @echo off | ||||
| @rem ########################################################################## | ||||
| @rem | ||||
| @rem  Gradle startup script for Windows | ||||
| @rem | ||||
| @rem ########################################################################## | ||||
| 
 | ||||
| @rem Set local scope for the variables with windows NT shell | ||||
| if "%OS%"=="Windows_NT" setlocal | ||||
| 
 | ||||
| set DIRNAME=%~dp0 | ||||
| if "%DIRNAME%" == "" set DIRNAME=. | ||||
| set APP_BASE_NAME=%~n0 | ||||
| set APP_HOME=%DIRNAME% | ||||
| 
 | ||||
| @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||
| set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | ||||
| 
 | ||||
| @rem Find java.exe | ||||
| if defined JAVA_HOME goto findJavaFromJavaHome | ||||
| 
 | ||||
| set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if "%ERRORLEVEL%" == "0" goto init | ||||
| 
 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| :findJavaFromJavaHome | ||||
| set JAVA_HOME=%JAVA_HOME:"=% | ||||
| set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||
| 
 | ||||
| if exist "%JAVA_EXE%" goto init | ||||
| 
 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| :init | ||||
| @rem Get command-line arguments, handling Windows variants | ||||
| 
 | ||||
| if not "%OS%" == "Windows_NT" goto win9xME_args | ||||
| 
 | ||||
| :win9xME_args | ||||
| @rem Slurp the command line arguments. | ||||
| set CMD_LINE_ARGS= | ||||
| set _SKIP=2 | ||||
| 
 | ||||
| :win9xME_args_slurp | ||||
| if "x%~1" == "x" goto execute | ||||
| 
 | ||||
| set CMD_LINE_ARGS=%* | ||||
| 
 | ||||
| :execute | ||||
| @rem Setup the command line | ||||
| 
 | ||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||
| 
 | ||||
| @rem Execute Gradle | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | ||||
| 
 | ||||
| :end | ||||
| @rem End local scope for the variables with windows NT shell | ||||
| if "%ERRORLEVEL%"=="0" goto mainEnd | ||||
| 
 | ||||
| :fail | ||||
| rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||||
| rem the _cmd.exe /c_ return code! | ||||
| if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||||
| exit /b 1 | ||||
| 
 | ||||
| :mainEnd | ||||
| if "%OS%"=="Windows_NT" endlocal | ||||
| 
 | ||||
| :omega | ||||
| @ -1,97 +0,0 @@ | ||||
| <?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-kotlin-2</artifactId> | ||||
|     <name>core-kotlin-2</name> | ||||
|     <packaging>jar</packaging> | ||||
| 
 | ||||
|     <parent> | ||||
|         <groupId>com.baeldung</groupId> | ||||
|         <artifactId>parent-kotlin</artifactId> | ||||
|         <version>1.0.0-SNAPSHOT</version> | ||||
|         <relativePath>../parent-kotlin</relativePath> | ||||
|     </parent> | ||||
| 
 | ||||
|     <dependencies> | ||||
|         <dependency> | ||||
|             <groupId>org.jetbrains.kotlin</groupId> | ||||
|             <artifactId>kotlin-stdlib-jdk8</artifactId> | ||||
|             <version>${kotlin.version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.junit.jupiter</groupId> | ||||
|             <artifactId>junit-jupiter</artifactId> | ||||
|             <version>${junit.jupiter.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.mockito</groupId> | ||||
|             <artifactId>mockito-core</artifactId> | ||||
|             <version>${mockito.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>net.bytebuddy</groupId> | ||||
|             <artifactId>byte-buddy</artifactId> | ||||
|             <version>${byte-buddy.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.assertj</groupId> | ||||
|             <artifactId>assertj-core</artifactId> | ||||
|             <version>${assertj.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.jetbrains.kotlin</groupId> | ||||
|             <artifactId>kotlin-test</artifactId> | ||||
|             <version>${kotlin.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.jetbrains.kotlin</groupId> | ||||
|             <artifactId>kotlin-test-junit5</artifactId> | ||||
|             <version>${kotlin.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
| 
 | ||||
|     <build> | ||||
|         <plugins> | ||||
|             <plugin> | ||||
|                 <groupId>org.jetbrains.kotlin</groupId> | ||||
|                 <artifactId>kotlin-maven-plugin</artifactId> | ||||
|                 <version>${kotlin.version}</version> | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <id>compile</id> | ||||
|                         <phase>compile</phase> | ||||
|                         <goals> | ||||
|                             <goal>compile</goal> | ||||
|                         </goals> | ||||
|                     </execution> | ||||
|                     <execution> | ||||
|                         <id>test-compile</id> | ||||
|                         <phase>test-compile</phase> | ||||
|                         <goals> | ||||
|                             <goal>test-compile</goal> | ||||
|                         </goals> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|                 <configuration> | ||||
|                     <jvmTarget>1.8</jvmTarget> | ||||
|                 </configuration> | ||||
|             </plugin> | ||||
|         </plugins> | ||||
|     </build> | ||||
| 
 | ||||
|     <properties> | ||||
|         <kotlin.version>1.3.30</kotlin.version> | ||||
|         <junit.jupiter.version>5.4.2</junit.jupiter.version> | ||||
|         <mockito.version>2.27.0</mockito.version> | ||||
|         <byte-buddy.version>1.9.12</byte-buddy.version> | ||||
|         <assertj.version>3.10.0</assertj.version> | ||||
|     </properties> | ||||
| 
 | ||||
| </project> | ||||
| @ -1,11 +0,0 @@ | ||||
| <configuration> | ||||
|   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||||
|     <encoder> | ||||
|       <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> | ||||
|     </encoder> | ||||
|   </appender> | ||||
| 
 | ||||
|   <root level="INFO"> | ||||
|     <appender-ref ref="STDOUT"/> | ||||
|   </root> | ||||
| </configuration> | ||||
| @ -1,2 +0,0 @@ | ||||
| rootProject.name = 'KtorWithKotlin' | ||||
| 
 | ||||
| @ -1,13 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <configuration> | ||||
|     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||||
|         <encoder> | ||||
|             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n | ||||
|             </pattern> | ||||
|         </encoder> | ||||
|     </appender> | ||||
| 
 | ||||
|     <root level="INFO"> | ||||
|         <appender-ref ref="STDOUT" /> | ||||
|     </root> | ||||
| </configuration> | ||||
| @ -1,5 +0,0 @@ | ||||
| Hello to Kotlin. Its: | ||||
| 1. Concise | ||||
| 2. Safe | ||||
| 3. Interoperable | ||||
| 4. Tool-friendly | ||||
| @ -1,2 +0,0 @@ | ||||
| Kotlin | ||||
| Concise, Safe, Interoperable, Tool-friendly | ||||
							
								
								
									
										8
									
								
								core-kotlin-modules/core-kotlin-2/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								core-kotlin-modules/core-kotlin-2/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| ## Core Kotlin 2 | ||||
| 
 | ||||
| This module contains articles about Kotlin core features. | ||||
| 
 | ||||
| ### Relevant articles: | ||||
| - [Working with Dates in Kotlin](https://www.baeldung.com/kotlin-dates) | ||||
| - [Kotlin Ternary Conditional Operator](https://www.baeldung.com/kotlin-ternary-conditional-operator) | ||||
| - [[<-- Prev]](/core-kotlin-modules/core-kotlin) | ||||
							
								
								
									
										25
									
								
								core-kotlin-modules/core-kotlin-2/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								core-kotlin-modules/core-kotlin-2/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | ||||
| <?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-kotlin-2</artifactId> | ||||
|     <name>core-kotlin-2</name> | ||||
|     <packaging>jar</packaging> | ||||
| 
 | ||||
|     <parent> | ||||
|         <groupId>com.baeldung.core-kotlin-modules</groupId> | ||||
|         <artifactId>core-kotlin-modules</artifactId> | ||||
|         <version>1.0.0-SNAPSHOT</version> | ||||
|     </parent> | ||||
| 
 | ||||
|     <dependencies> | ||||
|         <dependency> | ||||
|             <groupId>org.assertj</groupId> | ||||
|             <artifactId>assertj-core</artifactId> | ||||
|             <version>${assertj.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
| 
 | ||||
| </project> | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.datetime | ||||
| package com.baeldung.dates.datetime | ||||
| 
 | ||||
| import java.time.Duration | ||||
| import java.time.LocalTime | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.datetime | ||||
| package com.baeldung.dates.datetime | ||||
| 
 | ||||
| import java.time.DayOfWeek | ||||
| import java.time.LocalDate | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.datetime | ||||
| package com.baeldung.dates.datetime | ||||
| 
 | ||||
| import java.time.LocalDateTime | ||||
| 
 | ||||
| @ -1,6 +1,5 @@ | ||||
| package com.baeldung.datetime | ||||
| package com.baeldung.dates.datetime | ||||
| 
 | ||||
| import java.time.LocalDateTime | ||||
| import java.time.LocalTime | ||||
| import java.time.temporal.ChronoUnit | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.datetime | ||||
| package com.baeldung.dates.datetime | ||||
| 
 | ||||
| import java.time.LocalDate | ||||
| import java.time.Period | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.datetime | ||||
| package com.baeldung.dates.datetime | ||||
| 
 | ||||
| import java.time.LocalDateTime | ||||
| import java.time.ZoneId | ||||
| @ -1,34 +1,34 @@ | ||||
| package com.baeldung.kotlin.dates | ||||
| 
 | ||||
| import org.assertj.core.api.Assertions.assertThat | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.LocalDate | ||||
| import java.time.format.DateTimeFormatter | ||||
| 
 | ||||
| class CreateDateUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenString_whenDefaultFormat_thenCreated() { | ||||
| 
 | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         assertThat(date).isEqualTo("2018-12-31") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenString_whenCustomFormat_thenCreated() { | ||||
| 
 | ||||
|         var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") | ||||
|         var date = LocalDate.parse("31-12-2018", formatter) | ||||
| 
 | ||||
|         assertThat(date).isEqualTo("2018-12-31") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenYMD_whenUsingOf_thenCreated() { | ||||
|         var date = LocalDate.of(2018, 12, 31) | ||||
| 
 | ||||
|         assertThat(date).isEqualTo("2018-12-31") | ||||
|     } | ||||
| 
 | ||||
| package com.baeldung.kotlin.dates | ||||
| 
 | ||||
| import org.assertj.core.api.Assertions.assertThat | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.LocalDate | ||||
| import java.time.format.DateTimeFormatter | ||||
| 
 | ||||
| class CreateDateUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenString_whenDefaultFormat_thenCreated() { | ||||
| 
 | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         assertThat(date).isEqualTo("2018-12-31") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenString_whenCustomFormat_thenCreated() { | ||||
| 
 | ||||
|         var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") | ||||
|         var date = LocalDate.parse("31-12-2018", formatter) | ||||
| 
 | ||||
|         assertThat(date).isEqualTo("2018-12-31") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenYMD_whenUsingOf_thenCreated() { | ||||
|         var date = LocalDate.of(2018, 12, 31) | ||||
| 
 | ||||
|         assertThat(date).isEqualTo("2018-12-31") | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -1,29 +1,29 @@ | ||||
| package com.baeldung.kotlin.dates | ||||
| 
 | ||||
| import org.assertj.core.api.Assertions.assertThat | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.DayOfWeek | ||||
| import java.time.LocalDate | ||||
| import java.time.Month | ||||
| 
 | ||||
| class ExtractDateUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenDate_thenExtractedYMD() { | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         assertThat(date.year).isEqualTo(2018) | ||||
|         assertThat(date.month).isEqualTo(Month.DECEMBER) | ||||
|         assertThat(date.dayOfMonth).isEqualTo(31) | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenDate_thenExtractedEraDowDoy() { | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         assertThat(date.era.toString()).isEqualTo("CE") | ||||
|         assertThat(date.dayOfWeek).isEqualTo(DayOfWeek.MONDAY) | ||||
|         assertThat(date.dayOfYear).isEqualTo(365) | ||||
|     } | ||||
| 
 | ||||
| package com.baeldung.kotlin.dates | ||||
| 
 | ||||
| import org.assertj.core.api.Assertions.assertThat | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.DayOfWeek | ||||
| import java.time.LocalDate | ||||
| import java.time.Month | ||||
| 
 | ||||
| class ExtractDateUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenDate_thenExtractedYMD() { | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         assertThat(date.year).isEqualTo(2018) | ||||
|         assertThat(date.month).isEqualTo(Month.DECEMBER) | ||||
|         assertThat(date.dayOfMonth).isEqualTo(31) | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenDate_thenExtractedEraDowDoy() { | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         assertThat(date.era.toString()).isEqualTo("CE") | ||||
|         assertThat(date.dayOfWeek).isEqualTo(DayOfWeek.MONDAY) | ||||
|         assertThat(date.dayOfYear).isEqualTo(365) | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -1,29 +1,29 @@ | ||||
| package com.baeldung.kotlin.dates | ||||
| 
 | ||||
| import org.assertj.core.api.Assertions.assertThat | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.LocalDate | ||||
| import java.time.format.DateTimeFormatter | ||||
| 
 | ||||
| class FormatDateUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenDate_whenDefaultFormat_thenFormattedString() { | ||||
| 
 | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         assertThat(date.toString()).isEqualTo("2018-12-31") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenDate_whenCustomFormat_thenFormattedString() { | ||||
| 
 | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy") | ||||
|         var formattedDate = date.format(formatter) | ||||
| 
 | ||||
|         assertThat(formattedDate).isEqualTo("31-December-2018") | ||||
|     } | ||||
| 
 | ||||
| package com.baeldung.kotlin.dates | ||||
| 
 | ||||
| import org.assertj.core.api.Assertions.assertThat | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.LocalDate | ||||
| import java.time.format.DateTimeFormatter | ||||
| 
 | ||||
| class FormatDateUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenDate_whenDefaultFormat_thenFormattedString() { | ||||
| 
 | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         assertThat(date.toString()).isEqualTo("2018-12-31") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenDate_whenCustomFormat_thenFormattedString() { | ||||
| 
 | ||||
|         var date = LocalDate.parse("2018-12-31") | ||||
| 
 | ||||
|         var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy") | ||||
|         var formattedDate = date.format(formatter) | ||||
| 
 | ||||
|         assertThat(formattedDate).isEqualTo("31-December-2018") | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -1,48 +1,48 @@ | ||||
| package com.baeldung.kotlin.dates | ||||
| 
 | ||||
| import org.assertj.core.api.Assertions.assertThat | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.LocalDate | ||||
| import java.time.Period | ||||
| 
 | ||||
| class PeriodDateUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenYMD_thenCreatePeriod() { | ||||
|         var period = Period.of(1, 2, 3) | ||||
| 
 | ||||
|         assertThat(period.toString()).isEqualTo("P1Y2M3D") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenPeriod_whenAdd_thenModifiedDate() { | ||||
|         var period = Period.of(1, 2, 3) | ||||
| 
 | ||||
|         var date = LocalDate.of(2018, 6, 25) | ||||
|         var modifiedDate = date.plus(period) | ||||
| 
 | ||||
|         assertThat(modifiedDate).isEqualTo("2019-08-28") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenPeriod_whenSubtracted_thenModifiedDate() { | ||||
|         var period = Period.of(1, 2, 3) | ||||
| 
 | ||||
|         var date = LocalDate.of(2018, 6, 25) | ||||
|         var modifiedDate = date.minus(period) | ||||
| 
 | ||||
|         assertThat(modifiedDate).isEqualTo("2017-04-22") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenTwoDate_whenUsingBetween_thenDiffOfDates() { | ||||
| 
 | ||||
|         var date1 = LocalDate.parse("2018-06-25") | ||||
|         var date2 = LocalDate.parse("2018-12-25") | ||||
| 
 | ||||
|         var period = Period.between(date1, date2) | ||||
| 
 | ||||
|         assertThat(period.toString()).isEqualTo("P6M") | ||||
|     } | ||||
| 
 | ||||
| package com.baeldung.kotlin.dates | ||||
| 
 | ||||
| import org.assertj.core.api.Assertions.assertThat | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.LocalDate | ||||
| import java.time.Period | ||||
| 
 | ||||
| class PeriodDateUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenYMD_thenCreatePeriod() { | ||||
|         var period = Period.of(1, 2, 3) | ||||
| 
 | ||||
|         assertThat(period.toString()).isEqualTo("P1Y2M3D") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenPeriod_whenAdd_thenModifiedDate() { | ||||
|         var period = Period.of(1, 2, 3) | ||||
| 
 | ||||
|         var date = LocalDate.of(2018, 6, 25) | ||||
|         var modifiedDate = date.plus(period) | ||||
| 
 | ||||
|         assertThat(modifiedDate).isEqualTo("2019-08-28") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenPeriod_whenSubtracted_thenModifiedDate() { | ||||
|         var period = Period.of(1, 2, 3) | ||||
| 
 | ||||
|         var date = LocalDate.of(2018, 6, 25) | ||||
|         var modifiedDate = date.minus(period) | ||||
| 
 | ||||
|         assertThat(modifiedDate).isEqualTo("2017-04-22") | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenTwoDate_whenUsingBetween_thenDiffOfDates() { | ||||
| 
 | ||||
|         var date1 = LocalDate.parse("2018-06-25") | ||||
|         var date2 = LocalDate.parse("2018-12-25") | ||||
| 
 | ||||
|         var period = Period.between(date1, date2) | ||||
| 
 | ||||
|         assertThat(period.toString()).isEqualTo("P6M") | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -1,14 +1,12 @@ | ||||
| package com.baeldung.kotlin.datetime | ||||
| 
 | ||||
| import com.baeldung.datetime.UseLocalDateTime | ||||
| import com.baeldung.dates.datetime.UseLocalDateTime | ||||
| import org.junit.Assert.assertEquals | ||||
| import org.junit.Test | ||||
| import java.time.LocalDate | ||||
| import java.time.LocalTime | ||||
| import java.time.Month | ||||
| 
 | ||||
| import org.junit.Test | ||||
| 
 | ||||
| import org.junit.Assert.assertEquals | ||||
| 
 | ||||
| class UseLocalDateTimeUnitTest { | ||||
| 
 | ||||
|     var useLocalDateTime = UseLocalDateTime() | ||||
| @ -1,6 +1,6 @@ | ||||
| package com.baeldung.kotlin.datetime | ||||
| 
 | ||||
| import com.baeldung.datetime.UseLocalDate | ||||
| import com.baeldung.dates.datetime.UseLocalDate | ||||
| import org.junit.Assert | ||||
| import org.junit.Test | ||||
| import java.time.DayOfWeek | ||||
| @ -1,10 +1,9 @@ | ||||
| package com.baeldung.kotlin.datetime | ||||
| 
 | ||||
| import com.baeldung.datetime.UseLocalTime | ||||
| import java.time.LocalTime | ||||
| 
 | ||||
| import com.baeldung.dates.datetime.UseLocalTime | ||||
| import org.junit.Assert | ||||
| import org.junit.Test | ||||
| import java.time.LocalTime | ||||
| 
 | ||||
| class UseLocalTimeUnitTest { | ||||
| 
 | ||||
| @ -1,11 +1,10 @@ | ||||
| package com.baeldung.kotlin.datetime | ||||
| 
 | ||||
| import com.baeldung.datetime.UsePeriod | ||||
| import java.time.LocalDate | ||||
| import java.time.Period | ||||
| 
 | ||||
| import com.baeldung.dates.datetime.UsePeriod | ||||
| import org.junit.Assert | ||||
| import org.junit.Test | ||||
| import java.time.LocalDate | ||||
| import java.time.Period | ||||
| 
 | ||||
| class UsePeriodUnitTest { | ||||
| 
 | ||||
| @ -1,6 +1,6 @@ | ||||
| package com.baeldung.kotlin.datetime | ||||
| 
 | ||||
| import com.baeldung.datetime.UseZonedDateTime | ||||
| import com.baeldung.dates.datetime.UseZonedDateTime | ||||
| import org.junit.Assert | ||||
| import org.junit.Test | ||||
| import java.time.LocalDateTime | ||||
| @ -1,4 +1,4 @@ | ||||
| ## Core Kotlin | ||||
| ## Core Kotlin Lang OOP | ||||
| 
 | ||||
| This module contains articles about Object-Oriented Programming in Kotlin | ||||
| 
 | ||||
| @ -7,4 +7,4 @@ This module contains articles about Object-Oriented Programming in Kotlin | ||||
| - [Generics in Kotlin](https://www.baeldung.com/kotlin-generics) | ||||
| - [Delegated Properties in Kotlin](https://www.baeldung.com/kotlin-delegated-properties) | ||||
| - [Delegation Pattern in Kotlin](https://www.baeldung.com/kotlin-delegation-pattern) | ||||
| - [[<-- Prev]](/core-kotlin-lang-oop) | ||||
| - [[<-- Prev]](/core-kotlin-modules/core-kotlin-lang-oop) | ||||
|  | ||||
| @ -14,4 +14,4 @@ This module contains articles about Object-Oriented Programming in Kotlin | ||||
| - [Guide to Kotlin Interfaces](https://www.baeldung.com/kotlin-interfaces) | ||||
| - [Inline Classes in Kotlin](https://www.baeldung.com/kotlin-inline-classes) | ||||
| - [Static Methods Behavior in Kotlin](https://www.baeldung.com/kotlin-static-methods) | ||||
| - More articles: [[next -->]](/core-kotlin-lang-oop-2) | ||||
| - More articles: [[next -->]](/core-kotlin-modules/core-kotlin-lang-oop-2) | ||||
|  | ||||
							
								
								
									
										16
									
								
								core-kotlin-modules/core-kotlin/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								core-kotlin-modules/core-kotlin/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| ## Core Kotlin | ||||
| 
 | ||||
| This module contains articles about Kotlin core features. | ||||
| 
 | ||||
| ### Relevant articles: | ||||
| - [Introduction to the Kotlin Language](https://www.baeldung.com/kotlin) | ||||
| - [Kotlin Java Interoperability](https://www.baeldung.com/kotlin-java-interoperability) | ||||
| - [Get a Random Number in Kotlin](https://www.baeldung.com/kotlin-random-number) | ||||
| - [Create a Java and Kotlin Project with Maven](https://www.baeldung.com/kotlin-maven-java-project) | ||||
| - [Guide to Sorting in Kotlin](https://www.baeldung.com/kotlin-sort) | ||||
| - [Creational Design Patterns in Kotlin: Builder](https://www.baeldung.com/kotlin-builder-pattern) | ||||
| - [Kotlin Scope Functions](https://www.baeldung.com/kotlin-scope-functions) | ||||
| - [Implementing a Binary Tree in Kotlin](https://www.baeldung.com/kotlin-binary-tree) | ||||
| - [JUnit 5 for Kotlin Developers](https://www.baeldung.com/junit-5-kotlin) | ||||
| - [Converting Kotlin Data Class from JSON using GSON](https://www.baeldung.com/kotlin-json-convert-data-class) | ||||
| - [[More --> ]](/core-kotlin-modules/core-kotlin-2) | ||||
							
								
								
									
										29
									
								
								core-kotlin-modules/core-kotlin/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								core-kotlin-modules/core-kotlin/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| <?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-kotlin</artifactId> | ||||
|     <name>core-kotlin</name> | ||||
|     <packaging>jar</packaging> | ||||
| 
 | ||||
|     <parent> | ||||
|         <groupId>com.baeldung.core-kotlin-modules</groupId> | ||||
|         <artifactId>core-kotlin-modules</artifactId> | ||||
|         <version>1.0.0-SNAPSHOT</version> | ||||
|     </parent> | ||||
| 
 | ||||
|     <dependencies> | ||||
|         <dependency> | ||||
|             <groupId>org.junit.platform</groupId> | ||||
|             <artifactId>junit-platform-runner</artifactId> | ||||
|             <version>${junit.platform.version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
| 
 | ||||
|     <properties> | ||||
|         <junit.platform.version>1.1.1</junit.platform.version> | ||||
|     </properties> | ||||
| 
 | ||||
| </project> | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.java; | ||||
| package com.baeldung.interoperability; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.FileReader; | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.java; | ||||
| package com.baeldung.interoperability; | ||||
| 
 | ||||
| public class Customer { | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.java; | ||||
| package com.baeldung.introduction; | ||||
| 
 | ||||
| public class StringUtils { | ||||
|     public static String toUpperCase(String name) { | ||||
| @ -1,7 +1,6 @@ | ||||
| package com.baeldung.mavenjavakotlin; | ||||
| 
 | ||||
| import com.baeldung.mavenjavakotlin.services.JavaService; | ||||
| import com.baeldung.mavenjavakotlin.services.KotlinService; | ||||
| 
 | ||||
| public class Application { | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.datastructures | ||||
| package com.baeldung.binarytree | ||||
| 
 | ||||
| /** | ||||
|  * Example of how to use the {@link Node} class. | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.datastructures | ||||
| package com.baeldung.binarytree | ||||
| 
 | ||||
| /** | ||||
|  * An ADT for a binary search tree. | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| fun main(args: Array<String>){ | ||||
|     println("hello word") | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| open class Item(val id: String, val name: String = "unknown_name") { | ||||
|     open fun getIdOfItem(): String { | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| import java.util.* | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| import java.util.concurrent.ThreadLocalRandom | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| class MathematicsOperations { | ||||
|     fun addTwoNumbers(a: Int, b: Int): Int { | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.mavenjavakotlin.services | ||||
| package com.baeldung.mavenjavakotlin | ||||
| 
 | ||||
| class KotlinService { | ||||
| 
 | ||||
| @ -1,7 +1,5 @@ | ||||
| package com.baeldung.sorting | ||||
| 
 | ||||
| import kotlin.comparisons.* | ||||
| 
 | ||||
| fun sortMethodUsage() { | ||||
|     val sortedValues = mutableListOf(1, 2, 7, 6, 5, 6) | ||||
|     sortedValues.sort() | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.kotlin; | ||||
| package com.baeldung.introduction; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| @ -1,7 +1,8 @@ | ||||
| package com.baeldung.datastructures | ||||
| package com.baeldung.binarytree | ||||
| 
 | ||||
| import org.junit.After | ||||
| import org.junit.Assert.* | ||||
| import org.junit.Assert.assertEquals | ||||
| import org.junit.Assert.assertNull | ||||
| import org.junit.Before | ||||
| import org.junit.Test | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.kotlin.gson | ||||
| package com.baeldung.gson | ||||
| 
 | ||||
| import com.google.gson.Gson | ||||
| 
 | ||||
| @ -11,7 +11,7 @@ class GsonUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenObject_thenGetJSONString() { | ||||
|         var jsonString = gson.toJson(TestModel(1,"Test")) | ||||
|         var jsonString = gson.toJson(TestModel(1, "Test")) | ||||
|         Assert.assertEquals(jsonString, "{\"id\":1,\"description\":\"Test\"}") | ||||
|     } | ||||
| 
 | ||||
| @ -1,7 +1,5 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.interoperability | ||||
| 
 | ||||
| import com.baeldung.java.ArrayExample | ||||
| import com.baeldung.java.Customer | ||||
| import org.junit.Test | ||||
| import kotlin.test.assertEquals | ||||
| 
 | ||||
| @ -29,7 +27,7 @@ class ArrayTest { | ||||
|         val constructors = instance.constructors | ||||
| 
 | ||||
|         assertEquals(constructors.size, 1) | ||||
|         assertEquals(constructors[0].name, "com.baeldung.java.Customer") | ||||
|         assertEquals(constructors[0].name, "com.baeldung.interoperability.Customer") | ||||
|     } | ||||
| 
 | ||||
|     fun makeReadFile() { | ||||
| @ -1,6 +1,5 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.interoperability | ||||
| 
 | ||||
| import com.baeldung.java.Customer | ||||
| import org.junit.Test | ||||
| import kotlin.test.assertEquals | ||||
| 
 | ||||
| @ -1,9 +1,10 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| import org.junit.Test | ||||
| import kotlin.test.assertNotNull | ||||
| 
 | ||||
| class ItemServiceTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenItemId_whenGetForOptionalItem_shouldMakeActionOnNonNullValue() { | ||||
|         //given | ||||
| @ -1,6 +1,5 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| import com.baeldung.java.StringUtils | ||||
| import org.junit.Test | ||||
| import kotlin.test.assertEquals | ||||
| 
 | ||||
| @ -1,10 +1,11 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| import org.junit.Test | ||||
| import kotlin.test.assertEquals | ||||
| 
 | ||||
| 
 | ||||
| class LambdaTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenListOfNumber_whenDoingOperationsUsingLambda_shouldReturnProperResult() { | ||||
|         //given | ||||
| @ -1,12 +1,12 @@ | ||||
| package com.baeldung.kotlin | ||||
| package com.baeldung.introduction | ||||
| 
 | ||||
| import com.baeldung.kotlin.ListExtension | ||||
| import org.junit.Test | ||||
| import kotlin.test.assertTrue | ||||
| 
 | ||||
| class ListExtensionTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun givenList_whenExecuteExtensionFunctionOnList_shouldReturnRandomElementOfList(){ | ||||
|     fun givenList_whenExecuteExtensionFunctionOnList_shouldReturnRandomElementOfList() { | ||||
|         //given | ||||
|         val elements = listOf("a", "b", "c") | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.kotlin.junit5 | ||||
| package com.baeldung.junit5 | ||||
| 
 | ||||
| class Calculator { | ||||
|     fun add(a: Int, b: Int) = a + b | ||||
| @ -1,9 +1,9 @@ | ||||
| package com.baeldung.kotlin.junit5 | ||||
| package com.baeldung.junit5 | ||||
| 
 | ||||
| import org.junit.jupiter.api.* | ||||
| import org.junit.jupiter.api.function.Executable | ||||
| 
 | ||||
| class CalculatorTest5 { | ||||
| class CalculatorUnitTest { | ||||
|     private val calculator = Calculator() | ||||
| 
 | ||||
|     @Test | ||||
| @ -1,3 +1,3 @@ | ||||
| package com.baeldung.kotlin.junit5 | ||||
| package com.baeldung.junit5 | ||||
| 
 | ||||
| class DivideByZeroException(val numerator: Int) : Exception() | ||||
| @ -1,10 +1,10 @@ | ||||
| package com.baeldung.kotlin.junit5 | ||||
| package com.baeldung.junit5 | ||||
| 
 | ||||
| import org.junit.jupiter.api.Assertions | ||||
| import org.junit.jupiter.api.Disabled | ||||
| import org.junit.jupiter.api.Test | ||||
| 
 | ||||
| class SimpleTest5 { | ||||
| class SimpleUnitTest { | ||||
| 
 | ||||
|     @Test | ||||
|     fun `isEmpty should return true for empty lists`() { | ||||
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