This is an automated email from the ASF dual-hosted git repository. tmaret pushed a commit to branch SLING-8907 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-journal.git
commit b214617d5570b5dffd10a98fc1f512df90ec81b7 Author: tmaret <[email protected]> AuthorDate: Fri Jul 16 11:40:33 2021 +0200 SLING-8907 - Journal distribution agents with empty names are invalid --- .../impl/publisher/DistributionPublisher.java | 3 +- .../impl/subscriber/DistributionSubscriber.java | 3 +- .../sling/distribution/journal/shared/Strings.java | 32 +++++++++++++++ .../distribution/journal/shared/StringsTest.java | 48 ++++++++++++++++++++++ 4 files changed, 84 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java index e4adb8a..8ee0d6f 100644 --- a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java +++ b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java @@ -25,6 +25,7 @@ import static org.apache.sling.distribution.DistributionRequestType.ADD; import static org.apache.sling.distribution.DistributionRequestType.DELETE; import static org.apache.sling.distribution.DistributionRequestType.TEST; import static org.apache.sling.distribution.journal.shared.DistributionMetricsService.timed; +import static org.apache.sling.distribution.journal.shared.Strings.requireNotBlank; import java.io.Closeable; import java.util.Collections; @@ -152,7 +153,7 @@ public class DistributionPublisher implements DistributionAgent { public void activate(PublisherConfiguration config, BundleContext context) { requireNonNull(factory); requireNonNull(distributionMetricsService); - pubAgentName = requireNonNull(config.name()); + pubAgentName = requireNotBlank(config.name()); queuedTimeout = config.queuedTimeout(); diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java index 9e676d9..9460068 100644 --- a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java +++ b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java @@ -25,6 +25,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.stream.Collectors.toSet; import static org.apache.sling.distribution.journal.RunnableUtil.startBackgroundThread; import static org.apache.sling.distribution.journal.shared.Delay.exponential; +import static org.apache.sling.distribution.journal.shared.Strings.requireNotBlank; import java.io.Closeable; import java.io.IOException; @@ -157,7 +158,7 @@ public class DistributionSubscriber { @Activate public void activate(SubscriberConfiguration config, BundleContext context, Map<String, Object> properties) { String subSlingId = requireNonNull(slingSettings.getSlingId()); - subAgentName = requireNonNull(config.name()); + subAgentName = requireNotBlank(config.name()); requireNonNull(config); requireNonNull(context); requireNonNull(packageBuilder); diff --git a/src/main/java/org/apache/sling/distribution/journal/shared/Strings.java b/src/main/java/org/apache/sling/distribution/journal/shared/Strings.java new file mode 100644 index 0000000..5d2e8dd --- /dev/null +++ b/src/main/java/org/apache/sling/distribution/journal/shared/Strings.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.sling.distribution.journal.shared; + +import org.apache.commons.lang3.StringUtils; + +public final class Strings { + + public static String requireNotBlank(String value) { + if (StringUtils.isBlank(value)) { + throw new IllegalArgumentException("Can't be blank"); + } + return value; + } + +} diff --git a/src/test/java/org/apache/sling/distribution/journal/shared/StringsTest.java b/src/test/java/org/apache/sling/distribution/journal/shared/StringsTest.java new file mode 100644 index 0000000..62b3f57 --- /dev/null +++ b/src/test/java/org/apache/sling/distribution/journal/shared/StringsTest.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.sling.distribution.journal.shared; + +import org.junit.Test; + +import static org.apache.sling.distribution.journal.shared.Strings.requireNotBlank; +import static org.junit.Assert.assertEquals; + +public class StringsTest { + + @Test + public void requireNotBlankTest() { + String value = "a"; + assertEquals(value, requireNotBlank(value)); + } + + @Test(expected = IllegalArgumentException.class) + public void requireNotBlankFailedTest1() { + requireNotBlank(null); + } + + @Test(expected = IllegalArgumentException.class) + public void requireNotBlankFailedTest2() { + requireNotBlank(""); + } + + @Test(expected = IllegalArgumentException.class) + public void requireNotBlankFailedTest3() { + requireNotBlank(" "); + } +} \ No newline at end of file
