commit
						b50684ab37
					
				| @ -98,7 +98,7 @@ public class SlopeOne { | |||||||
|             for (Item j : InputData.items) { |             for (Item j : InputData.items) { | ||||||
|                 if (e.getValue().containsKey(j)) { |                 if (e.getValue().containsKey(j)) { | ||||||
|                     clean.put(j, e.getValue().get(j)); |                     clean.put(j, e.getValue().get(j)); | ||||||
|                 } else { |                 } else if (!clean.containsKey(j)) { | ||||||
|                     clean.put(j, -1.0); |                     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> |                         </goals> | ||||||
|                         <configuration> |                         <configuration> | ||||||
|                             <classifier>spring-boot</classifier> |                             <classifier>spring-boot</classifier> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                         </configuration> |                         </configuration> | ||||||
|                     </execution> |                     </execution> | ||||||
|                 </executions> |                 </executions> | ||||||
|  | |||||||
| @ -75,7 +75,7 @@ | |||||||
|                         <manifest> |                         <manifest> | ||||||
|                             <addClasspath>true</addClasspath> |                             <addClasspath>true</addClasspath> | ||||||
|                             <classpathPrefix>libs/</classpathPrefix> |                             <classpathPrefix>libs/</classpathPrefix> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                         </manifest> |                         </manifest> | ||||||
|                     </archive> |                     </archive> | ||||||
|                 </configuration> |                 </configuration> | ||||||
| @ -94,7 +94,7 @@ | |||||||
|                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> |                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> | ||||||
|                             <archive> |                             <archive> | ||||||
|                                 <manifest> |                                 <manifest> | ||||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                                 </manifest> |                                 </manifest> | ||||||
|                             </archive> |                             </archive> | ||||||
|                             <descriptorRefs> |                             <descriptorRefs> | ||||||
| @ -118,7 +118,7 @@ | |||||||
|                             <shadedArtifactAttached>true</shadedArtifactAttached> |                             <shadedArtifactAttached>true</shadedArtifactAttached> | ||||||
|                             <transformers> |                             <transformers> | ||||||
|                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> |                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> | ||||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                                 </transformer> |                                 </transformer> | ||||||
|                             </transformers> |                             </transformers> | ||||||
|                         </configuration> |                         </configuration> | ||||||
| @ -133,7 +133,7 @@ | |||||||
|                 <executions> |                 <executions> | ||||||
|                     <execution> |                     <execution> | ||||||
|                         <configuration> |                         <configuration> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                             <attachToBuild>true</attachToBuild> |                             <attachToBuild>true</attachToBuild> | ||||||
|                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> |                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> | ||||||
|                         </configuration> |                         </configuration> | ||||||
| @ -155,7 +155,7 @@ | |||||||
|                         </goals> |                         </goals> | ||||||
|                         <configuration> |                         <configuration> | ||||||
|                             <classifier>spring-boot</classifier> |                             <classifier>spring-boot</classifier> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                         </configuration> |                         </configuration> | ||||||
|                     </execution> |                     </execution> | ||||||
|                 </executions> |                 </executions> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.baeldung.java.collections; | package com.baeldung.collections; | ||||||
| 
 | 
 | ||||||
| import com.google.common.collect.Sets; | import com.google.common.collect.Sets; | ||||||
| import org.junit.Before; | import org.junit.Before; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.baeldung.java.collections; | package com.baeldung.collections; | ||||||
| 
 | 
 | ||||||
| import com.google.common.collect.ImmutableList; | import com.google.common.collect.ImmutableList; | ||||||
| import org.apache.commons.collections4.ListUtils; | import org.apache.commons.collections4.ListUtils; | ||||||
| @ -3,13 +3,13 @@ | |||||||
| This module contains articles about the Java List collection | This module contains articles about the Java List collection | ||||||
| 
 | 
 | ||||||
| ### Relevant Articles:  | ### 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) | - [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) | - [A Guide to the Java LinkedList](https://www.baeldung.com/java-linkedlist) | ||||||
| - [Java List UnsupportedOperationException](http://www.baeldung.com/java-list-unsupported-operation-exception) | - [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) | - [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) | - [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) | - [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) | - [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) | - [[<-- 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; | 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.Assert; | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.baeldung.java.lists; | package com.baeldung.java.list; | ||||||
| 
 | 
 | ||||||
| import org.junit.Test; | 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.hamcrest.Matchers.hasSize; | ||||||
| import static org.junit.Assert.assertThat; | 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 com.google.common.collect.Lists; | ||||||
| import org.junit.Test; | 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 |     @Test | ||||||
|     public void givenAbortPolicy_WhenSaturated_ThenShouldThrowRejectedExecutionException() { |     public void givenAbortPolicy_WhenSaturated_ThenShouldThrowRejectedExecutionException() { | ||||||
|         executor = new ThreadPoolExecutor(1, 1, 0, MILLISECONDS, new SynchronousQueue<>(), new AbortPolicy()); |         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); |         assertThatThrownBy(() -> executor.execute(() -> System.out.println("Will be rejected"))).isInstanceOf(RejectedExecutionException.class); | ||||||
|     } |     } | ||||||
| @ -42,13 +42,13 @@ public class SaturationPolicyUnitTest { | |||||||
|     @Test |     @Test | ||||||
|     public void givenCallerRunsPolicy_WhenSaturated_ThenTheCallerThreadRunsTheTask() { |     public void givenCallerRunsPolicy_WhenSaturated_ThenTheCallerThreadRunsTheTask() { | ||||||
|         executor = new ThreadPoolExecutor(1, 1, 0, MILLISECONDS, new SynchronousQueue<>(), new CallerRunsPolicy()); |         executor = new ThreadPoolExecutor(1, 1, 0, MILLISECONDS, new SynchronousQueue<>(), new CallerRunsPolicy()); | ||||||
|         executor.execute(() -> waitFor(100)); |         executor.execute(() -> waitFor(250)); | ||||||
| 
 | 
 | ||||||
|         long startTime = System.nanoTime(); |         long startTime = System.currentTimeMillis(); | ||||||
|         executor.execute(() -> waitFor(100)); |         executor.execute(() -> waitFor(500)); | ||||||
|         double blockedDuration = (System.nanoTime() - startTime) / 1_000_000.0; |         long blockedDuration = System.currentTimeMillis() - startTime; | ||||||
| 
 | 
 | ||||||
|         assertThat(blockedDuration).isGreaterThanOrEqualTo(100); |         assertThat(blockedDuration).isGreaterThanOrEqualTo(500); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @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; | import org.junit.Test; | ||||||
| 
 | 
 | ||||||
| @ -13,12 +13,24 @@ | |||||||
| 		<version>0.0.1-SNAPSHOT</version> | 		<version>0.0.1-SNAPSHOT</version> | ||||||
| 		<relativePath>../../parent-java</relativePath> | 		<relativePath>../../parent-java</relativePath> | ||||||
| 	</parent> | 	</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> | 	<description> </description> | ||||||
| 	<url>http://maven.apache.org</url> | 	<url>http://maven.apache.org</url> | ||||||
| 
 | 
 | ||||||
| 	<properties> | 	<properties> | ||||||
| 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||||
|  | 		<!-- testing --> | ||||||
|  | 		<assertj-core.version>3.10.0</assertj-core.version> | ||||||
| 	</properties> | 	</properties> | ||||||
| 
 | 
 | ||||||
| </project> | </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> |                         <manifest> | ||||||
|                             <addClasspath>true</addClasspath> |                             <addClasspath>true</addClasspath> | ||||||
|                             <classpathPrefix>libs/</classpathPrefix> |                             <classpathPrefix>libs/</classpathPrefix> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                         </manifest> |                         </manifest> | ||||||
|                     </archive> |                     </archive> | ||||||
|                 </configuration> |                 </configuration> | ||||||
| @ -118,7 +118,7 @@ | |||||||
|                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> |                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> | ||||||
|                             <archive> |                             <archive> | ||||||
|                                 <manifest> |                                 <manifest> | ||||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                                 </manifest> |                                 </manifest> | ||||||
|                             </archive> |                             </archive> | ||||||
|                             <descriptorRefs> |                             <descriptorRefs> | ||||||
| @ -142,7 +142,7 @@ | |||||||
|                             <shadedArtifactAttached>true</shadedArtifactAttached> |                             <shadedArtifactAttached>true</shadedArtifactAttached> | ||||||
|                             <transformers> |                             <transformers> | ||||||
|                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> |                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> | ||||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                                 </transformer> |                                 </transformer> | ||||||
|                             </transformers> |                             </transformers> | ||||||
|                         </configuration> |                         </configuration> | ||||||
| @ -157,7 +157,7 @@ | |||||||
|                 <executions> |                 <executions> | ||||||
|                     <execution> |                     <execution> | ||||||
|                         <configuration> |                         <configuration> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                             <attachToBuild>true</attachToBuild> |                             <attachToBuild>true</attachToBuild> | ||||||
|                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> |                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> | ||||||
|                         </configuration> |                         </configuration> | ||||||
| @ -179,7 +179,7 @@ | |||||||
|                         </goals> |                         </goals> | ||||||
|                         <configuration> |                         <configuration> | ||||||
|                             <classifier>spring-boot</classifier> |                             <classifier>spring-boot</classifier> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                         </configuration> |                         </configuration> | ||||||
|                     </execution> |                     </execution> | ||||||
|                 </executions> |                 </executions> | ||||||
|  | |||||||
| @ -49,7 +49,7 @@ | |||||||
|                         <manifest> |                         <manifest> | ||||||
|                             <addClasspath>true</addClasspath> |                             <addClasspath>true</addClasspath> | ||||||
|                             <classpathPrefix>libs/</classpathPrefix> |                             <classpathPrefix>libs/</classpathPrefix> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                         </manifest> |                         </manifest> | ||||||
|                     </archive> |                     </archive> | ||||||
|                 </configuration> |                 </configuration> | ||||||
|  | |||||||
| @ -99,7 +99,7 @@ | |||||||
|                         <manifest> |                         <manifest> | ||||||
|                             <addClasspath>true</addClasspath> |                             <addClasspath>true</addClasspath> | ||||||
|                             <classpathPrefix>libs/</classpathPrefix> |                             <classpathPrefix>libs/</classpathPrefix> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                         </manifest> |                         </manifest> | ||||||
|                     </archive> |                     </archive> | ||||||
|                 </configuration> |                 </configuration> | ||||||
| @ -118,7 +118,7 @@ | |||||||
|                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> |                             <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory> | ||||||
|                             <archive> |                             <archive> | ||||||
|                                 <manifest> |                                 <manifest> | ||||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                                 </manifest> |                                 </manifest> | ||||||
|                             </archive> |                             </archive> | ||||||
|                             <descriptorRefs> |                             <descriptorRefs> | ||||||
| @ -142,7 +142,7 @@ | |||||||
|                             <shadedArtifactAttached>true</shadedArtifactAttached> |                             <shadedArtifactAttached>true</shadedArtifactAttached> | ||||||
|                             <transformers> |                             <transformers> | ||||||
|                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> |                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> | ||||||
|                                     <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                                     <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                                 </transformer> |                                 </transformer> | ||||||
|                             </transformers> |                             </transformers> | ||||||
|                         </configuration> |                         </configuration> | ||||||
| @ -157,7 +157,7 @@ | |||||||
|                 <executions> |                 <executions> | ||||||
|                     <execution> |                     <execution> | ||||||
|                         <configuration> |                         <configuration> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                             <attachToBuild>true</attachToBuild> |                             <attachToBuild>true</attachToBuild> | ||||||
|                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> |                             <filename>${project.build.finalName}-onejar.${project.packaging}</filename> | ||||||
|                         </configuration> |                         </configuration> | ||||||
| @ -179,7 +179,7 @@ | |||||||
|                         </goals> |                         </goals> | ||||||
|                         <configuration> |                         <configuration> | ||||||
|                             <classifier>spring-boot</classifier> |                             <classifier>spring-boot</classifier> | ||||||
|                             <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> |                             <mainClass>com.baeldung.executable.ExecutableMavenJar</mainClass> | ||||||
|                         </configuration> |                         </configuration> | ||||||
|                     </execution> |                     </execution> | ||||||
|                 </executions> |                 </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.junit.Test; | ||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.baeldung.java.arrays; | package com.baeldung.arrays; | ||||||
| 
 | 
 | ||||||
| import java.util.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.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.baeldung.java.sandbox; | package com.baeldung.sandbox; | ||||||
| 
 | 
 | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| import org.slf4j.Logger; | 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.Duration | ||||||
| import java.time.LocalTime | import java.time.LocalTime | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.datetime | package com.baeldung.dates.datetime | ||||||
| 
 | 
 | ||||||
| import java.time.DayOfWeek | import java.time.DayOfWeek | ||||||
| import java.time.LocalDate | import java.time.LocalDate | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.datetime | package com.baeldung.dates.datetime | ||||||
| 
 | 
 | ||||||
| import java.time.LocalDateTime | 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.LocalTime | ||||||
| import java.time.temporal.ChronoUnit | 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.LocalDate | ||||||
| import java.time.Period | import java.time.Period | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.datetime | package com.baeldung.dates.datetime | ||||||
| 
 | 
 | ||||||
| import java.time.LocalDateTime | import java.time.LocalDateTime | ||||||
| import java.time.ZoneId | import java.time.ZoneId | ||||||
| @ -1,34 +1,34 @@ | |||||||
| package com.baeldung.kotlin.dates | package com.baeldung.kotlin.dates | ||||||
| 
 | 
 | ||||||
| import org.assertj.core.api.Assertions.assertThat | import org.assertj.core.api.Assertions.assertThat | ||||||
| import org.junit.jupiter.api.Test | import org.junit.jupiter.api.Test | ||||||
| import java.time.LocalDate | import java.time.LocalDate | ||||||
| import java.time.format.DateTimeFormatter | import java.time.format.DateTimeFormatter | ||||||
| 
 | 
 | ||||||
| class CreateDateUnitTest { | class CreateDateUnitTest { | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenString_whenDefaultFormat_thenCreated() { |     fun givenString_whenDefaultFormat_thenCreated() { | ||||||
| 
 | 
 | ||||||
|         var date = LocalDate.parse("2018-12-31") |         var date = LocalDate.parse("2018-12-31") | ||||||
| 
 | 
 | ||||||
|         assertThat(date).isEqualTo("2018-12-31") |         assertThat(date).isEqualTo("2018-12-31") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenString_whenCustomFormat_thenCreated() { |     fun givenString_whenCustomFormat_thenCreated() { | ||||||
| 
 | 
 | ||||||
|         var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") |         var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") | ||||||
|         var date = LocalDate.parse("31-12-2018", formatter) |         var date = LocalDate.parse("31-12-2018", formatter) | ||||||
| 
 | 
 | ||||||
|         assertThat(date).isEqualTo("2018-12-31") |         assertThat(date).isEqualTo("2018-12-31") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenYMD_whenUsingOf_thenCreated() { |     fun givenYMD_whenUsingOf_thenCreated() { | ||||||
|         var date = LocalDate.of(2018, 12, 31) |         var date = LocalDate.of(2018, 12, 31) | ||||||
| 
 | 
 | ||||||
|         assertThat(date).isEqualTo("2018-12-31") |         assertThat(date).isEqualTo("2018-12-31") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,29 +1,29 @@ | |||||||
| package com.baeldung.kotlin.dates | package com.baeldung.kotlin.dates | ||||||
| 
 | 
 | ||||||
| import org.assertj.core.api.Assertions.assertThat | import org.assertj.core.api.Assertions.assertThat | ||||||
| import org.junit.jupiter.api.Test | import org.junit.jupiter.api.Test | ||||||
| import java.time.DayOfWeek | import java.time.DayOfWeek | ||||||
| import java.time.LocalDate | import java.time.LocalDate | ||||||
| import java.time.Month | import java.time.Month | ||||||
| 
 | 
 | ||||||
| class ExtractDateUnitTest { | class ExtractDateUnitTest { | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenDate_thenExtractedYMD() { |     fun givenDate_thenExtractedYMD() { | ||||||
|         var date = LocalDate.parse("2018-12-31") |         var date = LocalDate.parse("2018-12-31") | ||||||
| 
 | 
 | ||||||
|         assertThat(date.year).isEqualTo(2018) |         assertThat(date.year).isEqualTo(2018) | ||||||
|         assertThat(date.month).isEqualTo(Month.DECEMBER) |         assertThat(date.month).isEqualTo(Month.DECEMBER) | ||||||
|         assertThat(date.dayOfMonth).isEqualTo(31) |         assertThat(date.dayOfMonth).isEqualTo(31) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenDate_thenExtractedEraDowDoy() { |     fun givenDate_thenExtractedEraDowDoy() { | ||||||
|         var date = LocalDate.parse("2018-12-31") |         var date = LocalDate.parse("2018-12-31") | ||||||
| 
 | 
 | ||||||
|         assertThat(date.era.toString()).isEqualTo("CE") |         assertThat(date.era.toString()).isEqualTo("CE") | ||||||
|         assertThat(date.dayOfWeek).isEqualTo(DayOfWeek.MONDAY) |         assertThat(date.dayOfWeek).isEqualTo(DayOfWeek.MONDAY) | ||||||
|         assertThat(date.dayOfYear).isEqualTo(365) |         assertThat(date.dayOfYear).isEqualTo(365) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,29 +1,29 @@ | |||||||
| package com.baeldung.kotlin.dates | package com.baeldung.kotlin.dates | ||||||
| 
 | 
 | ||||||
| import org.assertj.core.api.Assertions.assertThat | import org.assertj.core.api.Assertions.assertThat | ||||||
| import org.junit.jupiter.api.Test | import org.junit.jupiter.api.Test | ||||||
| import java.time.LocalDate | import java.time.LocalDate | ||||||
| import java.time.format.DateTimeFormatter | import java.time.format.DateTimeFormatter | ||||||
| 
 | 
 | ||||||
| class FormatDateUnitTest { | class FormatDateUnitTest { | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenDate_whenDefaultFormat_thenFormattedString() { |     fun givenDate_whenDefaultFormat_thenFormattedString() { | ||||||
| 
 | 
 | ||||||
|         var date = LocalDate.parse("2018-12-31") |         var date = LocalDate.parse("2018-12-31") | ||||||
| 
 | 
 | ||||||
|         assertThat(date.toString()).isEqualTo("2018-12-31") |         assertThat(date.toString()).isEqualTo("2018-12-31") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenDate_whenCustomFormat_thenFormattedString() { |     fun givenDate_whenCustomFormat_thenFormattedString() { | ||||||
| 
 | 
 | ||||||
|         var date = LocalDate.parse("2018-12-31") |         var date = LocalDate.parse("2018-12-31") | ||||||
| 
 | 
 | ||||||
|         var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy") |         var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy") | ||||||
|         var formattedDate = date.format(formatter) |         var formattedDate = date.format(formatter) | ||||||
| 
 | 
 | ||||||
|         assertThat(formattedDate).isEqualTo("31-December-2018") |         assertThat(formattedDate).isEqualTo("31-December-2018") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,48 +1,48 @@ | |||||||
| package com.baeldung.kotlin.dates | package com.baeldung.kotlin.dates | ||||||
| 
 | 
 | ||||||
| import org.assertj.core.api.Assertions.assertThat | import org.assertj.core.api.Assertions.assertThat | ||||||
| import org.junit.jupiter.api.Test | import org.junit.jupiter.api.Test | ||||||
| import java.time.LocalDate | import java.time.LocalDate | ||||||
| import java.time.Period | import java.time.Period | ||||||
| 
 | 
 | ||||||
| class PeriodDateUnitTest { | class PeriodDateUnitTest { | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenYMD_thenCreatePeriod() { |     fun givenYMD_thenCreatePeriod() { | ||||||
|         var period = Period.of(1, 2, 3) |         var period = Period.of(1, 2, 3) | ||||||
| 
 | 
 | ||||||
|         assertThat(period.toString()).isEqualTo("P1Y2M3D") |         assertThat(period.toString()).isEqualTo("P1Y2M3D") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenPeriod_whenAdd_thenModifiedDate() { |     fun givenPeriod_whenAdd_thenModifiedDate() { | ||||||
|         var period = Period.of(1, 2, 3) |         var period = Period.of(1, 2, 3) | ||||||
| 
 | 
 | ||||||
|         var date = LocalDate.of(2018, 6, 25) |         var date = LocalDate.of(2018, 6, 25) | ||||||
|         var modifiedDate = date.plus(period) |         var modifiedDate = date.plus(period) | ||||||
| 
 | 
 | ||||||
|         assertThat(modifiedDate).isEqualTo("2019-08-28") |         assertThat(modifiedDate).isEqualTo("2019-08-28") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenPeriod_whenSubtracted_thenModifiedDate() { |     fun givenPeriod_whenSubtracted_thenModifiedDate() { | ||||||
|         var period = Period.of(1, 2, 3) |         var period = Period.of(1, 2, 3) | ||||||
| 
 | 
 | ||||||
|         var date = LocalDate.of(2018, 6, 25) |         var date = LocalDate.of(2018, 6, 25) | ||||||
|         var modifiedDate = date.minus(period) |         var modifiedDate = date.minus(period) | ||||||
| 
 | 
 | ||||||
|         assertThat(modifiedDate).isEqualTo("2017-04-22") |         assertThat(modifiedDate).isEqualTo("2017-04-22") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenTwoDate_whenUsingBetween_thenDiffOfDates() { |     fun givenTwoDate_whenUsingBetween_thenDiffOfDates() { | ||||||
| 
 | 
 | ||||||
|         var date1 = LocalDate.parse("2018-06-25") |         var date1 = LocalDate.parse("2018-06-25") | ||||||
|         var date2 = LocalDate.parse("2018-12-25") |         var date2 = LocalDate.parse("2018-12-25") | ||||||
| 
 | 
 | ||||||
|         var period = Period.between(date1, date2) |         var period = Period.between(date1, date2) | ||||||
| 
 | 
 | ||||||
|         assertThat(period.toString()).isEqualTo("P6M") |         assertThat(period.toString()).isEqualTo("P6M") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,14 +1,12 @@ | |||||||
| package com.baeldung.kotlin.datetime | 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.LocalDate | ||||||
| import java.time.LocalTime | import java.time.LocalTime | ||||||
| import java.time.Month | import java.time.Month | ||||||
| 
 | 
 | ||||||
| import org.junit.Test |  | ||||||
| 
 |  | ||||||
| import org.junit.Assert.assertEquals |  | ||||||
| 
 |  | ||||||
| class UseLocalDateTimeUnitTest { | class UseLocalDateTimeUnitTest { | ||||||
| 
 | 
 | ||||||
|     var useLocalDateTime = UseLocalDateTime() |     var useLocalDateTime = UseLocalDateTime() | ||||||
| @ -1,6 +1,6 @@ | |||||||
| package com.baeldung.kotlin.datetime | package com.baeldung.kotlin.datetime | ||||||
| 
 | 
 | ||||||
| import com.baeldung.datetime.UseLocalDate | import com.baeldung.dates.datetime.UseLocalDate | ||||||
| import org.junit.Assert | import org.junit.Assert | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
| import java.time.DayOfWeek | import java.time.DayOfWeek | ||||||
| @ -1,10 +1,9 @@ | |||||||
| package com.baeldung.kotlin.datetime | package com.baeldung.kotlin.datetime | ||||||
| 
 | 
 | ||||||
| import com.baeldung.datetime.UseLocalTime | import com.baeldung.dates.datetime.UseLocalTime | ||||||
| import java.time.LocalTime |  | ||||||
| 
 |  | ||||||
| import org.junit.Assert | import org.junit.Assert | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
|  | import java.time.LocalTime | ||||||
| 
 | 
 | ||||||
| class UseLocalTimeUnitTest { | class UseLocalTimeUnitTest { | ||||||
| 
 | 
 | ||||||
| @ -1,11 +1,10 @@ | |||||||
| package com.baeldung.kotlin.datetime | package com.baeldung.kotlin.datetime | ||||||
| 
 | 
 | ||||||
| import com.baeldung.datetime.UsePeriod | import com.baeldung.dates.datetime.UsePeriod | ||||||
| import java.time.LocalDate |  | ||||||
| import java.time.Period |  | ||||||
| 
 |  | ||||||
| import org.junit.Assert | import org.junit.Assert | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
|  | import java.time.LocalDate | ||||||
|  | import java.time.Period | ||||||
| 
 | 
 | ||||||
| class UsePeriodUnitTest { | class UsePeriodUnitTest { | ||||||
| 
 | 
 | ||||||
| @ -1,6 +1,6 @@ | |||||||
| package com.baeldung.kotlin.datetime | package com.baeldung.kotlin.datetime | ||||||
| 
 | 
 | ||||||
| import com.baeldung.datetime.UseZonedDateTime | import com.baeldung.dates.datetime.UseZonedDateTime | ||||||
| import org.junit.Assert | import org.junit.Assert | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
| import java.time.LocalDateTime | import java.time.LocalDateTime | ||||||
| @ -1,4 +1,4 @@ | |||||||
| ## Core Kotlin | ## Core Kotlin Lang OOP | ||||||
| 
 | 
 | ||||||
| This module contains articles about Object-Oriented Programming in Kotlin | 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) | - [Generics in Kotlin](https://www.baeldung.com/kotlin-generics) | ||||||
| - [Delegated Properties in Kotlin](https://www.baeldung.com/kotlin-delegated-properties) | - [Delegated Properties in Kotlin](https://www.baeldung.com/kotlin-delegated-properties) | ||||||
| - [Delegation Pattern in Kotlin](https://www.baeldung.com/kotlin-delegation-pattern) | - [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) | - [Guide to Kotlin Interfaces](https://www.baeldung.com/kotlin-interfaces) | ||||||
| - [Inline Classes in Kotlin](https://www.baeldung.com/kotlin-inline-classes) | - [Inline Classes in Kotlin](https://www.baeldung.com/kotlin-inline-classes) | ||||||
| - [Static Methods Behavior in Kotlin](https://www.baeldung.com/kotlin-static-methods) | - [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.File; | ||||||
| import java.io.FileReader; | import java.io.FileReader; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.java; | package com.baeldung.interoperability; | ||||||
| 
 | 
 | ||||||
| public class Customer { | public class Customer { | ||||||
| 
 | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.java; | package com.baeldung.introduction; | ||||||
| 
 | 
 | ||||||
| public class StringUtils { | public class StringUtils { | ||||||
|     public static String toUpperCase(String name) { |     public static String toUpperCase(String name) { | ||||||
| @ -1,7 +1,6 @@ | |||||||
| package com.baeldung.mavenjavakotlin; | package com.baeldung.mavenjavakotlin; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.mavenjavakotlin.services.JavaService; | import com.baeldung.mavenjavakotlin.services.JavaService; | ||||||
| import com.baeldung.mavenjavakotlin.services.KotlinService; |  | ||||||
| 
 | 
 | ||||||
| public class Application { | public class Application { | ||||||
| 
 | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.datastructures | package com.baeldung.binarytree | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Example of how to use the {@link Node} class. |  * 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. |  * An ADT for a binary search tree. | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.introduction | ||||||
| 
 | 
 | ||||||
| fun main(args: Array<String>){ | fun main(args: Array<String>){ | ||||||
|     println("hello word") |     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 class Item(val id: String, val name: String = "unknown_name") { | ||||||
|     open fun getIdOfItem(): String { |     open fun getIdOfItem(): String { | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.introduction | ||||||
| 
 | 
 | ||||||
| import java.util.* | import java.util.* | ||||||
| 
 | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.introduction | ||||||
| 
 | 
 | ||||||
| import java.util.concurrent.ThreadLocalRandom | import java.util.concurrent.ThreadLocalRandom | ||||||
| 
 | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.introduction | ||||||
| 
 | 
 | ||||||
| class MathematicsOperations { | class MathematicsOperations { | ||||||
|     fun addTwoNumbers(a: Int, b: Int): Int { |     fun addTwoNumbers(a: Int, b: Int): Int { | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.mavenjavakotlin.services | package com.baeldung.mavenjavakotlin | ||||||
| 
 | 
 | ||||||
| class KotlinService { | class KotlinService { | ||||||
| 
 | 
 | ||||||
| @ -1,7 +1,5 @@ | |||||||
| package com.baeldung.sorting | package com.baeldung.sorting | ||||||
| 
 | 
 | ||||||
| import kotlin.comparisons.* |  | ||||||
| 
 |  | ||||||
| fun sortMethodUsage() { | fun sortMethodUsage() { | ||||||
|     val sortedValues = mutableListOf(1, 2, 7, 6, 5, 6) |     val sortedValues = mutableListOf(1, 2, 7, 6, 5, 6) | ||||||
|     sortedValues.sort() |     sortedValues.sort() | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.kotlin; | package com.baeldung.introduction; | ||||||
| 
 | 
 | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| 
 | 
 | ||||||
| @ -1,7 +1,8 @@ | |||||||
| package com.baeldung.datastructures | package com.baeldung.binarytree | ||||||
| 
 | 
 | ||||||
| import org.junit.After | 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.Before | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
| 
 | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.kotlin.gson | package com.baeldung.gson | ||||||
| 
 | 
 | ||||||
| import com.google.gson.Gson | import com.google.gson.Gson | ||||||
| 
 | 
 | ||||||
| @ -11,7 +11,7 @@ class GsonUnitTest { | |||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenObject_thenGetJSONString() { |     fun givenObject_thenGetJSONString() { | ||||||
|         var jsonString = gson.toJson(TestModel(1,"Test")) |         var jsonString = gson.toJson(TestModel(1, "Test")) | ||||||
|         Assert.assertEquals(jsonString, "{\"id\":1,\"description\":\"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 org.junit.Test | ||||||
| import kotlin.test.assertEquals | import kotlin.test.assertEquals | ||||||
| 
 | 
 | ||||||
| @ -29,7 +27,7 @@ class ArrayTest { | |||||||
|         val constructors = instance.constructors |         val constructors = instance.constructors | ||||||
| 
 | 
 | ||||||
|         assertEquals(constructors.size, 1) |         assertEquals(constructors.size, 1) | ||||||
|         assertEquals(constructors[0].name, "com.baeldung.java.Customer") |         assertEquals(constructors[0].name, "com.baeldung.interoperability.Customer") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fun makeReadFile() { |     fun makeReadFile() { | ||||||
| @ -1,6 +1,5 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.interoperability | ||||||
| 
 | 
 | ||||||
| import com.baeldung.java.Customer |  | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
| import kotlin.test.assertEquals | import kotlin.test.assertEquals | ||||||
| 
 | 
 | ||||||
| @ -1,9 +1,10 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.introduction | ||||||
| 
 | 
 | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
| import kotlin.test.assertNotNull | import kotlin.test.assertNotNull | ||||||
| 
 | 
 | ||||||
| class ItemServiceTest { | class ItemServiceTest { | ||||||
|  | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenItemId_whenGetForOptionalItem_shouldMakeActionOnNonNullValue() { |     fun givenItemId_whenGetForOptionalItem_shouldMakeActionOnNonNullValue() { | ||||||
|         //given |         //given | ||||||
| @ -1,6 +1,5 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.introduction | ||||||
| 
 | 
 | ||||||
| import com.baeldung.java.StringUtils |  | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
| import kotlin.test.assertEquals | import kotlin.test.assertEquals | ||||||
| 
 | 
 | ||||||
| @ -1,10 +1,11 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.introduction | ||||||
| 
 | 
 | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
| import kotlin.test.assertEquals | import kotlin.test.assertEquals | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class LambdaTest { | class LambdaTest { | ||||||
|  | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenListOfNumber_whenDoingOperationsUsingLambda_shouldReturnProperResult() { |     fun givenListOfNumber_whenDoingOperationsUsingLambda_shouldReturnProperResult() { | ||||||
|         //given |         //given | ||||||
| @ -1,12 +1,12 @@ | |||||||
| package com.baeldung.kotlin | package com.baeldung.introduction | ||||||
| 
 | 
 | ||||||
| import com.baeldung.kotlin.ListExtension |  | ||||||
| import org.junit.Test | import org.junit.Test | ||||||
| import kotlin.test.assertTrue | import kotlin.test.assertTrue | ||||||
| 
 | 
 | ||||||
| class ListExtensionTest { | class ListExtensionTest { | ||||||
|  | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun givenList_whenExecuteExtensionFunctionOnList_shouldReturnRandomElementOfList(){ |     fun givenList_whenExecuteExtensionFunctionOnList_shouldReturnRandomElementOfList() { | ||||||
|         //given |         //given | ||||||
|         val elements = listOf("a", "b", "c") |         val elements = listOf("a", "b", "c") | ||||||
| 
 | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.kotlin.junit5 | package com.baeldung.junit5 | ||||||
| 
 | 
 | ||||||
| class Calculator { | class Calculator { | ||||||
|     fun add(a: Int, b: Int) = a + b |     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.* | ||||||
| import org.junit.jupiter.api.function.Executable | import org.junit.jupiter.api.function.Executable | ||||||
| 
 | 
 | ||||||
| class CalculatorTest5 { | class CalculatorUnitTest { | ||||||
|     private val calculator = Calculator() |     private val calculator = Calculator() | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
| @ -1,3 +1,3 @@ | |||||||
| package com.baeldung.kotlin.junit5 | package com.baeldung.junit5 | ||||||
| 
 | 
 | ||||||
| class DivideByZeroException(val numerator: Int) : Exception() | 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.Assertions | ||||||
| import org.junit.jupiter.api.Disabled | import org.junit.jupiter.api.Disabled | ||||||
| import org.junit.jupiter.api.Test | import org.junit.jupiter.api.Test | ||||||
| 
 | 
 | ||||||
| class SimpleTest5 { | class SimpleUnitTest { | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     fun `isEmpty should return true for empty lists`() { |     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