diff --git a/java-strings-2/pom.xml b/java-strings-2/pom.xml
index 9c27429139..7342953d15 100755
--- a/java-strings-2/pom.xml
+++ b/java-strings-2/pom.xml
@@ -57,6 +57,26 @@
commons-text
${commons-text.version}
+
+ javax.validation
+ validation-api
+ 2.0.0.Final
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 6.0.2.Final
+
+
+ javax.el
+ javax.el-api
+ 3.0.0
+
+
+ org.glassfish.web
+ javax.el
+ 2.2.6
+
@@ -86,7 +106,7 @@
3.8.1
61.1
- 27.0.1-jre
+ 28.0-jre
1.4
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java b/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java
new file mode 100644
index 0000000000..6d3234a4ec
--- /dev/null
+++ b/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java
@@ -0,0 +1,8 @@
+package com.baeldung.string.emptystrings;
+
+class EmptyStringCheck {
+
+ boolean isEmptyString(String string) {
+ return string == null || string.isEmpty();
+ }
+}
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java b/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java
new file mode 100644
index 0000000000..096b83acea
--- /dev/null
+++ b/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java
@@ -0,0 +1,8 @@
+package com.baeldung.string.emptystrings;
+
+class Java5EmptyStringCheck {
+
+ boolean isEmptyString(String string) {
+ return string == null || string.length() == 0;
+ }
+}
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java b/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java
new file mode 100644
index 0000000000..26e281c9b7
--- /dev/null
+++ b/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java
@@ -0,0 +1,8 @@
+package com.baeldung.string.emptystrings;
+
+class PlainJavaBlankStringCheck {
+
+ boolean isBlankString(String string) {
+ return string == null || string.trim().isEmpty();
+ }
+}
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java b/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java
new file mode 100644
index 0000000000..8c484efb43
--- /dev/null
+++ b/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java
@@ -0,0 +1,14 @@
+package com.baeldung.string.emptystrings;
+
+import javax.validation.constraints.Pattern;
+
+class SomeClassWithValidations {
+
+ @Pattern(regexp = "\\A(?!\\s*\\Z).+")
+ private String someString;
+
+ SomeClassWithValidations setSomeString(String someString) {
+ this.someString = someString;
+ return this;
+ }
+}
diff --git a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java b/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java
new file mode 100644
index 0000000000..96b1d681dd
--- /dev/null
+++ b/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java
@@ -0,0 +1,142 @@
+package com.baeldung.string.emptystrings;
+
+import static org.hamcrest.Matchers.iterableWithSize;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Set;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Test;
+
+import com.google.common.base.Strings;
+
+public class EmptyStringsUnitTest {
+
+ private String emptyString = "";
+ private String blankString = " \n\t ";
+ private String nonEmptyString = " someString ";
+
+ /*
+ * EmptyStringCheck
+ */
+ @Test
+ public void givenSomeEmptyString_thenEmptyStringCheckIsEmptyStringReturnsTrue() {
+ assertTrue(new EmptyStringCheck().isEmptyString(emptyString));
+ }
+
+ @Test
+ public void givenSomeNonEmptyString_thenEmptyStringCheckIsEmptyStringReturnsFalse() {
+ assertFalse(new EmptyStringCheck().isEmptyString(nonEmptyString));
+ }
+
+ @Test
+ public void givenSomeBlankString_thenEmptyStringCheckIsEmptyStringReturnsFalse() {
+ assertFalse(new EmptyStringCheck().isEmptyString(blankString));
+ }
+
+ /*
+ * Java5EmptyStringCheck
+ */
+ @Test
+ public void givenSomeEmptyString_thenJava5EmptyStringCheckIsEmptyStringReturnsTrue() {
+ assertTrue(new Java5EmptyStringCheck().isEmptyString(emptyString));
+ }
+
+ @Test
+ public void givenSomeNonEmptyString_thenJava5EmptyStringCheckIsEmptyStringReturnsFalse() {
+ assertFalse(new Java5EmptyStringCheck().isEmptyString(nonEmptyString));
+ }
+
+ @Test
+ public void givenSomeBlankString_thenJava5EmptyStringCheckIsEmptyStringReturnsFalse() {
+ assertFalse(new Java5EmptyStringCheck().isEmptyString(blankString));
+ }
+
+ /*
+ * PlainJavaBlankStringCheck
+ */
+ @Test
+ public void givenSomeEmptyString_thenPlainJavaBlankStringCheckIsBlankStringReturnsTrue() {
+ assertTrue(new PlainJavaBlankStringCheck().isBlankString(emptyString));
+ }
+
+ @Test
+ public void givenSomeNonEmptyString_thenPlainJavaBlankStringCheckIsBlankStringReturnsFalse() {
+ assertFalse(new PlainJavaBlankStringCheck().isBlankString(nonEmptyString));
+ }
+
+ @Test
+ public void givenSomeBlankString_thenPlainJavaBlankStringCheckIsBlankStringReturnsTrue() {
+ assertTrue(new PlainJavaBlankStringCheck().isBlankString(blankString));
+ }
+
+ /*
+ * Apache Commons Lang StringUtils
+ */
+ @Test
+ public void givenSomeEmptyString_thenStringUtilsIsBlankReturnsTrue() {
+ assertTrue(StringUtils.isBlank(emptyString));
+ }
+
+ @Test
+ public void givenSomeNonEmptyString_thenStringUtilsIsBlankReturnsFalse() {
+ assertFalse(StringUtils.isBlank(nonEmptyString));
+ }
+
+ @Test
+ public void givenSomeBlankString_thenStringUtilsIsBlankReturnsTrue() {
+ assertTrue(StringUtils.isBlank(blankString));
+ }
+
+ /*
+ * Google Guava Strings
+ */
+ @Test
+ public void givenSomeEmptyString_thenStringsIsNullOrEmptyStringReturnsTrue() {
+ assertTrue(Strings.isNullOrEmpty(emptyString));
+ }
+
+ @Test
+ public void givenSomeNonEmptyString_thenStringsIsNullOrEmptyStringReturnsFalse() {
+ assertFalse(Strings.isNullOrEmpty(nonEmptyString));
+ }
+
+ @Test
+ public void givenSomeBlankString_thenStringsIsNullOrEmptyStringReturnsFalse() {
+ assertFalse(Strings.isNullOrEmpty(blankString));
+ }
+
+ /*
+ * Bean Validation
+ */
+ private ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ private Validator validator = factory.getValidator();
+
+ @Test
+ public void givenSomeEmptyString_thenBeanValidationReturnsViolations() {
+ SomeClassWithValidations someClassWithValidations = new SomeClassWithValidations().setSomeString(emptyString);
+ Set> violations = validator.validate(someClassWithValidations);
+ assertThat(violations, iterableWithSize(1));
+ }
+
+ @Test
+ public void givenSomeNonEmptyString_thenBeanValidationValidatesWithoutViolations() {
+ SomeClassWithValidations someClassWithValidations = new SomeClassWithValidations().setSomeString(nonEmptyString);
+ Set> violations = validator.validate(someClassWithValidations);
+ assertThat(violations, iterableWithSize(0));
+ }
+
+ @Test
+ public void givenSomeBlankString_thenBeanValidationReturnsViolations() {
+ SomeClassWithValidations someClassWithValidations = new SomeClassWithValidations().setSomeString(blankString);
+ Set> violations = validator.validate(someClassWithValidations);
+ assertThat(violations, iterableWithSize(1));
+ }
+}