diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidator.java b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidator.java index 4e85e307fcd07374324e90daf2e7c28889a86f10..d9a9891137ceacbf3606ffd35d5e4b4561c15f58 100644 --- a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidator.java +++ b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidator.java @@ -19,6 +19,7 @@ */ package org.olat.resource.accesscontrol.provider.auto.manager; +import org.olat.core.util.StringHelper; import org.olat.resource.accesscontrol.provider.auto.AdvanceOrderInput; import org.springframework.stereotype.Component; @@ -40,7 +41,7 @@ class InputValidator { } else { isValid &= notNull(input.getIdentity()); isValid &= notNull(input.getMethodClass()); - isValid &= notNull(input.getRawValues()); + isValid &= StringHelper.containsNonWhitespace(input.getRawValues()); if (input.getKeys() == null) { isValid &= false; diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitter.java b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitter.java index 67e7e2f24053c6d3325f489141e90b196e6abda9..7ac3a63c51f44b5da6273bc9d72335f538522a64 100644 --- a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitter.java +++ b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitter.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import org.olat.core.util.StringHelper; import org.springframework.stereotype.Component; @@ -44,7 +45,7 @@ public class SemicolonSplitter implements IdentifierValueSplitter { @Override public Collection<String> split(String rawValue) { - if (rawValue == null) return new ArrayList<>(); + if (!StringHelper.containsNonWhitespace(rawValue)) return new ArrayList<>(); return Arrays.asList(rawValue.split(";")); } diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SplitterFactory.java b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SplitterFactory.java index 21127752c0623c4b4ecbce11137e1ce9851d32ea..f0e7d41248d34133de05dc990de499370a23190b 100644 --- a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SplitterFactory.java +++ b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SplitterFactory.java @@ -25,6 +25,7 @@ import java.util.Map; import javax.annotation.PostConstruct; +import org.olat.core.util.StringHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -51,7 +52,7 @@ public class SplitterFactory { public IdentifierValueSplitter getSplitter(String type) { IdentifierValueSplitter splitter = cache.get(type); - if (splitter == null) { + if (!StringHelper.containsNonWhitespace(type)) { splitter = cache.get(SemicolonSplitter.TYPE); } return splitter; diff --git a/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidatorTest.java b/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidatorTest.java index a828cbd122ccf9612dcc85e186accaf7cfe7bd6f..451217d20955e62c17fc7d6049dd6dd2e79a4ce7 100644 --- a/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidatorTest.java +++ b/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidatorTest.java @@ -110,6 +110,16 @@ public class InputValidatorTest { assertThat(isValid).isFalse(); } + + @Test + public void shouldNotBeValidIfRawValuesIsEmptyString() { + when(inputMock.getRawValues()).thenReturn(""); + + boolean isValid = sut.isValid(inputMock); + + assertThat(isValid).isFalse(); + } + @Test public void shouldNotBeValidIfMethodDoesNotExist() { when(inputMock.getIdentity()).thenReturn(null); diff --git a/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitterTest.java b/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitterTest.java index 25e78ecd8c529000aadc6f1252b20d6d98c74e1a..13a8d7388e99688828867465eb3f0a34b96976c0 100644 --- a/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitterTest.java +++ b/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitterTest.java @@ -67,6 +67,12 @@ public class SemicolonSplitterTest { public void shouldReturnEmptyCollectionIfNullInput() { Collection<String> values = sut.split(null); + assertThat(values).hasSize(0); + } + @Test + public void shouldReturnEmptyCollectionIfEmptyStringInput() { + Collection<String> values = sut.split(""); + assertThat(values).hasSize(0); } }