Merge branch 'master' into BAEL-2313-String-to-byte-array
This commit is contained in:
commit
46c8f48d3c
@ -4,7 +4,7 @@ before_install:
|
|||||||
- echo "MAVEN_OPTS='-Xmx2048M -Xss128M -XX:+CMSClassUnloadingEnabled -XX:+UseG1GC -XX:-UseGCOverheadLimit'" > ~/.mavenrc
|
- echo "MAVEN_OPTS='-Xmx2048M -Xss128M -XX:+CMSClassUnloadingEnabled -XX:+UseG1GC -XX:-UseGCOverheadLimit'" > ~/.mavenrc
|
||||||
|
|
||||||
install: skip
|
install: skip
|
||||||
script: travis_wait 60 mvn -q install -Pdefault-first,default-second
|
script: travis_wait 60 mvn -q install -Pdefault-first,default-second -Dgib.enabled=true
|
||||||
|
|
||||||
sudo: required
|
sudo: required
|
||||||
|
|
||||||
|
@ -28,14 +28,14 @@ public class Log {
|
|||||||
System.out.println("Had " + count + " commits overall on current branch");
|
System.out.println("Had " + count + " commits overall on current branch");
|
||||||
|
|
||||||
logs = git.log()
|
logs = git.log()
|
||||||
.add(repository.resolve("remotes/origin/testbranch"))
|
.add(repository.resolve(git.getRepository().getFullBranch()))
|
||||||
.call();
|
.call();
|
||||||
count = 0;
|
count = 0;
|
||||||
for (RevCommit rev : logs) {
|
for (RevCommit rev : logs) {
|
||||||
System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
|
System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
System.out.println("Had " + count + " commits overall on test-branch");
|
System.out.println("Had " + count + " commits overall on "+git.getRepository().getFullBranch());
|
||||||
|
|
||||||
logs = git.log()
|
logs = git.log()
|
||||||
.all()
|
.all()
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
package com.baeldung.jgit;
|
||||||
|
|
||||||
import com.baeldung.jgit.helper.Helper;
|
import com.baeldung.jgit.helper.Helper;
|
||||||
import org.eclipse.jgit.lib.ObjectLoader;
|
import org.eclipse.jgit.lib.ObjectLoader;
|
||||||
import org.eclipse.jgit.lib.ObjectReader;
|
import org.eclipse.jgit.lib.ObjectReader;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>algorithms-genetic</artifactId>
|
<artifactId>algorithms-genetic</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>algorithms-genetic</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
@ -61,4 +61,5 @@
|
|||||||
<commons-codec.version>1.11</commons-codec.version>
|
<commons-codec.version>1.11</commons-codec.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>algorithms-miscellaneous-1</artifactId>
|
<artifactId>algorithms-miscellaneous-1</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>algorithms-miscellaneous-1</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
@ -17,6 +17,11 @@
|
|||||||
<artifactId>commons-math3</artifactId>
|
<artifactId>commons-math3</artifactId>
|
||||||
<version>${commons-math3.version}</version>
|
<version>${commons-math3.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.guava</groupId>
|
||||||
|
<artifactId>guava</artifactId>
|
||||||
|
<version>${guava.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-codec</groupId>
|
<groupId>commons-codec</groupId>
|
||||||
<artifactId>commons-codec</artifactId>
|
<artifactId>commons-codec</artifactId>
|
||||||
@ -73,6 +78,7 @@
|
|||||||
<commons-math3.version>3.6.1</commons-math3.version>
|
<commons-math3.version>3.6.1</commons-math3.version>
|
||||||
<org.assertj.core.version>3.9.0</org.assertj.core.version>
|
<org.assertj.core.version>3.9.0</org.assertj.core.version>
|
||||||
<commons-codec.version>1.11</commons-codec.version>
|
<commons-codec.version>1.11</commons-codec.version>
|
||||||
|
<guava.version>25.1-jre</guava.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -0,0 +1,63 @@
|
|||||||
|
package com.baeldung.algorithms.factorial;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
|
import java.util.stream.LongStream;
|
||||||
|
|
||||||
|
import org.apache.commons.math3.util.CombinatoricsUtils;
|
||||||
|
|
||||||
|
import com.google.common.math.BigIntegerMath;
|
||||||
|
|
||||||
|
public class Factorial {
|
||||||
|
|
||||||
|
public long factorialUsingForLoop(int n) {
|
||||||
|
long fact = 1;
|
||||||
|
for (int i = 2; i <= n; i++) {
|
||||||
|
fact = fact * i;
|
||||||
|
}
|
||||||
|
return fact;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long factorialUsingStreams(int n) {
|
||||||
|
return LongStream.rangeClosed(1, n)
|
||||||
|
.reduce(1, (long x, long y) -> x * y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long factorialUsingRecursion(int n) {
|
||||||
|
if (n <= 2) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
return n * factorialUsingRecursion(n - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Long[] factorials = new Long[20];
|
||||||
|
|
||||||
|
public long factorialUsingMemoize(int n) {
|
||||||
|
|
||||||
|
if (factorials[n] != null) {
|
||||||
|
return factorials[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (n <= 2) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
long nthValue = n * factorialUsingMemoize(n - 1);
|
||||||
|
factorials[n] = nthValue;
|
||||||
|
return nthValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigInteger factorialHavingLargeResult(int n) {
|
||||||
|
BigInteger result = BigInteger.ONE;
|
||||||
|
for (int i = 2; i <= n; i++)
|
||||||
|
result = result.multiply(BigInteger.valueOf(i));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long factorialUsingApacheCommons(int n) {
|
||||||
|
return CombinatoricsUtils.factorial(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigInteger factorialUsingGuava(int n) {
|
||||||
|
return BigIntegerMath.factorial(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package com.baeldung.algorithms.string;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class LongestSubstringNonRepeatingCharacters {
|
||||||
|
|
||||||
|
public static String getUniqueCharacterSubstringBruteForce(String input) {
|
||||||
|
String output = "";
|
||||||
|
for (int start = 0; start < input.length(); start++) {
|
||||||
|
Set<Character> visited = new HashSet<>();
|
||||||
|
int end = start;
|
||||||
|
for (; end < input.length(); end++) {
|
||||||
|
char currChar = input.charAt(end);
|
||||||
|
if (visited.contains(currChar)) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
visited.add(currChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (output.length() < end - start + 1) {
|
||||||
|
output = input.substring(start, end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getUniqueCharacterSubstring(String input) {
|
||||||
|
Map<Character, Integer> visited = new HashMap<>();
|
||||||
|
String output = "";
|
||||||
|
for (int start = 0, end = 0; end < input.length(); end++) {
|
||||||
|
char currChar = input.charAt(end);
|
||||||
|
if (visited.containsKey(currChar)) {
|
||||||
|
start = Math.max(visited.get(currChar) + 1, start);
|
||||||
|
}
|
||||||
|
if (output.length() < end - start + 1) {
|
||||||
|
output = input.substring(start, end + 1);
|
||||||
|
}
|
||||||
|
visited.put(currChar, end);
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
if(args.length > 0) {
|
||||||
|
System.out.println(getUniqueCharacterSubstring(args[0]));
|
||||||
|
} else {
|
||||||
|
System.err.println("This program expects command-line input. Please try again!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
package com.baeldung.algorithms.string;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class SubstringPalindrome {
|
||||||
|
|
||||||
|
public Set<String> findAllPalindromesUsingCenter(String input) {
|
||||||
|
final Set<String> palindromes = new HashSet<>();
|
||||||
|
if (input == null || input.isEmpty()) {
|
||||||
|
return palindromes;
|
||||||
|
}
|
||||||
|
if (input.length() == 1) {
|
||||||
|
palindromes.add(input);
|
||||||
|
return palindromes;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < input.length(); i++) {
|
||||||
|
palindromes.addAll(findPalindromes(input, i, i + 1));
|
||||||
|
palindromes.addAll(findPalindromes(input, i, i));
|
||||||
|
}
|
||||||
|
return palindromes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Set<String> findPalindromes(String input, int low, int high) {
|
||||||
|
Set<String> result = new HashSet<>();
|
||||||
|
while (low >= 0 && high < input.length() && input.charAt(low) == input.charAt(high)) {
|
||||||
|
result.add(input.substring(low, high + 1));
|
||||||
|
low--;
|
||||||
|
high++;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> findAllPalindromesUsingBruteForceApproach(String input) {
|
||||||
|
Set<String> palindromes = new HashSet<>();
|
||||||
|
if (input == null || input.isEmpty()) {
|
||||||
|
return palindromes;
|
||||||
|
}
|
||||||
|
if (input.length() == 1) {
|
||||||
|
palindromes.add(input);
|
||||||
|
return palindromes;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < input.length(); i++) {
|
||||||
|
for (int j = i + 1; j <= input.length(); j++)
|
||||||
|
if (isPalindrome(input.substring(i, j))) {
|
||||||
|
palindromes.add(input.substring(i, j));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return palindromes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isPalindrome(String input) {
|
||||||
|
StringBuilder plain = new StringBuilder(input);
|
||||||
|
StringBuilder reverse = plain.reverse();
|
||||||
|
return (reverse.toString()).equals(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> findAllPalindromesUsingManachersAlgorithm(String input) {
|
||||||
|
Set<String> palindromes = new HashSet<>();
|
||||||
|
String formattedInput = "@" + input + "#";
|
||||||
|
char inputCharArr[] = formattedInput.toCharArray();
|
||||||
|
int max;
|
||||||
|
int radius[][] = new int[2][input.length() + 1];
|
||||||
|
for (int j = 0; j <= 1; j++) {
|
||||||
|
radius[j][0] = max = 0;
|
||||||
|
int i = 1;
|
||||||
|
while (i <= input.length()) {
|
||||||
|
palindromes.add(Character.toString(inputCharArr[i]));
|
||||||
|
while (inputCharArr[i - max - 1] == inputCharArr[i + j + max])
|
||||||
|
max++;
|
||||||
|
radius[j][i] = max;
|
||||||
|
int k = 1;
|
||||||
|
while ((radius[j][i - k] != max - k) && (k < max)) {
|
||||||
|
radius[j][i + k] = Math.min(radius[j][i - k], max - k);
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
max = Math.max(max - k, 0);
|
||||||
|
i += k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 1; i <= input.length(); i++) {
|
||||||
|
for (int j = 0; j <= 1; j++) {
|
||||||
|
for (max = radius[j][i]; max > 0; max--) {
|
||||||
|
palindromes.add(input.substring(i - max - 1, max + j + i - 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return palindromes;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.baeldung.algorithms.factorial;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class FactorialUnitTest {
|
||||||
|
|
||||||
|
Factorial factorial;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
factorial = new Factorial();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculatingFactorialUsingForLoop_thenCorrect() {
|
||||||
|
int n = 5;
|
||||||
|
|
||||||
|
assertThat(factorial.factorialUsingForLoop(n)).isEqualTo(120);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculatingFactorialUsingStreams_thenCorrect() {
|
||||||
|
int n = 5;
|
||||||
|
|
||||||
|
assertThat(factorial.factorialUsingStreams(n)).isEqualTo(120);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculatingFactorialUsingRecursion_thenCorrect() {
|
||||||
|
int n = 5;
|
||||||
|
|
||||||
|
assertThat(factorial.factorialUsingRecursion(n)).isEqualTo(120);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculatingFactorialUsingMemoize_thenCorrect() {
|
||||||
|
int n = 5;
|
||||||
|
|
||||||
|
assertThat(factorial.factorialUsingMemoize(n)).isEqualTo(120);
|
||||||
|
|
||||||
|
n = 6;
|
||||||
|
|
||||||
|
assertThat(factorial.factorialUsingMemoize(n)).isEqualTo(720);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculatingFactorialHavingLargeResult_thenCorrect() {
|
||||||
|
int n = 22;
|
||||||
|
|
||||||
|
assertThat(factorial.factorialHavingLargeResult(n)).isEqualTo(new BigInteger("1124000727777607680000"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculatingFactorialUsingApacheCommons_thenCorrect() {
|
||||||
|
int n = 5;
|
||||||
|
|
||||||
|
assertThat(factorial.factorialUsingApacheCommons(n)).isEqualTo(120);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculatingFactorialUsingGuava_thenCorrect() {
|
||||||
|
int n = 22;
|
||||||
|
|
||||||
|
assertThat(factorial.factorialUsingGuava(n)).isEqualTo(new BigInteger("1124000727777607680000"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.baeldung.algorithms.string;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static com.baeldung.algorithms.string.LongestSubstringNonRepeatingCharacters.getUniqueCharacterSubstring;
|
||||||
|
import static com.baeldung.algorithms.string.LongestSubstringNonRepeatingCharacters.getUniqueCharacterSubstringBruteForce;
|
||||||
|
|
||||||
|
public class LongestSubstringNonRepeatingCharactersUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenString_whenGetUniqueCharacterSubstringBruteForceCalled_thenResultFoundAsExpectedUnitTest() {
|
||||||
|
assertEquals("", getUniqueCharacterSubstringBruteForce(""));
|
||||||
|
assertEquals("A", getUniqueCharacterSubstringBruteForce("A"));
|
||||||
|
assertEquals("ABCDEF", getUniqueCharacterSubstringBruteForce("AABCDEF"));
|
||||||
|
assertEquals("ABCDEF", getUniqueCharacterSubstringBruteForce("ABCDEFF"));
|
||||||
|
assertEquals("NGISAWE", getUniqueCharacterSubstringBruteForce("CODINGISAWESOME"));
|
||||||
|
assertEquals("be coding", getUniqueCharacterSubstringBruteForce("always be coding"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenString_whenGetUniqueCharacterSubstringCalled_thenResultFoundAsExpectedUnitTest() {
|
||||||
|
assertEquals("", getUniqueCharacterSubstring(""));
|
||||||
|
assertEquals("A", getUniqueCharacterSubstring("A"));
|
||||||
|
assertEquals("ABCDEF", getUniqueCharacterSubstring("AABCDEF"));
|
||||||
|
assertEquals("ABCDEF", getUniqueCharacterSubstring("ABCDEFF"));
|
||||||
|
assertEquals("NGISAWE", getUniqueCharacterSubstring("CODINGISAWESOME"));
|
||||||
|
assertEquals("be coding", getUniqueCharacterSubstring("always be coding"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
package com.baeldung.algorithms.string;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class SubstringPalindromeUnitTest {
|
||||||
|
|
||||||
|
private static final String INPUT_BUBBLE = "bubble";
|
||||||
|
private static final String INPUT_CIVIC = "civic";
|
||||||
|
private static final String INPUT_INDEED = "indeed";
|
||||||
|
private static final String INPUT_ABABAC = "ababac";
|
||||||
|
|
||||||
|
Set<String> EXPECTED_PALINDROME_BUBBLE = new HashSet<String>() {
|
||||||
|
{
|
||||||
|
add("b");
|
||||||
|
add("u");
|
||||||
|
add("l");
|
||||||
|
add("e");
|
||||||
|
add("bb");
|
||||||
|
add("bub");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Set<String> EXPECTED_PALINDROME_CIVIC = new HashSet<String>() {
|
||||||
|
{
|
||||||
|
add("civic");
|
||||||
|
add("ivi");
|
||||||
|
add("i");
|
||||||
|
add("c");
|
||||||
|
add("v");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Set<String> EXPECTED_PALINDROME_INDEED = new HashSet<String>() {
|
||||||
|
{
|
||||||
|
add("i");
|
||||||
|
add("n");
|
||||||
|
add("d");
|
||||||
|
add("e");
|
||||||
|
add("ee");
|
||||||
|
add("deed");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Set<String> EXPECTED_PALINDROME_ABABAC = new HashSet<String>() {
|
||||||
|
{
|
||||||
|
add("a");
|
||||||
|
add("b");
|
||||||
|
add("c");
|
||||||
|
add("aba");
|
||||||
|
add("bab");
|
||||||
|
add("ababa");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private SubstringPalindrome palindrome = new SubstringPalindrome();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingManachersAlgorithm_thenFindsAllPalindromes() {
|
||||||
|
assertEquals(EXPECTED_PALINDROME_BUBBLE, palindrome.findAllPalindromesUsingManachersAlgorithm(INPUT_BUBBLE));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_INDEED, palindrome.findAllPalindromesUsingManachersAlgorithm(INPUT_INDEED));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_CIVIC, palindrome.findAllPalindromesUsingManachersAlgorithm(INPUT_CIVIC));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_ABABAC, palindrome.findAllPalindromesUsingManachersAlgorithm(INPUT_ABABAC));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingCenterApproach_thenFindsAllPalindromes() {
|
||||||
|
assertEquals(EXPECTED_PALINDROME_BUBBLE, palindrome.findAllPalindromesUsingCenter(INPUT_BUBBLE));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_INDEED, palindrome.findAllPalindromesUsingCenter(INPUT_INDEED));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_CIVIC, palindrome.findAllPalindromesUsingCenter(INPUT_CIVIC));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_ABABAC, palindrome.findAllPalindromesUsingCenter(INPUT_ABABAC));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingBruteForceApproach_thenFindsAllPalindromes() {
|
||||||
|
assertEquals(EXPECTED_PALINDROME_BUBBLE, palindrome.findAllPalindromesUsingBruteForceApproach(INPUT_BUBBLE));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_INDEED, palindrome.findAllPalindromesUsingBruteForceApproach(INPUT_INDEED));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_CIVIC, palindrome.findAllPalindromesUsingBruteForceApproach(INPUT_CIVIC));
|
||||||
|
assertEquals(EXPECTED_PALINDROME_ABABAC, palindrome.findAllPalindromesUsingBruteForceApproach(INPUT_ABABAC));
|
||||||
|
}
|
||||||
|
}
|
@ -17,3 +17,4 @@
|
|||||||
- [Round Up to the Nearest Hundred](https://www.baeldung.com/java-round-up-nearest-hundred)
|
- [Round Up to the Nearest Hundred](https://www.baeldung.com/java-round-up-nearest-hundred)
|
||||||
- [Calculate Percentage in Java](https://www.baeldung.com/java-calculate-percentage)
|
- [Calculate Percentage in Java](https://www.baeldung.com/java-calculate-percentage)
|
||||||
- [Converting Between Byte Arrays and Hexadecimal Strings in Java](https://www.baeldung.com/java-byte-arrays-hex-strings)
|
- [Converting Between Byte Arrays and Hexadecimal Strings in Java](https://www.baeldung.com/java-byte-arrays-hex-strings)
|
||||||
|
- [Convert Latitude and Longitude to a 2D Point in Java](https://www.baeldung.com/java-convert-latitude-longitude)
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>algorithms-miscellaneous-2</artifactId>
|
<artifactId>algorithms-miscellaneous-2</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>algorithms-miscellaneous-2</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
@ -33,6 +33,11 @@
|
|||||||
<artifactId>jgrapht-core</artifactId>
|
<artifactId>jgrapht-core</artifactId>
|
||||||
<version>${org.jgrapht.core.version}</version>
|
<version>${org.jgrapht.core.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jgrapht</groupId>
|
||||||
|
<artifactId>jgrapht-ext</artifactId>
|
||||||
|
<version>${org.jgrapht.ext.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>pl.allegro.finance</groupId>
|
<groupId>pl.allegro.finance</groupId>
|
||||||
<artifactId>tradukisto</artifactId>
|
<artifactId>tradukisto</artifactId>
|
||||||
@ -83,6 +88,7 @@
|
|||||||
<commons-math3.version>3.6.1</commons-math3.version>
|
<commons-math3.version>3.6.1</commons-math3.version>
|
||||||
<tradukisto.version>1.0.1</tradukisto.version>
|
<tradukisto.version>1.0.1</tradukisto.version>
|
||||||
<org.jgrapht.core.version>1.0.1</org.jgrapht.core.version>
|
<org.jgrapht.core.version>1.0.1</org.jgrapht.core.version>
|
||||||
|
<org.jgrapht.ext.version>1.0.1</org.jgrapht.ext.version>
|
||||||
<org.assertj.core.version>3.9.0</org.assertj.core.version>
|
<org.assertj.core.version>3.9.0</org.assertj.core.version>
|
||||||
<commons-codec.version>1.11</commons-codec.version>
|
<commons-codec.version>1.11</commons-codec.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
package com.baeldung.jgrapht;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
import org.jgrapht.ext.JGraphXAdapter;
|
||||||
|
import org.jgrapht.graph.DefaultDirectedGraph;
|
||||||
|
import org.jgrapht.graph.DefaultEdge;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import com.mxgraph.layout.mxCircleLayout;
|
||||||
|
import com.mxgraph.layout.mxIGraphLayout;
|
||||||
|
import com.mxgraph.util.mxCellRenderer;
|
||||||
|
|
||||||
|
public class GraphImageGenerationUnitTest {
|
||||||
|
static DefaultDirectedGraph<String, DefaultEdge> g;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void createGraph() throws IOException {
|
||||||
|
File imgFile = new File("src/test/resources/graph.png");
|
||||||
|
imgFile.createNewFile();
|
||||||
|
g = new DefaultDirectedGraph<String, DefaultEdge>(DefaultEdge.class);
|
||||||
|
String x1 = "x1";
|
||||||
|
String x2 = "x2";
|
||||||
|
String x3 = "x3";
|
||||||
|
g.addVertex(x1);
|
||||||
|
g.addVertex(x2);
|
||||||
|
g.addVertex(x3);
|
||||||
|
g.addEdge(x1, x2);
|
||||||
|
g.addEdge(x2, x3);
|
||||||
|
g.addEdge(x3, x1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAdaptedGraph_whenWriteBufferedImage_ThenFileShouldExist() throws IOException {
|
||||||
|
JGraphXAdapter<String, DefaultEdge> graphAdapter = new JGraphXAdapter<String, DefaultEdge>(g);
|
||||||
|
mxIGraphLayout layout = new mxCircleLayout(graphAdapter);
|
||||||
|
layout.execute(graphAdapter.getDefaultParent());
|
||||||
|
File imgFile = new File("src/test/resources/graph.png");
|
||||||
|
BufferedImage image = mxCellRenderer.createBufferedImage(graphAdapter, null, 2, Color.WHITE, true, null);
|
||||||
|
ImageIO.write(image, "PNG", imgFile);
|
||||||
|
assertTrue(imgFile.exists());
|
||||||
|
}
|
||||||
|
}
|
BIN
algorithms-miscellaneous-2/src/test/resources/graph.png
Normal file
BIN
algorithms-miscellaneous-2/src/test/resources/graph.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.1 KiB |
@ -4,4 +4,4 @@
|
|||||||
- [Merge Sort in Java](https://www.baeldung.com/java-merge-sort)
|
- [Merge Sort in Java](https://www.baeldung.com/java-merge-sort)
|
||||||
- [Quicksort Algorithm Implementation in Java](https://www.baeldung.com/java-quicksort)
|
- [Quicksort Algorithm Implementation in Java](https://www.baeldung.com/java-quicksort)
|
||||||
- [Insertion Sort in Java](https://www.baeldung.com/java-insertion-sort)
|
- [Insertion Sort in Java](https://www.baeldung.com/java-insertion-sort)
|
||||||
|
- [Heap Sort in Java](https://www.baeldung.com/java-heap-sort)
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>algorithms-sorting</artifactId>
|
<artifactId>algorithms-sorting</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>algorithms-sorting</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -34,7 +34,7 @@ public class MergeSort {
|
|||||||
|
|
||||||
while (i < left && j < right) {
|
while (i < left && j < right) {
|
||||||
|
|
||||||
if (l[i] < r[j])
|
if (l[i] <= r[j])
|
||||||
a[k++] = l[i++];
|
a[k++] = l[i++];
|
||||||
else
|
else
|
||||||
a[k++] = r[j++];
|
a[k++] = r[j++];
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>annotation-processing</artifactId>
|
<artifactId>annotation-processing</artifactId>
|
||||||
|
<name>annotation-processing</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>annotation-user</artifactId>
|
<artifactId>annotation-user</artifactId>
|
||||||
|
<name>annotation-user</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>annotations</artifactId>
|
<artifactId>annotations</artifactId>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>annotations</artifactId>
|
<artifactId>annotations</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
<name>annotations</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>parent-modules</artifactId>
|
<artifactId>parent-modules</artifactId>
|
||||||
|
@ -3,10 +3,9 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>apache-avro</artifactId>
|
<artifactId>apache-avro</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
<name>Apache Avro</name>
|
<name>apache-avro</name>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<groupId>apache-bval</groupId>
|
<groupId>apache-bval</groupId>
|
||||||
<artifactId>apache-bval</artifactId>
|
<artifactId>apache-bval</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>apache-bval</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<artifactId>apache-curator</artifactId>
|
<artifactId>apache-curator</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
<name>apache-curator</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>cxf-aegis</artifactId>
|
<artifactId>cxf-aegis</artifactId>
|
||||||
|
<name>cxf-aegis</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>cxf-introduction</artifactId>
|
<artifactId>cxf-introduction</artifactId>
|
||||||
|
<name>cxf-introduction</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>cxf-jaxrs-implementation</artifactId>
|
<artifactId>cxf-jaxrs-implementation</artifactId>
|
||||||
|
<name>cxf-jaxrs-implementation</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>cxf-spring</artifactId>
|
<artifactId>cxf-spring</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
|
<name>cxf-spring</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>apache-cxf</artifactId>
|
<artifactId>apache-cxf</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>apache-cxf</name>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<artifactId>sse-jaxrs</artifactId>
|
<artifactId>sse-jaxrs</artifactId>
|
||||||
|
<name>sse-jaxrs</name>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>sse-jaxrs-client</artifactId>
|
||||||
|
<name>sse-jaxrs-client</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
@ -10,8 +12,6 @@
|
|||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>sse-jaxrs-client</artifactId>
|
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<cxf-version>3.2.0</cxf-version>
|
<cxf-version>3.2.0</cxf-version>
|
||||||
</properties>
|
</properties>
|
||||||
@ -21,7 +21,6 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.codehaus.mojo</groupId>
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
<artifactId>exec-maven-plugin</artifactId>
|
<artifactId>exec-maven-plugin</artifactId>
|
||||||
<version>1.6.0</version>
|
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>singleEvent</id>
|
<id>singleEvent</id>
|
||||||
|
@ -3,6 +3,9 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>sse-jaxrs-server</artifactId>
|
||||||
|
<name>sse-jaxrs-server</name>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
@ -10,9 +13,6 @@
|
|||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>sse-jaxrs-server</artifactId>
|
|
||||||
<packaging>war</packaging>
|
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<liberty-maven-plugin.version>2.4.2</liberty-maven-plugin.version>
|
<liberty-maven-plugin.version>2.4.2</liberty-maven-plugin.version>
|
||||||
<failOnMissingWebXml>false</failOnMissingWebXml>
|
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||||
|
@ -3,10 +3,9 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>apache-geode</artifactId>
|
<artifactId>apache-geode</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>apache-geode</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>apache-opennlp</artifactId>
|
<artifactId>apache-opennlp</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>apache-opennlp</name>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>apache-poi</artifactId>
|
<artifactId>apache-poi</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>apache-poi</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
3
apache-pulsar/README.md
Normal file
3
apache-pulsar/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
### Relevant Articles:
|
||||||
|
|
||||||
|
- [Introduction to Apache Pulsar](https://www.baeldung.com/apache-pulsar)
|
@ -3,8 +3,9 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung.pulsar</groupId>
|
<groupId>com.baeldung.pulsar</groupId>
|
||||||
<artifactId>pulsar-java</artifactId>
|
<artifactId>apache-pulsar</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.1</version>
|
||||||
|
<name>apache-pulsar</name>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>apache-shiro</artifactId>
|
<artifactId>apache-shiro</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>apache-shiro</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>parent-boot-1</artifactId>
|
<artifactId>parent-boot-1</artifactId>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>apache-thrift</artifactId>
|
<artifactId>apache-thrift</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>apache-thrift</name>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>apache-tika</artifactId>
|
<artifactId>apache-tika</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>apache-tika</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>apache-zookeeper</artifactId>
|
<artifactId>apache-zookeeper</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>apache-zookeeper</name>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
<groupId>com.baeldung.examples</groupId>
|
<groupId>com.baeldung.examples</groupId>
|
||||||
<artifactId>asm</artifactId>
|
<artifactId>asm</artifactId>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
|
<name>asm</name>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<groupId>com.atomix.io</groupId>
|
<groupId>com.atomix.io</groupId>
|
||||||
<artifactId>atomix</artifactId>
|
<artifactId>atomix</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>atomix</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>axon</artifactId>
|
<artifactId>axon</artifactId>
|
||||||
|
<name>axon</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>parent-modules</artifactId>
|
<artifactId>parent-modules</artifactId>
|
||||||
|
@ -3,8 +3,9 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd ">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>cas-server</artifactId>
|
<artifactId>cas-server</artifactId>
|
||||||
<packaging>war</packaging>
|
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
|
<name>cas-server</name>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>parent-boot-1</artifactId>
|
<artifactId>parent-boot-1</artifactId>
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
### Relevant Articles:
|
### Relevant Articles:
|
||||||
- [CDI Interceptor vs Spring AspectJ](http://www.baeldung.com/cdi-interceptor-vs-spring-aspectj)
|
- [CDI Interceptor vs Spring AspectJ](http://www.baeldung.com/cdi-interceptor-vs-spring-aspectj)
|
||||||
- [An Introduction to CDI (Contexts and Dependency Injection) in Java](http://www.baeldung.com/java-ee-cdi)
|
- [An Introduction to CDI (Contexts and Dependency Injection) in Java](http://www.baeldung.com/java-ee-cdi)
|
||||||
|
- [Introduction to the Event Notification Model in CDI 2.0](https://www.baeldung.com/cdi-event-notification)
|
||||||
|
|
||||||
|
25
cdi/pom.xml
25
cdi/pom.xml
@ -2,9 +2,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>cdi</artifactId>
|
<artifactId>cdi</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>cdi</name>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
@ -14,6 +14,16 @@
|
|||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.enterprise</groupId>
|
||||||
|
<artifactId>cdi-api</artifactId>
|
||||||
|
<version>${cdi-api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.weld.se</groupId>
|
||||||
|
<artifactId>weld-se-core</artifactId>
|
||||||
|
<version>${weld-se-core.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.hamcrest</groupId>
|
<groupId>org.hamcrest</groupId>
|
||||||
<artifactId>hamcrest-core</artifactId>
|
<artifactId>hamcrest-core</artifactId>
|
||||||
@ -42,11 +52,6 @@
|
|||||||
<artifactId>aspectjweaver</artifactId>
|
<artifactId>aspectjweaver</artifactId>
|
||||||
<version>${aspectjweaver.version}</version>
|
<version>${aspectjweaver.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.weld.se</groupId>
|
|
||||||
<artifactId>weld-se-core</artifactId>
|
|
||||||
<version>${weld-se-core.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-test</artifactId>
|
<artifactId>spring-test</artifactId>
|
||||||
@ -54,13 +59,13 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<aspectjweaver.version>1.8.9</aspectjweaver.version>
|
<cdi-api.version>2.0.SP1</cdi-api.version>
|
||||||
<weld-se-core.version>2.4.1.Final</weld-se-core.version>
|
<weld-se-core.version>3.0.5.Final</weld-se-core.version>
|
||||||
|
<aspectjweaver.version>1.9.2</aspectjweaver.version>
|
||||||
<hamcrest-core.version>1.3</hamcrest-core.version>
|
<hamcrest-core.version>1.3</hamcrest-core.version>
|
||||||
<assertj-core.version>3.10.0</assertj-core.version>
|
<assertj-core.version>3.10.0</assertj-core.version>
|
||||||
<junit.version>4.12</junit.version>
|
<junit.version>4.12</junit.version>
|
||||||
|
<spring.version>5.1.2.RELEASE</spring.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.baeldung.cdi.cdi2observers.application;
|
||||||
|
|
||||||
|
import com.baeldung.cdi.cdi2observers.events.ExampleEvent;
|
||||||
|
import javax.enterprise.inject.se.SeContainer;
|
||||||
|
import javax.enterprise.inject.se.SeContainerInitializer;
|
||||||
|
|
||||||
|
public class BootstrappingApplication {
|
||||||
|
|
||||||
|
public static void main(String... args) {
|
||||||
|
SeContainerInitializer containerInitializer = SeContainerInitializer.newInstance();
|
||||||
|
try (SeContainer container = containerInitializer.initialize()) {
|
||||||
|
container.getBeanManager().fireEvent(new ExampleEvent("Welcome to Baeldung!"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.baeldung.cdi.cdi2observers.events;
|
||||||
|
|
||||||
|
public class ExampleEvent {
|
||||||
|
|
||||||
|
private final String eventMessage;
|
||||||
|
|
||||||
|
public ExampleEvent(String eventMessage) {
|
||||||
|
this.eventMessage = eventMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEventMessage() {
|
||||||
|
return eventMessage;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.baeldung.cdi.cdi2observers.events;
|
||||||
|
|
||||||
|
import javax.enterprise.event.Event;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
public class ExampleEventSource {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
Event<ExampleEvent> exampleEvent;
|
||||||
|
|
||||||
|
public void fireEvent() {
|
||||||
|
exampleEvent.fireAsync(new ExampleEvent("Welcome to Baeldung!"));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.baeldung.cdi.cdi2observers.observers;
|
||||||
|
|
||||||
|
import com.baeldung.cdi.cdi2observers.events.ExampleEvent;
|
||||||
|
import javax.annotation.Priority;
|
||||||
|
import javax.enterprise.event.Observes;
|
||||||
|
|
||||||
|
public class AnotherExampleEventObserver {
|
||||||
|
|
||||||
|
public String onEvent(@Observes @Priority(2) ExampleEvent event) {
|
||||||
|
return event.getEventMessage();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baeldung.cdi.cdi2observers.observers;
|
||||||
|
|
||||||
|
import com.baeldung.cdi.cdi2observers.events.ExampleEvent;
|
||||||
|
import com.baeldung.cdi.cdi2observers.services.TextService;
|
||||||
|
import javax.annotation.Priority;
|
||||||
|
import javax.enterprise.event.Observes;
|
||||||
|
|
||||||
|
public class ExampleEventObserver {
|
||||||
|
|
||||||
|
public String onEvent(@Observes @Priority(1) ExampleEvent event, TextService textService) {
|
||||||
|
return textService.parseText(event.getEventMessage());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package com.baeldung.cdi.cdi2observers.services;
|
||||||
|
|
||||||
|
public class TextService {
|
||||||
|
|
||||||
|
public String parseText(String text) {
|
||||||
|
return text.toUpperCase();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.baeldung.cdi.cdi2observers.tests;
|
||||||
|
|
||||||
|
import com.baeldung.cdi.cdi2observers.services.TextService;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class TextServiceUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTextServiceInstance_whenCalledparseText_thenCorrect() {
|
||||||
|
TextService textService = new TextService();
|
||||||
|
assertThat(textService.parseText("Baeldung")).isEqualTo("BAELDUNG");
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>core-groovy</artifactId>
|
<artifactId>core-groovy</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>core-groovy</name>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -4,3 +4,4 @@
|
|||||||
- [Java 10 LocalVariable Type-Inference](http://www.baeldung.com/java-10-local-variable-type-inference)
|
- [Java 10 LocalVariable Type-Inference](http://www.baeldung.com/java-10-local-variable-type-inference)
|
||||||
- [Guide to Java 10](http://www.baeldung.com/java-10-overview)
|
- [Guide to Java 10](http://www.baeldung.com/java-10-overview)
|
||||||
- [Copy a List to Another List in Java](http://www.baeldung.com/java-copy-list-to-another)
|
- [Copy a List to Another List in Java](http://www.baeldung.com/java-copy-list-to-another)
|
||||||
|
- [Deep Dive Into the New Java JIT Compiler – Graal](https://www.baeldung.com/graal-java-jit-compiler)
|
||||||
|
12
core-java-11/src/main/java/com/baeldung/add
Executable file
12
core-java-11/src/main/java/com/baeldung/add
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/local/bin/java --source 11
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public class Addition
|
||||||
|
{
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println(Arrays.stream(args)
|
||||||
|
.mapToInt(Integer::parseInt)
|
||||||
|
.sum());
|
||||||
|
}
|
||||||
|
}
|
@ -33,3 +33,4 @@
|
|||||||
- [An Overview of Regular Expressions Performance in Java](https://www.baeldung.com/java-regex-performance)
|
- [An Overview of Regular Expressions Performance in Java](https://www.baeldung.com/java-regex-performance)
|
||||||
- [Java Primitives versus Objects](https://www.baeldung.com/java-primitives-vs-objects)
|
- [Java Primitives versus Objects](https://www.baeldung.com/java-primitives-vs-objects)
|
||||||
- [How to Use if/else Logic in Java 8 Streams](https://www.baeldung.com/java-8-streams-if-else-logic)
|
- [How to Use if/else Logic in Java 8 Streams](https://www.baeldung.com/java-8-streams-if-else-logic)
|
||||||
|
- [How to Replace Many if Statements in Java](https://www.baeldung.com/java-replace-if-statements)
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.baeldung.interfaces.multiinheritance;
|
||||||
|
|
||||||
|
public abstract interface Fly{
|
||||||
|
void fly();
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.baeldung.interfaces.multiinheritance;
|
||||||
|
|
||||||
|
public interface Transform {
|
||||||
|
void transform();
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baeldung.interfaces.multiinheritance;
|
||||||
|
|
||||||
|
public class Vehicle implements Fly, Transform {
|
||||||
|
@Override
|
||||||
|
public void fly() {
|
||||||
|
System.out.println("I can Fly!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transform() {
|
||||||
|
System.out.println("I can Transform!!");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
public class Circle implements Shape {
|
||||||
|
|
||||||
|
private double radius;
|
||||||
|
|
||||||
|
public Circle(double radius){
|
||||||
|
this.radius = radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String name() {
|
||||||
|
return "Circle";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double area() {
|
||||||
|
return Math.PI * (radius * radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class DisplayShape {
|
||||||
|
|
||||||
|
private ArrayList<Shape> shapes;
|
||||||
|
|
||||||
|
public DisplayShape() {
|
||||||
|
shapes = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(Shape shape) {
|
||||||
|
shapes.add(shape);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void display() {
|
||||||
|
for (Shape shape : shapes) {
|
||||||
|
System.out.println(shape.name() + " area: " + shape.area());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
public class MainPolymorphic {
|
||||||
|
public static void main(String[] args){
|
||||||
|
|
||||||
|
Shape circleShape = new Circle(2);
|
||||||
|
Shape squareShape = new Square(2);
|
||||||
|
|
||||||
|
DisplayShape displayShape = new DisplayShape();
|
||||||
|
displayShape.add(circleShape);
|
||||||
|
displayShape.add(squareShape);
|
||||||
|
|
||||||
|
displayShape.display();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
public interface Shape {
|
||||||
|
public abstract String name();
|
||||||
|
public abstract double area();
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
public class Square implements Shape {
|
||||||
|
|
||||||
|
private double width;
|
||||||
|
|
||||||
|
public Square(double width) {
|
||||||
|
this.width = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String name() {
|
||||||
|
return "Square";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double area() {
|
||||||
|
return width * width;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class AddCommand implements Command {
|
||||||
|
|
||||||
|
private int a;
|
||||||
|
private int b;
|
||||||
|
|
||||||
|
public AddCommand(int a, int b) {
|
||||||
|
this.a = a;
|
||||||
|
this.b = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer execute() {
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class AddRule implements Rule {
|
||||||
|
|
||||||
|
private int result;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean evaluate(Expression expression) {
|
||||||
|
boolean evalResult = false;
|
||||||
|
if (expression.getOperator() == Operator.ADD) {
|
||||||
|
this.result = expression.getX() + expression.getY();
|
||||||
|
evalResult = true;
|
||||||
|
}
|
||||||
|
return evalResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result getResult() {
|
||||||
|
return new Result(result);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class Addition implements Operation {
|
||||||
|
@Override
|
||||||
|
public int apply(int a, int b) {
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class Calculator {
|
||||||
|
|
||||||
|
public int calculate(int a, int b, String operator) {
|
||||||
|
int result = Integer.MIN_VALUE;
|
||||||
|
|
||||||
|
if ("add".equals(operator)) {
|
||||||
|
result = a + b;
|
||||||
|
} else if ("multiply".equals(operator)) {
|
||||||
|
result = a * b;
|
||||||
|
} else if ("divide".equals(operator)) {
|
||||||
|
result = a / b;
|
||||||
|
} else if ("subtract".equals(operator)) {
|
||||||
|
result = a - b;
|
||||||
|
} else if ("modulo".equals(operator)) {
|
||||||
|
result = a % b;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calculateUsingSwitch(int a, int b, String operator) {
|
||||||
|
int result = 0;
|
||||||
|
switch (operator) {
|
||||||
|
case "add":
|
||||||
|
result = a + b;
|
||||||
|
break;
|
||||||
|
case "multiply":
|
||||||
|
result = a * b;
|
||||||
|
break;
|
||||||
|
case "divide":
|
||||||
|
result = a / b;
|
||||||
|
break;
|
||||||
|
case "subtract":
|
||||||
|
result = a - b;
|
||||||
|
break;
|
||||||
|
case "modulo":
|
||||||
|
result = a % b;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
result = Integer.MIN_VALUE;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calculateUsingSwitch(int a, int b, Operator operator) {
|
||||||
|
int result = 0;
|
||||||
|
switch (operator) {
|
||||||
|
case ADD:
|
||||||
|
result = a + b;
|
||||||
|
break;
|
||||||
|
case MULTIPLY:
|
||||||
|
result = a * b;
|
||||||
|
break;
|
||||||
|
case DIVIDE:
|
||||||
|
result = a / b;
|
||||||
|
break;
|
||||||
|
case SUBTRACT:
|
||||||
|
result = a - b;
|
||||||
|
break;
|
||||||
|
case MODULO:
|
||||||
|
result = a % b;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
result = Integer.MIN_VALUE;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calculate(int a, int b, Operator operator) {
|
||||||
|
return operator.apply(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calculateUsingFactory(int a, int b, String operation) {
|
||||||
|
Operation targetOperation = OperatorFactory.getOperation(operation)
|
||||||
|
.orElseThrow(() -> new IllegalArgumentException("Invalid Operator"));
|
||||||
|
return targetOperation.apply(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calculate(Command command) {
|
||||||
|
return command.execute();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public interface Command {
|
||||||
|
Integer execute();
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class Division implements Operation {
|
||||||
|
@Override public int apply(int a, int b) {
|
||||||
|
return a / b;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class Expression {
|
||||||
|
|
||||||
|
private Integer x;
|
||||||
|
private Integer y;
|
||||||
|
private Operator operator;
|
||||||
|
|
||||||
|
public Expression(Integer x, Integer y, Operator operator) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.operator = operator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Operator getOperator() {
|
||||||
|
return operator;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class Modulo implements Operation {
|
||||||
|
@Override public int apply(int a, int b) {
|
||||||
|
return a % b;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class Multiplication implements Operation {
|
||||||
|
@Override public int apply(int a, int b) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public interface Operation {
|
||||||
|
int apply(int a, int b);
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public enum Operator {
|
||||||
|
|
||||||
|
ADD {
|
||||||
|
@Override
|
||||||
|
public int apply(int a, int b) {
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
MULTIPLY {
|
||||||
|
@Override
|
||||||
|
public int apply(int a, int b) {
|
||||||
|
return a * b;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
SUBTRACT {
|
||||||
|
@Override
|
||||||
|
public int apply(int a, int b) {
|
||||||
|
return a - b;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
DIVIDE {
|
||||||
|
@Override
|
||||||
|
public int apply(int a, int b) {
|
||||||
|
return a / b;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
MODULO {
|
||||||
|
@Override
|
||||||
|
public int apply(int a, int b) {
|
||||||
|
return a % b;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public abstract int apply(int a, int b);
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class OperatorFactory {
|
||||||
|
|
||||||
|
static Map<String, Operation> operationMap = new HashMap<>();
|
||||||
|
static {
|
||||||
|
operationMap.put("add", new Addition());
|
||||||
|
operationMap.put("divide", new Division());
|
||||||
|
operationMap.put("multiply", new Multiplication());
|
||||||
|
operationMap.put("subtract", new Subtraction());
|
||||||
|
operationMap.put("modulo", new Modulo());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Optional<Operation> getOperation(String operation) {
|
||||||
|
return Optional.ofNullable(operationMap.get(operation));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class Result {
|
||||||
|
int value;
|
||||||
|
|
||||||
|
public Result(int value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public interface Rule {
|
||||||
|
|
||||||
|
boolean evaluate(Expression expression);
|
||||||
|
|
||||||
|
Result getResult();
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class RuleEngine {
|
||||||
|
|
||||||
|
private static List<Rule> rules = new ArrayList<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
rules.add(new AddRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result process(Expression expression) {
|
||||||
|
|
||||||
|
Rule rule = rules.stream()
|
||||||
|
.filter(r -> r.evaluate(expression))
|
||||||
|
.findFirst()
|
||||||
|
.orElseThrow(() -> new IllegalArgumentException("Expression does not matches any Rule"));
|
||||||
|
return rule.getResult();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.baeldung.reducingIfElse;
|
||||||
|
|
||||||
|
public class Subtraction implements Operation {
|
||||||
|
@Override public int apply(int a, int b) {
|
||||||
|
return a - b;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baeldung.interfaces;
|
||||||
|
|
||||||
|
import com.baeldung.interfaces.polymorphysim.Circle;
|
||||||
|
import com.baeldung.interfaces.polymorphysim.Shape;
|
||||||
|
import com.baeldung.interfaces.polymorphysim.Square;
|
||||||
|
import org.assertj.core.api.Assertions;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class PolymorphysimUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInterfacePointsToCircle_CircleAreaMethodisBeingCalled(){
|
||||||
|
double expectedArea = 12.566370614359172;
|
||||||
|
Shape circle = new Circle(2);
|
||||||
|
double actualArea = circle.area();
|
||||||
|
Assertions.assertThat(actualArea).isEqualTo(expectedArea);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInterfacePointsToSquare_SquareAreaMethodisBeingCalled(){
|
||||||
|
double expectedArea = 4;
|
||||||
|
Shape square = new Square(2);
|
||||||
|
double actualArea = square.area();
|
||||||
|
Assertions.assertThat(actualArea).isEqualTo(expectedArea);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package com.baeldung.reduceIfelse;
|
||||||
|
|
||||||
|
import com.baeldung.reducingIfElse.AddCommand;
|
||||||
|
import com.baeldung.reducingIfElse.Calculator;
|
||||||
|
import com.baeldung.reducingIfElse.Operator;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
public class CalculatorUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculateUsingStringOperator_thenReturnCorrectResult() {
|
||||||
|
Calculator calculator = new Calculator();
|
||||||
|
int result = calculator.calculate(3, 4, "add");
|
||||||
|
assertEquals(7, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculateUsingEnumOperator_thenReturnCorrectResult() {
|
||||||
|
Calculator calculator = new Calculator();
|
||||||
|
int result = calculator.calculate(3, 4, Operator.valueOf("ADD"));
|
||||||
|
assertEquals(7, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalculateUsingCommand_thenReturnCorrectResult() {
|
||||||
|
Calculator calculator = new Calculator();
|
||||||
|
int result = calculator.calculate(new AddCommand(3, 7));
|
||||||
|
assertEquals(10, result);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.baeldung.reduceIfelse;
|
||||||
|
|
||||||
|
import com.baeldung.reducingIfElse.Expression;
|
||||||
|
import com.baeldung.reducingIfElse.Operator;
|
||||||
|
import com.baeldung.reducingIfElse.Result;
|
||||||
|
import com.baeldung.reducingIfElse.RuleEngine;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
|
public class RuleEngineUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenNumbersGivenToRuleEngine_thenReturnCorrectResult() {
|
||||||
|
Expression expression = new Expression(5, 5, Operator.ADD);
|
||||||
|
RuleEngine engine = new RuleEngine();
|
||||||
|
Result result = engine.process(expression);
|
||||||
|
|
||||||
|
assertNotNull(result);
|
||||||
|
assertEquals(10, result.getValue());
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,6 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>core-java-9</artifactId>
|
<artifactId>core-java-9</artifactId>
|
||||||
<version>0.2-SNAPSHOT</version>
|
<version>0.2-SNAPSHOT</version>
|
||||||
<name>core-java-9</name>
|
<name>core-java-9</name>
|
||||||
|
25
core-java-arrays/.gitignore
vendored
Normal file
25
core-java-arrays/.gitignore
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
*.class
|
||||||
|
|
||||||
|
0.*
|
||||||
|
|
||||||
|
#folders#
|
||||||
|
/target
|
||||||
|
/neoDb*
|
||||||
|
/data
|
||||||
|
/src/main/webapp/WEB-INF/classes
|
||||||
|
*/META-INF/*
|
||||||
|
.resourceCache
|
||||||
|
|
||||||
|
# Packaged files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
||||||
|
|
||||||
|
# Files generated by integration tests
|
||||||
|
backup-pom.xml
|
||||||
|
/bin/
|
||||||
|
/temp
|
||||||
|
|
||||||
|
#IntelliJ specific
|
||||||
|
.idea/
|
||||||
|
*.iml
|
15
core-java-arrays/README.md
Normal file
15
core-java-arrays/README.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
=========
|
||||||
|
|
||||||
|
## Core Java Arrays Cookbooks and Examples
|
||||||
|
|
||||||
|
### Relevant Articles:
|
||||||
|
- [How to Copy an Array in Java](http://www.baeldung.com/java-array-copy)
|
||||||
|
- [Check if a Java Array Contains a Value](http://www.baeldung.com/java-array-contains-value)
|
||||||
|
- [Initializing Arrays in Java](http://www.baeldung.com/java-initialize-array)
|
||||||
|
- [Guide to the java.util.Arrays Class](http://www.baeldung.com/java-util-arrays)
|
||||||
|
- [Jagged Arrays In Java](http://www.baeldung.com/java-jagged-arrays)
|
||||||
|
- [Find Sum and Average in a Java Array](http://www.baeldung.com/java-array-sum-average)
|
||||||
|
- [Arrays in Java: A Reference Guide](https://www.baeldung.com/java-arrays-guide)
|
||||||
|
- [How to Invert an Array in Java](http://www.baeldung.com/java-invert-array)
|
||||||
|
- [Array Operations in Java](http://www.baeldung.com/java-common-array-operations)
|
||||||
|
- [Intersection Between two Integer Arrays](https://www.baeldung.com/java-array-intersection)
|
412
core-java-arrays/pom.xml
Normal file
412
core-java-arrays/pom.xml
Normal file
@ -0,0 +1,412 @@
|
|||||||
|
<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>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>core-java-arrays</artifactId>
|
||||||
|
<version>0.1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<name>core-java-arrays</name>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>parent-java</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<relativePath>../parent-java</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>${commons-lang3.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>log4j</groupId>
|
||||||
|
<artifactId>log4j</artifactId>
|
||||||
|
<version>${log4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency> <!-- needed to bridge to slf4j for projects that use the log4j APIs directly -->
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>log4j-over-slf4j</artifactId>
|
||||||
|
<version>${org.slf4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- test scoped -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.assertj</groupId>
|
||||||
|
<artifactId>assertj-core</artifactId>
|
||||||
|
<version>${assertj-core.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjdk.jmh</groupId>
|
||||||
|
<artifactId>jmh-core</artifactId>
|
||||||
|
<version>${jmh-core.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjdk.jmh</groupId>
|
||||||
|
<artifactId>jmh-generator-annprocess</artifactId>
|
||||||
|
<version>${jmh-generator-annprocess.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-web</artifactId>
|
||||||
|
<version>${springframework.spring-web.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>core-java-arrays</finalName>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<excludes>
|
||||||
|
<exclude>**/*LiveTest.java</exclude>
|
||||||
|
<exclude>**/*IntegrationTest.java</exclude>
|
||||||
|
<exclude>**/*IntTest.java</exclude>
|
||||||
|
<exclude>**/*LongRunningUnitTest.java</exclude>
|
||||||
|
<exclude>**/*ManualTest.java</exclude>
|
||||||
|
</excludes>
|
||||||
|
<testFailureIgnore>true</testFailureIgnore>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-dependencies</id>
|
||||||
|
<phase>prepare-package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy-dependencies</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${project.build.directory}/libs</outputDirectory>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>${maven-jar-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
<classpathPrefix>libs/</classpathPrefix>
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<archiveBaseDirectory>${project.basedir}</archiveBaseDirectory>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
<descriptorRefs>
|
||||||
|
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||||
|
</descriptorRefs>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>${maven-shade-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<shadedArtifactAttached>true</shadedArtifactAttached>
|
||||||
|
<transformers>
|
||||||
|
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
</transformer>
|
||||||
|
</transformers>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.jolira</groupId>
|
||||||
|
<artifactId>onejar-maven-plugin</artifactId>
|
||||||
|
<version>${onejar-maven-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<configuration>
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
<attachToBuild>true</attachToBuild>
|
||||||
|
<filename>${project.build.finalName}-onejar.${project.packaging}</filename>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>one-jar</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<version>${spring-boot-maven-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<classifier>spring-boot</classifier>
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>exec-maven-plugin</artifactId>
|
||||||
|
<version>${exec-maven-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<executable>java</executable>
|
||||||
|
<mainClass>com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed</mainClass>
|
||||||
|
<arguments>
|
||||||
|
<argument>-Xmx300m</argument>
|
||||||
|
<argument>-XX:+UseParallelGC</argument>
|
||||||
|
<argument>-classpath</argument>
|
||||||
|
<classpath />
|
||||||
|
<argument>com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed</argument>
|
||||||
|
</arguments>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
|
<version>${maven-javadoc-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>integration</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>integration-test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<excludes>
|
||||||
|
<exclude>**/*ManualTest.java</exclude>
|
||||||
|
</excludes>
|
||||||
|
<includes>
|
||||||
|
<include>**/*IntegrationTest.java</include>
|
||||||
|
<include>**/*IntTest.java</include>
|
||||||
|
</includes>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<systemPropertyVariables>
|
||||||
|
<test.mime>json</test.mime>
|
||||||
|
</systemPropertyVariables>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>exec-maven-plugin</artifactId>
|
||||||
|
<version>${exec-maven-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>run-benchmarks</id>
|
||||||
|
<!-- <phase>integration-test</phase> -->
|
||||||
|
<phase>none</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>exec</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<classpathScope>test</classpathScope>
|
||||||
|
<executable>java</executable>
|
||||||
|
<arguments>
|
||||||
|
<argument>-classpath</argument>
|
||||||
|
<classpath />
|
||||||
|
<argument>org.openjdk.jmh.Main</argument>
|
||||||
|
<argument>.*</argument>
|
||||||
|
</arguments>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
<!-- java instrumentation profiles to build jars -->
|
||||||
|
<profile>
|
||||||
|
<id>buildAgentLoader</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>jar</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<classifier>agentLoader</classifier>
|
||||||
|
<classesDirectory>target/classes</classesDirectory>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
</manifest>
|
||||||
|
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||||
|
</archive>
|
||||||
|
|
||||||
|
<includes>
|
||||||
|
<include>com/baeldung/instrumentation/application/AgentLoader.class</include>
|
||||||
|
<include>com/baeldung/instrumentation/application/Launcher.class</include>
|
||||||
|
</includes>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>buildApplication</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>jar</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<classifier>application</classifier>
|
||||||
|
<classesDirectory>target/classes</classesDirectory>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
</manifest>
|
||||||
|
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||||
|
</archive>
|
||||||
|
|
||||||
|
<includes>
|
||||||
|
<include>com/baeldung/instrumentation/application/MyAtm.class</include>
|
||||||
|
<include>com/baeldung/instrumentation/application/MyAtmApplication.class</include>
|
||||||
|
<include>com/baeldung/instrumentation/application/Launcher.class</include>
|
||||||
|
</includes>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>buildAgent</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>jar</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<classifier>agent</classifier>
|
||||||
|
<classesDirectory>target/classes</classesDirectory>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
</manifest>
|
||||||
|
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||||
|
</archive>
|
||||||
|
|
||||||
|
<includes>
|
||||||
|
<include>com/baeldung/instrumentation/agent/AtmTransformer.class</include>
|
||||||
|
<include>com/baeldung/instrumentation/agent/MyInstrumentationAgent.class</include>
|
||||||
|
</includes>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
|
||||||
|
<!-- util -->
|
||||||
|
<commons-lang3.version>3.8.1</commons-lang3.version>
|
||||||
|
<lombok.version>1.16.12</lombok.version>
|
||||||
|
|
||||||
|
<jmh-core.version>1.19</jmh-core.version>
|
||||||
|
<jmh-generator-annprocess.version>1.19</jmh-generator-annprocess.version>
|
||||||
|
|
||||||
|
<!-- testing -->
|
||||||
|
<assertj-core.version>3.10.0</assertj-core.version>
|
||||||
|
|
||||||
|
<!-- maven and spring plugins -->
|
||||||
|
<maven-surefire-plugin.version>2.21.0</maven-surefire-plugin.version>
|
||||||
|
<springframework.spring-web.version>4.3.4.RELEASE</springframework.spring-web.version>
|
||||||
|
<maven-javadoc-plugin.version>3.0.0-M1</maven-javadoc-plugin.version>
|
||||||
|
<maven-jar-plugin.version>3.0.2</maven-jar-plugin.version>
|
||||||
|
<onejar-maven-plugin.version>1.4.4</onejar-maven-plugin.version>
|
||||||
|
<maven-shade-plugin.version>3.1.1</maven-shade-plugin.version>
|
||||||
|
<spring-boot-maven-plugin.version>2.0.3.RELEASE</spring-boot-maven-plugin.version>
|
||||||
|
<exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
@ -2,7 +2,7 @@ package com.baeldung.array;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
||||||
public class ArrayInitializer {
|
public class ArrayInitializer {
|
||||||
|
|
@ -4,11 +4,13 @@ import java.lang.reflect.Array;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.IntPredicate;
|
import java.util.function.IntPredicate;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
||||||
@ -194,4 +196,16 @@ public class ArrayOperations {
|
|||||||
public static <T> T getRandomFromObjectArray(T[] array) {
|
public static <T> T getRandomFromObjectArray(T[] array) {
|
||||||
return array[new Random().nextInt(array.length)];
|
return array[new Random().nextInt(array.length)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Integer[] intersectionSimple(final Integer[] a, final Integer[] b){
|
||||||
|
return Stream.of(a).filter(Arrays.asList(b)::contains).toArray(Integer[]::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Integer[] intersectionSet(final Integer[] a, final Integer[] b){
|
||||||
|
return Stream.of(a).filter(Arrays.asList(b)::contains).distinct().toArray(Integer[]::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Integer[] intersectionMultiSet(final Integer[] a, final Integer[] b){
|
||||||
|
return Stream.of(a).filter(new LinkedList<>(Arrays.asList(b))::remove).toArray(Integer[]::new);
|
||||||
|
}
|
||||||
}
|
}
|
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