diff --git a/core-java/pom.xml b/core-java/pom.xml index 463b65a4ce..e8548600f8 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -129,6 +129,13 @@ system ${java.home}/../lib/tools.jar + + org.jetbrains + annotations + ${intellij.annotations.version} + + + @@ -209,7 +216,8 @@ true - + org.baeldung.executable.ExecutableMavenJar @@ -264,12 +272,12 @@ -Xmx300m -XX:+UseParallelGC -classpath - + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed - + org.apache.maven.plugins maven-javadoc-plugin @@ -330,7 +338,7 @@ java -classpath - + org.openjdk.jmh.Main .* @@ -363,7 +371,8 @@ true - ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + @@ -397,12 +406,14 @@ true - ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + com/baeldung/instrumentation/application/MyAtm.class - com/baeldung/instrumentation/application/MyAtmApplication.class + com/baeldung/instrumentation/application/MyAtmApplication.class + com/baeldung/instrumentation/application/Launcher.class @@ -432,12 +443,14 @@ true - ${project.build.outputDirectory}/META-INF/MANIFEST.MF + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + com/baeldung/instrumentation/agent/AtmTransformer.class - com/baeldung/instrumentation/agent/MyInstrumentationAgent.class + com/baeldung/instrumentation/agent/MyInstrumentationAgent.class + @@ -449,7 +462,7 @@ - + 2.8.2 @@ -470,12 +483,12 @@ 2.21.0 - + 1.1 1.4.197 2.1.0.1 1.19 - + 1.19 3.0.0-M1 3.0.2 @@ -486,7 +499,8 @@ 61.1 3.21.0-GA - + 1.8.0 + 16.0.2 diff --git a/core-java/src/main/java/com/baeldung/nulls/APIContracts.java b/core-java/src/main/java/com/baeldung/nulls/APIContracts.java new file mode 100644 index 0000000000..f8dfba25dd --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/APIContracts.java @@ -0,0 +1,29 @@ +package com.baeldung.nulls; + +public class APIContracts { + + /** + * Prints the value of {@code param} if not null. Prints {@code null} otherwise. + * @param param + */ + public void print(Object param) { + System.out.println("Printing " + param); + } + + /** + * + * @return non null result + * @throws Exception - if result is null + */ + public Object process() throws Exception { + Object result = doSomething(); + if (result == null) + throw new Exception("Processing fail. Got a null response"); + else + return result; + } + + private Object doSomething() { + return null; + } +} diff --git a/core-java/src/main/java/com/baeldung/nulls/Assertions.java b/core-java/src/main/java/com/baeldung/nulls/Assertions.java new file mode 100644 index 0000000000..a0d692623f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/Assertions.java @@ -0,0 +1,13 @@ +package com.baeldung.nulls; + +public class Assertions { + + public void accept(Object param){ + assert param != null; + + doSomething(param); + } + + private void doSomething(Object param) { + } +} diff --git a/core-java/src/main/java/com/baeldung/nulls/EmptyCollections.java b/core-java/src/main/java/com/baeldung/nulls/EmptyCollections.java new file mode 100644 index 0000000000..95e49e4e91 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/EmptyCollections.java @@ -0,0 +1,24 @@ +package com.baeldung.nulls; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class EmptyCollections { + + public List names(){ + if (userExist()) + return Stream.of(readName()).collect(Collectors.toList()); + else + return Collections.emptyList(); + } + + private boolean userExist() { + return false; + } + + private String readName() { + return "test"; + } +} diff --git a/core-java/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java b/core-java/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java new file mode 100644 index 0000000000..f879f033c9 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java @@ -0,0 +1,28 @@ +package com.baeldung.nulls; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class FindBugsAnnotations { + + public void accept(@Nonnull Object param) { + System.out.println(param.toString()); + } + + public void print(@Nullable Object param) { + System.out.println("Printing " + param); + } + + @Nonnull + public Object process() throws Exception { + Object result = doSomething(); + if (result == null) + throw new Exception("Processing fail. Got a null response"); + else + return result; + } + + private Object doSomething() { + return null; + } +} diff --git a/core-java/src/main/java/com/baeldung/nulls/Preconditions.java b/core-java/src/main/java/com/baeldung/nulls/Preconditions.java new file mode 100644 index 0000000000..ff32db46dd --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/Preconditions.java @@ -0,0 +1,32 @@ +package com.baeldung.nulls; + +public class Preconditions { + + public void goodAccept(String one, String two, String three) { + if (null == one || null == two || three == null) + throw new IllegalArgumentException(); + } + + public void badAccept(String one, String two, String three){ + if (null == one) + throw new IllegalArgumentException(); + else + process(one); + + if (null == two) + throw new IllegalArgumentException(); + else + process(two); + + if (null == three) + throw new IllegalArgumentException(); + else + process(three); + + } + + private void process(String one) { + } + + +} diff --git a/core-java/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java b/core-java/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java new file mode 100644 index 0000000000..dce7a05308 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java @@ -0,0 +1,24 @@ +package com.baeldung.nulls; + +public class PrimitivesAndWrapper { + + public static int sum(int a, int b) { + return a + b; + } + + public static Integer sum(Integer a, Integer b) { + return a + b; + } + + public static Integer goodSum(Integer a, Integer b) { + if (a != null && b != null) + return a + b; + else + throw new IllegalArgumentException(); + } + + public static void main(String[] args) { + sum(0, 0); + sum(null, null); + } +} diff --git a/core-java/src/main/java/com/baeldung/nulls/UsingLombok.java b/core-java/src/main/java/com/baeldung/nulls/UsingLombok.java new file mode 100644 index 0000000000..73db0742c8 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/UsingLombok.java @@ -0,0 +1,10 @@ +package com.baeldung.nulls; + +import lombok.NonNull; + +public class UsingLombok { + + public void accept(@NonNull Object param){ + System.out.println(param); + } +} diff --git a/core-java/src/main/java/com/baeldung/nulls/UsingObjects.java b/core-java/src/main/java/com/baeldung/nulls/UsingObjects.java new file mode 100644 index 0000000000..e8a3262ce7 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/UsingObjects.java @@ -0,0 +1,24 @@ +package com.baeldung.nulls; + +import java.util.Objects; + +public class UsingObjects { + + private String checked; + + public void accept(Object param) { + try { + Objects.requireNonNull(param); + } catch (NullPointerException e) { + //doSomethingElseToo + e.printStackTrace(); + } + } + + public void caller() throws Exception { + if (Objects.nonNull(checked)) + accept(checked); + else + throw new Exception(); + } +} diff --git a/core-java/src/main/java/com/baeldung/nulls/UsingOptional.java b/core-java/src/main/java/com/baeldung/nulls/UsingOptional.java new file mode 100644 index 0000000000..626afc311d --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/UsingOptional.java @@ -0,0 +1,23 @@ +package com.baeldung.nulls; + +import java.util.Optional; + +public class UsingOptional { + + public Optional process() { + if (isProcessed()) + return Optional.of("dummy"); + else + return Optional.empty(); + } + + public void caller() { + Optional result = process(); + result.ifPresent(p -> System.out.println(p)); + result.orElseThrow(() -> new IllegalArgumentException()); + } + + private boolean isProcessed() { + return false; + } +} diff --git a/core-java/src/main/java/com/baeldung/nulls/UsingStringUtils.java b/core-java/src/main/java/com/baeldung/nulls/UsingStringUtils.java new file mode 100644 index 0000000000..8cbf3752e1 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/nulls/UsingStringUtils.java @@ -0,0 +1,17 @@ +package com.baeldung.nulls; + + +import org.apache.commons.lang3.StringUtils; + +public class UsingStringUtils { + + public void accept(String param) { + if (StringUtils.isNotEmpty(param)) + System.out.println(param); + } + + public void acceptOnlyNonBlank(String param) { + if (StringUtils.isNotBlank(param)) + System.out.println(param); + } +}