Merge branch 'master' of https://github.com/eugenp/tutorials into task/JAVA-13629

This commit is contained in:
Dhawal Kapil
2022-07-31 22:00:29 +05:30
173 changed files with 5142 additions and 386 deletions
+1 -2
View File
@@ -12,5 +12,4 @@ This module contains articles about Java 11 core features
- [Java HTTPS Client Certificate Authentication](https://www.baeldung.com/java-https-client-certificate-authentication)
- [Call Methods at Runtime Using Java Reflection](https://www.baeldung.com/java-method-reflection)
- [Java HttpClient Basic Authentication](https://www.baeldung.com/java-httpclient-basic-auth)
- [Java HttpClient With SSL](https://www.baeldung.com/java-httpclient-ssl)
- [Adding Parameters to Java HttpClient Requests](https://www.baeldung.com/java-httpclient-request-parameters)
- [Java HttpClient With SSL](https://www.baeldung.com/java-httpclient-ssl)
@@ -0,0 +1,6 @@
## Core Java 11
This module contains articles about Java 11 core features
### Relevant articles
- [Adding Parameters to Java HttpClient Requests](https://www.baeldung.com/java-httpclient-request-parameters)
+37
View File
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>core-java-11-3</artifactId>
<version>0.1.0-SNAPSHOT</version>
<name>core-java-11-3</name>
<packaging>jar</packaging>
<parent>
<groupId>com.baeldung</groupId>
<artifactId>parent-modules</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${maven.compiler.source.version}</source>
<target>${maven.compiler.target.version}</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source.version>11</maven.compiler.source.version>
<maven.compiler.target.version>11</maven.compiler.target.version>
</properties>
</project>
+1 -1
View File
@@ -5,4 +5,4 @@
- [Introduction to HexFormat in Java 17](https://www.baeldung.com/java-hexformat)
- [New Features in Java 17](https://www.baeldung.com/java-17-new-features)
- [Random Number Generators in Java 17](https://www.baeldung.com/java-17-random-number-generators)
- [Sealed Classes and Interfaces in Java 17](https://www.baeldung.com/java-sealed-classes-interfaces)
- [Sealed Classes and Interfaces in Java](https://www.baeldung.com/java-sealed-classes-interfaces)
@@ -0,0 +1,21 @@
package com.baeldung.list.replace;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
class ReplaceUsingIndexInArrayListUnitTest {
private static final List<Integer> EXPECTED = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
@Test void givenArrayList_updateUsingSet() {
List<Integer> aList = new ArrayList<>(Arrays.asList(1, 2, 7, 4, 5));
aList.set(2, 3);
assertThat(aList).isEqualTo(EXPECTED);
}
}
@@ -0,0 +1,24 @@
package com.baeldung.map.multikey;
import java.util.HashMap;
import java.util.Map;
public class BaseClassUserCache {
private final Map<Object, User> cache = new HashMap<>();
public User getById(String id) {
return cache.get(id);
}
public User getById(Long id) {
return cache.get(id);
}
public void storeById(String id, User user) {
cache.put(id, user);
}
public void storeById(Long id, User user) {
cache.put(id, user);
}
}
@@ -0,0 +1,25 @@
package com.baeldung.map.multikey;
import java.util.HashMap;
import java.util.Map;
public class MultipleMapsUserCache {
private final Map<String, User> stringCache = new HashMap<>();
private final Map<Long, User> longCache = new HashMap<>();
public User getById(String id) {
return stringCache.get(id);
}
public User getById(Long id) {
return longCache.get(id);
}
public void storeById(String id, User user) {
stringCache.put(id, user);
}
public void storeById(Long id, User user) {
longCache.put(id, user);
}
}
@@ -0,0 +1,13 @@
package com.baeldung.map.multikey;
public class User {
private final String name;
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
@@ -0,0 +1,42 @@
package com.baeldung.map.multikey;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class WrapperClassUserCache {
private Map<CacheKey, User> cache = new HashMap<>();
public User getById(CacheKey key) {
return cache.get(key);
}
public void storeById(CacheKey key, User user) {
cache.put(key, user);
}
public static class CacheKey {
private final Object value;
public CacheKey(String value) {
this.value = value;
}
public CacheKey(Long value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CacheKey cacheKey = (CacheKey) o;
return value.equals(cacheKey.value);
}
@Override
public int hashCode() {
return Objects.hash(value);
}
}
}
@@ -0,0 +1,62 @@
package com.baeldung.map.multikey;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class WrapperInterfaceUserCache {
private Map<CacheKey, User> cache = new HashMap<>();
public User getById(CacheKey key) {
return cache.get(key);
}
public void storeById(CacheKey key, User user) {
cache.put(key, user);
}
public interface CacheKey {
}
public static class StringCacheKey implements CacheKey{
private final String value;
public StringCacheKey(String value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StringCacheKey that = (StringCacheKey) o;
return value.equals(that.value);
}
@Override
public int hashCode() {
return Objects.hash(value);
}
}
public static class LongCacheKey implements CacheKey {
private final Long value;
public LongCacheKey(Long value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
LongCacheKey that = (LongCacheKey) o;
return value.equals(that.value);
}
@Override
public int hashCode() {
return Objects.hash(value);
}
}
}
@@ -0,0 +1,32 @@
package com.baeldung.map.multikey;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class BaseClassUserCacheUnitTest {
private BaseClassUserCache cache = new BaseClassUserCache();
@BeforeEach
public void setup() {
cache.storeById("a", new User("User A"));
cache.storeById("b", new User("User B"));
cache.storeById(3L, new User("User 3"));
cache.storeById(4L, new User("User 4"));
}
@Test
public void getByString() {
User user = cache.getById("b");
assertNotNull(user);
assertEquals("User B", user.getName());
}
@Test
public void getByLong() {
User user = cache.getById(4L);
assertNotNull(user);
assertEquals("User 4", user.getName());
}
}
@@ -0,0 +1,33 @@
package com.baeldung.map.multikey;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
class MultipleMapsUserCacheUnitTest {
private MultipleMapsUserCache cache = new MultipleMapsUserCache();
@BeforeEach
public void setup() {
cache.storeById("a", new User("User A"));
cache.storeById("b", new User("User B"));
cache.storeById(3L, new User("User 3"));
cache.storeById(4L, new User("User 4"));
}
@Test
public void getByString() {
User user = cache.getById("b");
assertNotNull(user);
assertEquals("User B", user.getName());
}
@Test
public void getByLong() {
User user = cache.getById(4L);
assertNotNull(user);
assertEquals("User 4", user.getName());
}
}
@@ -0,0 +1,33 @@
package com.baeldung.map.multikey;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
class WrapperClassUserCacheUnitTest {
private WrapperClassUserCache cache = new WrapperClassUserCache();
@BeforeEach
public void setup() {
cache.storeById(new WrapperClassUserCache.CacheKey("a"), new User("User A"));
cache.storeById(new WrapperClassUserCache.CacheKey("b"), new User("User B"));
cache.storeById(new WrapperClassUserCache.CacheKey(3L), new User("User 3"));
cache.storeById(new WrapperClassUserCache.CacheKey(4L), new User("User 4"));
}
@Test
public void getByString() {
User user = cache.getById(new WrapperClassUserCache.CacheKey("b"));
assertNotNull(user);
assertEquals("User B", user.getName());
}
@Test
public void getByLong() {
User user = cache.getById(new WrapperClassUserCache.CacheKey(4L));
assertNotNull(user);
assertEquals("User 4", user.getName());
}
}
@@ -0,0 +1,33 @@
package com.baeldung.map.multikey;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
class WrapperInterfaceUserCacheUnitTest {
private WrapperInterfaceUserCache cache = new WrapperInterfaceUserCache();
@BeforeEach
public void setup() {
cache.storeById(new WrapperInterfaceUserCache.StringCacheKey("a"), new User("User A"));
cache.storeById(new WrapperInterfaceUserCache.StringCacheKey("b"), new User("User B"));
cache.storeById(new WrapperInterfaceUserCache.LongCacheKey(3L), new User("User 3"));
cache.storeById(new WrapperInterfaceUserCache.LongCacheKey(4L), new User("User 4"));
}
@Test
public void getByString() {
User user = cache.getById(new WrapperInterfaceUserCache.StringCacheKey("b"));
assertNotNull(user);
assertEquals("User B", user.getName());
}
@Test
public void getByLong() {
User user = cache.getById(new WrapperInterfaceUserCache.LongCacheKey(4L));
assertNotNull(user);
assertEquals("User 4", user.getName());
}
}
@@ -0,0 +1,22 @@
package com.baeldung.initializerblock.instanceblock;
public class InstanceBlockExample {
{
System.out.println("Instance initializer block 1");
}
{
System.out.println("Instance initializer block 2");
}
public InstanceBlockExample() {
System.out.println("Class constructor");
}
public static void main(String[] args) {
InstanceBlockExample iib = new InstanceBlockExample();
System.out.println("Main Method");
}
}
@@ -0,0 +1,17 @@
package com.baeldung.initializerblock.staticblock;
public class StaticBlockExample {
static {
System.out.println("static block 1");
}
static {
System.out.println("static block 2");
}
public static void main(String[] args) {
System.out.println("Main Method");
}
}
@@ -22,4 +22,22 @@
</resources>
</build>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,26 @@
package com.baeldung.intrange;
import org.apache.commons.lang3.Range;
public class IntRangeApacheCommons {
public static boolean isInClosedRange(Integer number, Integer lowerBound, Integer upperBound) {
final Range<Integer> range = Range.between(lowerBound, upperBound);
return range.contains(number);
}
public static boolean isInOpenRange(Integer number, Integer lowerBound, Integer upperBound) {
final Range<Integer> range = Range.between(lowerBound + 1, upperBound - 1);
return range.contains(number);
}
public static boolean isInOpenClosedRange(Integer number, Integer lowerBound, Integer upperBound) {
final Range<Integer> range = Range.between(lowerBound + 1, upperBound);
return range.contains(number);
}
public static boolean isInClosedOpenRange(Integer number, Integer lowerBound, Integer upperBound) {
final Range<Integer> range = Range.between(lowerBound, upperBound - 1);
return range.contains(number);
}
}
@@ -0,0 +1,26 @@
package com.baeldung.intrange;
import com.google.common.collect.Range;
public class IntRangeGoogleGuava {
public static boolean isInClosedRange(Integer number, Integer lowerBound, Integer upperBound) {
final Range<Integer> range = Range.closed(lowerBound, upperBound);
return range.contains(number);
}
public static boolean isInOpenRange(Integer number, Integer lowerBound, Integer upperBound) {
final Range<Integer> range = Range.open(lowerBound, upperBound);
return range.contains(number);
}
public static boolean isInOpenClosedRange(Integer number, Integer lowerBound, Integer upperBound) {
final Range<Integer> range = Range.openClosed(lowerBound, upperBound);
return range.contains(number);
}
public static boolean isInClosedOpenRange(Integer number, Integer lowerBound, Integer upperBound) {
final Range<Integer> range = Range.closedOpen(lowerBound, upperBound);
return range.contains(number);
}
}
@@ -0,0 +1,20 @@
package com.baeldung.intrange;
public class IntRangeOperators {
public static boolean isInClosedRange(Integer number, Integer lowerBound, Integer upperBound) {
return (lowerBound <= number && number <= upperBound);
}
public static boolean isInOpenRange(Integer number, Integer lowerBound, Integer upperBound) {
return (lowerBound < number && number < upperBound);
}
public static boolean isInOpenClosedRange(Integer number, Integer lowerBound, Integer upperBound) {
return (lowerBound < number && number <= upperBound);
}
public static boolean isInClosedOpenRange(Integer number, Integer lowerBound, Integer upperBound) {
return (lowerBound <= number && number < upperBound);
}
}
@@ -0,0 +1,26 @@
package com.baeldung.intrange;
import java.time.temporal.ValueRange;
public class IntRangeValueRange {
public static boolean isInClosedRange(Integer number, Integer lowerBound, Integer upperBound) {
final ValueRange range = ValueRange.of(lowerBound, upperBound);
return range.isValidIntValue(number);
}
public static boolean isInOpenRange(Integer number, Integer lowerBound, Integer upperBound) {
final ValueRange range = ValueRange.of(lowerBound + 1, upperBound - 1);
return range.isValidIntValue(number);
}
public static boolean isInOpenClosedRange(Integer number, Integer lowerBound, Integer upperBound) {
final ValueRange range = ValueRange.of(lowerBound + 1, upperBound);
return range.isValidIntValue(number);
}
public static boolean isInClosedOpenRange(Integer number, Integer lowerBound, Integer upperBound) {
final ValueRange range = ValueRange.of(lowerBound, upperBound - 1);
return range.isValidIntValue(number);
}
}
@@ -0,0 +1,97 @@
package com.baeldung.intrange;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
public class IntRangeApacheCommonsUnitTest {
@Test
void givenIntRangeApacheCommons_whenIsInClosedRange_thenSuccess() {
// when
boolean resultLowerBound = IntRangeApacheCommons.isInClosedRange(10, 10, 20);
boolean resultUpperBound = IntRangeApacheCommons.isInClosedRange(20, 10, 20);
// then
assertTrue(resultLowerBound);
assertTrue(resultUpperBound);
}
@Test
void givenIntRangeApacheCommons_whenIsNotInClosedRange_thenFailure() {
// when
boolean resultLowerBound = IntRangeApacheCommons.isInClosedRange(8, 10, 20);
boolean resultUpperBound = IntRangeApacheCommons.isInClosedRange(22, 10, 20);
// then
assertFalse(resultLowerBound);
assertFalse(resultUpperBound);
}
@Test
void givenIntRangeApacheCommons_whenIsInOpenRange_thenSuccess() {
// when
boolean resultLowerBound = IntRangeApacheCommons.isInOpenRange(11, 10, 20);
boolean resultUpperBound = IntRangeApacheCommons.isInOpenRange(19, 10, 20);
// then
assertTrue(resultLowerBound);
assertTrue(resultUpperBound);
}
@Test
void givenIntRangeApacheCommons_whenIsNotInOpenRange_thenFailure() {
// when
boolean resultLowerBound = IntRangeApacheCommons.isInOpenRange(10, 10, 20);
boolean resultUpperBound = IntRangeApacheCommons.isInOpenRange(20, 10, 20);
// then
assertFalse(resultLowerBound);
assertFalse(resultUpperBound);
}
@Test
void givenIntRangeApacheCommons_whenIsInOpenClosedRange_thenSuccess() {
// when
boolean resultLowerBound = IntRangeApacheCommons.isInOpenClosedRange(11, 10, 20);
boolean resultUpperBound = IntRangeApacheCommons.isInOpenClosedRange(20, 10, 20);
// then
assertTrue(resultLowerBound);
assertTrue(resultUpperBound);
}
@Test
void givenIntRangeApacheCommons_whenIsNotInOpenClosedRange_thenFailure() {
// when
boolean resultLowerBound = IntRangeApacheCommons.isInOpenClosedRange(10, 10, 20);
boolean resultUpperBound = IntRangeApacheCommons.isInOpenClosedRange(21, 10, 20);
// then
assertFalse(resultLowerBound);
assertFalse(resultUpperBound);
}
@Test
void givenIntRangeApacheCommons_whenIsInClosedOpenRange_thenSuccess() {
// when
boolean resultLowerBound = IntRangeApacheCommons.isInClosedOpenRange(10, 10, 20);
boolean resultUpperBound = IntRangeApacheCommons.isInClosedOpenRange(19, 10, 20);
// then
assertTrue(resultLowerBound);
assertTrue(resultUpperBound);
}
@Test
void givenIntRangeApacheCommons_whenIsNotInClosedOpenRange_thenFailure() {
// when
boolean resultLowerBound = IntRangeApacheCommons.isInClosedOpenRange(9, 10, 20);
boolean resultUpperBound = IntRangeApacheCommons.isInClosedOpenRange(20, 10, 20);
// then
assertFalse(resultLowerBound);
assertFalse(resultUpperBound);
}
}

Some files were not shown because too many files have changed in this diff Show More