From 69f8d56f3e2e3e8bebb2d364a561cd68418d6574 Mon Sep 17 00:00:00 2001
From: Sampada <46674082+sampada07@users.noreply.github.com>
Date: Fri, 6 Dec 2019 12:43:38 +0530
Subject: [PATCH] BAEL-3511 : Default parameters in Java (#8317)
* Added Assertj dependency
* Default parameter example POJO and test class
---
core-java-modules/core-java-lang-2/pom.xml | 115 ++++++++++--------
.../java/com/baeldung/defaultparams/Tea.java | 61 ++++++++++
.../baeldung/defaultparams/TeaUnitTest.java | 20 +++
3 files changed, 142 insertions(+), 54 deletions(-)
create mode 100644 core-java-modules/core-java-lang-2/src/main/java/com/baeldung/defaultparams/Tea.java
create mode 100644 core-java-modules/core-java-lang-2/src/test/java/com/baeldung/defaultparams/TeaUnitTest.java
diff --git a/core-java-modules/core-java-lang-2/pom.xml b/core-java-modules/core-java-lang-2/pom.xml
index 3230498f41..88e92aaf22 100644
--- a/core-java-modules/core-java-lang-2/pom.xml
+++ b/core-java-modules/core-java-lang-2/pom.xml
@@ -1,54 +1,61 @@
-
- 4.0.0
- core-java-lang-2
- 0.1.0-SNAPSHOT
- core-java-lang-2
- jar
-
-
- com.baeldung
- parent-java
- 0.0.1-SNAPSHOT
- ../../parent-java
-
-
-
-
- commons-beanutils
- commons-beanutils
- 1.9.4
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-generator.version}
-
-
- org.openjdk.jmh
- jmh-generator-bytecode
- ${jmh-generator.version}
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
-
-
- core-java-lang-2
-
-
- src/main/resources
- true
-
-
-
-
-
- 1.19
- 1.19
-
-
-
+
+ 4.0.0
+ core-java-lang-2
+ 0.1.0-SNAPSHOT
+ core-java-lang-2
+ jar
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ commons-beanutils
+ commons-beanutils
+ 1.9.4
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-generator.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-bytecode
+ ${jmh-generator.version}
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh-core.version}
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-lang-2
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 1.19
+ 1.19
+ 3.12.2
+
+
+
diff --git a/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/defaultparams/Tea.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/defaultparams/Tea.java
new file mode 100644
index 0000000000..0680813041
--- /dev/null
+++ b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/defaultparams/Tea.java
@@ -0,0 +1,61 @@
+package com.baeldung.defaultparams;
+
+public class Tea {
+
+ static final int DEFAULT_TEA_POWDER = 1; // add 1 tbsp tea powder by default
+
+ private String name; // mandatory
+ private int milk; // ml
+ private boolean herbs; // add herbs or don't
+ private int sugar; // tbsp
+ private int teaPowder; // tbsp
+
+ public Tea(String name, int milk, boolean herbs, int sugar, int teaPowder) {
+ this.name = name;
+ this.milk = milk;
+ this.herbs = herbs;
+ this.sugar = sugar;
+ this.teaPowder = teaPowder;
+ }
+
+ // when tea powder is not provided by client, use default value
+ public Tea(String name, int milk, boolean herbs, int sugar) {
+ this(name, milk, herbs, sugar, DEFAULT_TEA_POWDER);
+ }
+
+ // when sugar is not provided by client, don't add it
+ public Tea(String name, int milk, boolean herbs) {
+ this(name, milk, herbs, 0);
+ }
+
+ // when herbs is not provided by client, don't add it
+ public Tea(String name, int milk) {
+ this(name, milk, false);
+ }
+
+ // when milk is not provided by client, don't add it
+ public Tea(String name) {
+ this(name, 0);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getMilk() {
+ return milk;
+ }
+
+ public boolean isHerbs() {
+ return herbs;
+ }
+
+ public int getSugar() {
+ return sugar;
+ }
+
+ public int getTeaPowder() {
+ return teaPowder;
+ }
+
+}
diff --git a/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/defaultparams/TeaUnitTest.java b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/defaultparams/TeaUnitTest.java
new file mode 100644
index 0000000000..418e2788aa
--- /dev/null
+++ b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/defaultparams/TeaUnitTest.java
@@ -0,0 +1,20 @@
+package com.baeldung.defaultparams;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.Test;
+
+
+public class TeaUnitTest {
+
+ @Test
+ public void whenTeaWithOnlyName_thenCreateDefaultTea() {
+ Tea blackTea = new Tea("Black Tea");
+
+ assertThat(blackTea.getName()).isEqualTo("Black Tea");
+ assertThat(blackTea.getMilk()).isEqualTo(0);
+ assertThat(blackTea.isHerbs()).isFalse();
+ assertThat(blackTea.getSugar()).isEqualTo(0);
+ assertThat(blackTea.getTeaPowder()).isEqualTo(Tea.DEFAULT_TEA_POWDER);
+ }
+
+}