From e6f4682ab7bd400cea3d61e43753abf27ea732ef Mon Sep 17 00:00:00 2001 From: Thomas Vitale Date: Sun, 24 Mar 2024 15:27:49 +0100 Subject: [PATCH] refactor: Consolidate exception handling, logging, and JavaDocs Signed-off-by: Thomas Vitale --- arconia-core/build.gradle | 2 +- .../cache/DefaultTenantKeyGenerator.java | 2 -- .../multitenancy/cache/TenantKeyGenerator.java | 2 -- .../multitenancy/context/TenantContextHolder.java | 10 ++++------ .../events/HolderTenantContextEventListener.java | 2 -- .../events/MdcTenantContextEventListener.java | 12 ++++++++---- .../ObservationTenantContextEventListener.java | 14 +++++++++----- .../context/events/TenantContextAttachedEvent.java | 2 -- .../context/events/TenantContextClosedEvent.java | 2 -- .../context/resolvers/FixedTenantResolver.java | 4 +--- .../context/resolvers/TenantResolver.java | 2 -- .../events/DefaultTenantEventPublisher.java | 2 -- .../core/multitenancy/events/TenantEvent.java | 4 +--- .../multitenancy/events/TenantEventListener.java | 2 -- .../multitenancy/events/TenantEventPublisher.java | 2 -- .../exceptions/TenantNotFoundException.java | 2 -- .../exceptions/TenantResolutionException.java | 2 -- .../cache/DefaultTenantKeyGeneratorTests.java | 4 +--- .../context/TenantContextHolderTests.java | 6 ++---- .../HolderTenantContextEventListenerTests.java | 2 -- .../events/MdcTenantContextEventListenerTests.java | 6 ++---- ...ObservationTenantContextEventListenerTests.java | 6 ++---- .../resolvers/FixedTenantResolverTests.java | 6 ++---- .../events/DefaultTenantEventPublisherTests.java | 2 -- .../core/multitenancy/events/TenantEventTests.java | 6 ++---- .../exceptions/TenantNotFoundExceptionTests.java | 2 -- .../exceptions/TenantResolutionExceptionTests.java | 2 -- .../core}/FixedTenantResolutionProperties.java | 4 +--- .../core}/MultitenancyCoreAutoConfiguration.java | 4 +--- .../core}/TenantManagementProperties.java | 4 +--- .../web}/HttpTenantResolutionConfiguration.java | 6 ++---- .../web}/HttpTenantResolutionProperties.java | 4 +--- .../web}/MultitenancyWebAutoConfiguration.java | 6 ++---- ...rk.boot.autoconfigure.AutoConfiguration.imports | 4 ++-- .../MultitenancyCoreAutoConfigurationTests.java | 4 +--- .../MultitenancyWebAutoConfigurationTests.java | 6 ++---- .../context/filters/TenantContextFilter.java | 2 -- .../filters/TenantContextIgnorePathMatcher.java | 6 ++---- .../context/resolvers/CookieTenantResolver.java | 4 +--- .../context/resolvers/HeaderTenantResolver.java | 4 +--- .../resolvers/HttpRequestTenantResolver.java | 2 -- .../context/filters/TenantContextFilterTests.java | 2 -- .../TenantContextIgnorePathMatcherTests.java | 2 -- .../resolvers/CookieTenantResolverTests.java | 6 ++---- .../resolvers/HeaderTenantResolverTests.java | 6 ++---- 45 files changed, 56 insertions(+), 130 deletions(-) rename arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/{core/multitenancy => multitenancy/core}/FixedTenantResolutionProperties.java (92%) rename arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/{core/multitenancy => multitenancy/core}/MultitenancyCoreAutoConfiguration.java (97%) rename arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/{core/multitenancy => multitenancy/core}/TenantManagementProperties.java (97%) rename arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/{web/multitenancy => multitenancy/web}/HttpTenantResolutionConfiguration.java (96%) rename arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/{web/multitenancy => multitenancy/web}/HttpTenantResolutionProperties.java (97%) rename arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/{web/multitenancy => multitenancy/web}/MultitenancyWebAutoConfiguration.java (78%) rename arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/{core/multitenancy => multitenancy/core}/MultitenancyCoreAutoConfigurationTests.java (97%) rename arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/{web/multitenancy => multitenancy/web}/MultitenancyWebAutoConfigurationTests.java (96%) diff --git a/arconia-core/build.gradle b/arconia-core/build.gradle index 9e321f3..78fd8b8 100644 --- a/arconia-core/build.gradle +++ b/arconia-core/build.gradle @@ -17,7 +17,7 @@ publishing { mavenJava(MavenPublication) { pom { name = "Arconia Core" - description = "Core interfaces and classes used by the Arconia framework." + description = "Arconia Core." } } } diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/cache/DefaultTenantKeyGenerator.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/cache/DefaultTenantKeyGenerator.java index 1ebf49f..566057e 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/cache/DefaultTenantKeyGenerator.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/cache/DefaultTenantKeyGenerator.java @@ -9,8 +9,6 @@ /** * An implementation of {@link TenantKeyGenerator} that generates cache keys combining the * current tenant identifier with the given method and parameters. - * - * @author Thomas Vitale */ public final class DefaultTenantKeyGenerator implements TenantKeyGenerator { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/cache/TenantKeyGenerator.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/cache/TenantKeyGenerator.java index 6c21c0b..9bfa33f 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/cache/TenantKeyGenerator.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/cache/TenantKeyGenerator.java @@ -5,8 +5,6 @@ /** * Cache key generator. Used for creating a tenant-aware key based on the given method * (used as context) and its parameters. - * - * @author Thomas Vitale */ @FunctionalInterface public interface TenantKeyGenerator extends KeyGenerator { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/TenantContextHolder.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/TenantContextHolder.java index a081f27..6e6af94 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/TenantContextHolder.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/TenantContextHolder.java @@ -10,12 +10,10 @@ /** * A shared, thread-local store for the current tenant. - * - * @author Thomas Vitale */ public final class TenantContextHolder { - private static final Logger log = LoggerFactory.getLogger(TenantContextHolder.class); + private static final Logger logger = LoggerFactory.getLogger(TenantContextHolder.class); private static final ThreadLocal tenantIdentifier = new ThreadLocal<>(); @@ -23,8 +21,8 @@ private TenantContextHolder() { } public static void setTenantIdentifier(String tenant) { - Assert.hasText(tenant, "tenant cannot be empty"); - log.trace("Setting current tenant to: {}", tenant); + Assert.hasText(tenant, "tenant cannot be null or empty"); + logger.debug("Setting current tenant to: {}", tenant); tenantIdentifier.set(tenant); } @@ -42,7 +40,7 @@ public static String getRequiredTenantIdentifier() { } public static void clear() { - log.trace("Clearing current tenant"); + logger.debug("Clearing current tenant"); tenantIdentifier.remove(); } diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/HolderTenantContextEventListener.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/HolderTenantContextEventListener.java index bd990a0..44bb4e9 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/HolderTenantContextEventListener.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/HolderTenantContextEventListener.java @@ -7,8 +7,6 @@ /** * A {@link TenantEventListener} that sets/clears the tenant identifier from the current * context on the {@link TenantContextHolder}. - * - * @author Thomas Vitale */ public final class HolderTenantContextEventListener implements TenantEventListener { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/MdcTenantContextEventListener.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/MdcTenantContextEventListener.java index d5b369d..0dd8163 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/MdcTenantContextEventListener.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/MdcTenantContextEventListener.java @@ -1,5 +1,7 @@ package io.arconia.core.multitenancy.context.events; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.slf4j.MDC; import org.springframework.util.Assert; @@ -9,12 +11,12 @@ /** * A {@link TenantEventListener} that sets/clears the tenant identifier from the current * context on the SLF4J's {@link MDC}. - * - * @author Thomas Vitale */ public final class MdcTenantContextEventListener implements TenantEventListener { - public static final String DEFAULT_TENANT_IDENTIFIER_KEY = "tenantId"; + private static final Logger logger = LoggerFactory.getLogger(MdcTenantContextEventListener.class); + + private static final String DEFAULT_TENANT_IDENTIFIER_KEY = "tenantId"; private final String tenantIdentifierKey; @@ -23,16 +25,18 @@ public MdcTenantContextEventListener() { } public MdcTenantContextEventListener(String tenantIdentifierKey) { - Assert.hasText(tenantIdentifierKey, "tenantIdentifierKey cannot be empty"); + Assert.hasText(tenantIdentifierKey, "tenantIdentifierKey cannot be null or empty"); this.tenantIdentifierKey = tenantIdentifierKey; } @Override public void onApplicationEvent(TenantEvent tenantEvent) { if (tenantEvent instanceof TenantContextAttachedEvent event) { + logger.trace("Setting current tenant in MDC to: {}", event.getTenantIdentifier()); MDC.put(tenantIdentifierKey, event.getTenantIdentifier()); } else if (tenantEvent instanceof TenantContextClosedEvent) { + logger.trace("Removing current tenant from MDC to"); MDC.remove(tenantIdentifierKey); } } diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/ObservationTenantContextEventListener.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/ObservationTenantContextEventListener.java index c338250..14a83b7 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/ObservationTenantContextEventListener.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/ObservationTenantContextEventListener.java @@ -3,6 +3,8 @@ import io.micrometer.common.KeyValue; import io.micrometer.observation.Observation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.util.Assert; import io.arconia.core.multitenancy.events.TenantEvent; @@ -11,14 +13,14 @@ /** * A {@link TenantEventListener} that sets the tenant identifier from the current context * on an existing {@link Observation}. - * - * @author Thomas Vitale */ public class ObservationTenantContextEventListener implements TenantEventListener { - public static final Cardinality DEFAULT_CARDINALITY = Cardinality.HIGH; + private static final Logger logger = LoggerFactory.getLogger(ObservationTenantContextEventListener.class); - public static final String DEFAULT_TENANT_IDENTIFIER_KEY = "tenant.id"; + protected static final Cardinality DEFAULT_CARDINALITY = Cardinality.HIGH; + + protected static final String DEFAULT_TENANT_IDENTIFIER_KEY = "tenant.id"; private final Cardinality cardinality; @@ -29,7 +31,7 @@ public ObservationTenantContextEventListener() { } public ObservationTenantContextEventListener(String tenantIdentifierKey, Cardinality cardinality) { - Assert.hasText(tenantIdentifierKey, "tenantIdentifierKey cannot be empty"); + Assert.hasText(tenantIdentifierKey, "tenantIdentifierKey cannot be null or empty"); Assert.notNull(cardinality, "cardinality cannot be null"); this.tenantIdentifierKey = tenantIdentifierKey; this.cardinality = cardinality; @@ -47,6 +49,8 @@ private void onTenantContextAttached(TenantContextAttachedEvent event) { return; } + logger.trace("Enhancing current observation with tenant context for: {}", event.getTenantIdentifier()); + switch (cardinality) { case LOW -> event.getObservationContext() .addLowCardinalityKeyValue(KeyValue.of(tenantIdentifierKey, event.getTenantIdentifier())); diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/TenantContextAttachedEvent.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/TenantContextAttachedEvent.java index d454a53..e3fb836 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/TenantContextAttachedEvent.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/TenantContextAttachedEvent.java @@ -10,8 +10,6 @@ /** * A {@link TenantEvent} which indicates a tenant has been attached to the current * context. - * - * @author Thomas Vitale */ public final class TenantContextAttachedEvent extends TenantEvent { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/TenantContextClosedEvent.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/TenantContextClosedEvent.java index bd4487a..470dee0 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/TenantContextClosedEvent.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/events/TenantContextClosedEvent.java @@ -5,8 +5,6 @@ /** * A {@link TenantEvent} which indicates the context for the current tenant has been * closed. - * - * @author Thomas Vitale */ public final class TenantContextClosedEvent extends TenantEvent { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/resolvers/FixedTenantResolver.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/resolvers/FixedTenantResolver.java index 575eab5..8da81ee 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/resolvers/FixedTenantResolver.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/resolvers/FixedTenantResolver.java @@ -5,8 +5,6 @@ /** * Strategy to use a fixed value as the current tenant, regardless of the source context. - * - * @author Thomas Vitale */ public final class FixedTenantResolver implements TenantResolver { @@ -19,7 +17,7 @@ public FixedTenantResolver() { } public FixedTenantResolver(String tenantIdentifier) { - Assert.hasText(tenantIdentifier, "tenantIdentifier cannot be empty"); + Assert.hasText(tenantIdentifier, "tenantIdentifier cannot be null or empty"); this.fixedTenantIdentifier = tenantIdentifier; } diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/resolvers/TenantResolver.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/resolvers/TenantResolver.java index b581466..0833cef 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/context/resolvers/TenantResolver.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/context/resolvers/TenantResolver.java @@ -4,8 +4,6 @@ /** * Strategy used to resolve the current tenant from a given source context. - * - * @author Thomas Vitale */ @FunctionalInterface public interface TenantResolver { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/events/DefaultTenantEventPublisher.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/events/DefaultTenantEventPublisher.java index b682bce..9d710b8 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/events/DefaultTenantEventPublisher.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/events/DefaultTenantEventPublisher.java @@ -6,8 +6,6 @@ /** * An implementation of {@link TenantEventPublisher} that uses Spring's event publishing * support. - * - * @author Thomas Vitale */ public class DefaultTenantEventPublisher implements TenantEventPublisher { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEvent.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEvent.java index 2d6b50e..6e25428 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEvent.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEvent.java @@ -5,8 +5,6 @@ /** * Abstract superclass for all tenant-related events. - * - * @author Thomas Vitale */ public abstract class TenantEvent extends ApplicationEvent { @@ -14,7 +12,7 @@ public abstract class TenantEvent extends ApplicationEvent { public TenantEvent(String tenantIdentifier, Object source) { super(source); - Assert.hasText(tenantIdentifier, "tenantIdentifier cannot be empty"); + Assert.hasText(tenantIdentifier, "tenantIdentifier cannot be null or empty"); this.tenantIdentifier = tenantIdentifier; } diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEventListener.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEventListener.java index eda31ae..c14d633 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEventListener.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEventListener.java @@ -4,8 +4,6 @@ /** * A listener for {@link TenantEvent}s. - * - * @author Thomas Vitale */ @FunctionalInterface public interface TenantEventListener extends ApplicationListener { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEventPublisher.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEventPublisher.java index a101198..6014ba8 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEventPublisher.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/events/TenantEventPublisher.java @@ -2,8 +2,6 @@ /** * A contract for publishing {@link TenantEvent}s. - * - * @author Thomas Vitale */ @FunctionalInterface public interface TenantEventPublisher { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/exceptions/TenantNotFoundException.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/exceptions/TenantNotFoundException.java index d600024..3ec2b47 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/exceptions/TenantNotFoundException.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/exceptions/TenantNotFoundException.java @@ -2,8 +2,6 @@ /** * Thrown when no tenant information is found in a given context. - * - * @author Thomas Vitale */ public class TenantNotFoundException extends IllegalStateException { diff --git a/arconia-core/src/main/java/io/arconia/core/multitenancy/exceptions/TenantResolutionException.java b/arconia-core/src/main/java/io/arconia/core/multitenancy/exceptions/TenantResolutionException.java index e473631..55534eb 100644 --- a/arconia-core/src/main/java/io/arconia/core/multitenancy/exceptions/TenantResolutionException.java +++ b/arconia-core/src/main/java/io/arconia/core/multitenancy/exceptions/TenantResolutionException.java @@ -2,8 +2,6 @@ /** * Thrown when an error occurred during the tenant resolution process. - * - * @author Thomas Vitale */ public class TenantResolutionException extends IllegalStateException { diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/cache/DefaultTenantKeyGeneratorTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/cache/DefaultTenantKeyGeneratorTests.java index 704768d..cabc6d5 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/cache/DefaultTenantKeyGeneratorTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/cache/DefaultTenantKeyGeneratorTests.java @@ -11,12 +11,10 @@ /** * Unit tests for {@link DefaultTenantKeyGenerator}. - * - * @author Thomas Vitale */ class DefaultTenantKeyGeneratorTests { - DefaultTenantKeyGenerator keyGenerator = new DefaultTenantKeyGenerator(); + private final DefaultTenantKeyGenerator keyGenerator = new DefaultTenantKeyGenerator(); @Test void whenTenantContextDefinedThenGenerateCacheKey() { diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/TenantContextHolderTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/TenantContextHolderTests.java index f6c60e2..57a0d12 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/TenantContextHolderTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/TenantContextHolderTests.java @@ -9,8 +9,6 @@ /** * Unit tests for {@link TenantContextHolder}. - * - * @author Thomas Vitale */ class TenantContextHolderTests { @@ -25,14 +23,14 @@ void setValidTenantContext() { void setNullTenantContext() { assertThatThrownBy(() -> TenantContextHolder.setTenantIdentifier(null)) .isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenant cannot be empty"); + .hasMessageContaining("tenant cannot be null or empty"); } @Test void setEmptyTenantContext() { assertThatThrownBy(() -> TenantContextHolder.setTenantIdentifier("")) .isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenant cannot be empty"); + .hasMessageContaining("tenant cannot be null or empty"); } @Test diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/HolderTenantContextEventListenerTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/HolderTenantContextEventListenerTests.java index 21e61ff..523aa19 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/HolderTenantContextEventListenerTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/HolderTenantContextEventListenerTests.java @@ -8,8 +8,6 @@ /** * Unit tests for {@link HolderTenantContextEventListener}. - * - * @author Thomas Vitale */ class HolderTenantContextEventListenerTests { diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/MdcTenantContextEventListenerTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/MdcTenantContextEventListenerTests.java index 6b66159..b98f05e 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/MdcTenantContextEventListenerTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/MdcTenantContextEventListenerTests.java @@ -8,21 +8,19 @@ /** * Unit tests for {@link MdcTenantContextEventListener}. - * - * @author Thomas Vitale */ class MdcTenantContextEventListenerTests { @Test void whenNullCustomValueThenThrow() { assertThatThrownBy(() -> new MdcTenantContextEventListener(null)).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantIdentifierKey cannot be empty"); + .hasMessageContaining("tenantIdentifierKey cannot be null or empty"); } @Test void whenEmptyCustomValueThenThrow() { assertThatThrownBy(() -> new MdcTenantContextEventListener("")).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantIdentifierKey cannot be empty"); + .hasMessageContaining("tenantIdentifierKey cannot be null or empty"); } @Test diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/ObservationTenantContextEventListenerTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/ObservationTenantContextEventListenerTests.java index 5854ee5..05c461a 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/ObservationTenantContextEventListenerTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/events/ObservationTenantContextEventListenerTests.java @@ -10,8 +10,6 @@ /** * Unit tests for {@link ObservationTenantContextEventListener}. - * - * @author Thomas Vitale */ class ObservationTenantContextEventListenerTests { @@ -27,7 +25,7 @@ void whenEmptyTenantKeyThenThrow() { assertThatThrownBy(() -> new ObservationTenantContextEventListener("", ObservationTenantContextEventListener.Cardinality.HIGH)) .isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantIdentifierKey cannot be empty"); + .hasMessageContaining("tenantIdentifierKey cannot be null or empty"); } @Test @@ -35,7 +33,7 @@ void whenNullTenantKeyThenThrow() { assertThatThrownBy(() -> new ObservationTenantContextEventListener(null, ObservationTenantContextEventListener.Cardinality.HIGH)) .isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantIdentifierKey cannot be empty"); + .hasMessageContaining("tenantIdentifierKey cannot be null or empty"); } @Test diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/resolvers/FixedTenantResolverTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/resolvers/FixedTenantResolverTests.java index 691a8ae..984804a 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/context/resolvers/FixedTenantResolverTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/context/resolvers/FixedTenantResolverTests.java @@ -7,21 +7,19 @@ /** * Unit tests for {@link FixedTenantResolver}. - * - * @author Thomas Vitale */ class FixedTenantResolverTests { @Test void whenNullCustomValueThenThrow() { assertThatThrownBy(() -> new FixedTenantResolver(null)).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantIdentifier cannot be empty"); + .hasMessageContaining("tenantIdentifier cannot be null or empty"); } @Test void whenEmptyCustomValueThenThrow() { assertThatThrownBy(() -> new FixedTenantResolver("")).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantIdentifier cannot be empty"); + .hasMessageContaining("tenantIdentifier cannot be null or empty"); } @Test diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/events/DefaultTenantEventPublisherTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/events/DefaultTenantEventPublisherTests.java index 7a315da..44881d8 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/events/DefaultTenantEventPublisherTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/events/DefaultTenantEventPublisherTests.java @@ -10,8 +10,6 @@ /** * Unit tests for {@link DefaultTenantEventPublisher}. - * - * @author Thomas Vitale */ class DefaultTenantEventPublisherTests { diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/events/TenantEventTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/events/TenantEventTests.java index 6b8ddf3..c9798ad 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/events/TenantEventTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/events/TenantEventTests.java @@ -6,21 +6,19 @@ /** * Unit tests for {@link TenantEvent}. - * - * @author Thomas Vitale */ class TenantEventTests { @Test void whenNullTenantIdentifierThenThrow() { assertThatThrownBy(() -> new TestTenantEvent(null, this)).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantIdentifier cannot be empty"); + .hasMessageContaining("tenantIdentifier cannot be null or empty"); } @Test void whenEmptyTenantIdentifierThenThrow() { assertThatThrownBy(() -> new TestTenantEvent("", this)).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantIdentifier cannot be empty"); + .hasMessageContaining("tenantIdentifier cannot be null or empty"); } @Test diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/exceptions/TenantNotFoundExceptionTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/exceptions/TenantNotFoundExceptionTests.java index 43a0fe2..f2c6269 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/exceptions/TenantNotFoundExceptionTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/exceptions/TenantNotFoundExceptionTests.java @@ -6,8 +6,6 @@ /** * Unit tests for {@link TenantNotFoundException}. - * - * @author Thomas Vitale */ class TenantNotFoundExceptionTests { diff --git a/arconia-core/src/test/java/io/arconia/core/multitenancy/exceptions/TenantResolutionExceptionTests.java b/arconia-core/src/test/java/io/arconia/core/multitenancy/exceptions/TenantResolutionExceptionTests.java index 05b5352..e00a7cf 100644 --- a/arconia-core/src/test/java/io/arconia/core/multitenancy/exceptions/TenantResolutionExceptionTests.java +++ b/arconia-core/src/test/java/io/arconia/core/multitenancy/exceptions/TenantResolutionExceptionTests.java @@ -6,8 +6,6 @@ /** * Unit tests for {@link TenantResolutionException}. - * - * @author Thomas Vitale */ class TenantResolutionExceptionTests { diff --git a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/FixedTenantResolutionProperties.java b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/FixedTenantResolutionProperties.java similarity index 92% rename from arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/FixedTenantResolutionProperties.java rename to arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/FixedTenantResolutionProperties.java index 6bf8538..63cfd4f 100644 --- a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/FixedTenantResolutionProperties.java +++ b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/FixedTenantResolutionProperties.java @@ -1,11 +1,9 @@ -package io.arconia.autoconfigure.core.multitenancy; +package io.arconia.autoconfigure.multitenancy.core; import org.springframework.boot.context.properties.ConfigurationProperties; /** * Configuration properties for fixed tenant resolution. - * - * @author Thomas Vitale */ @ConfigurationProperties(prefix = FixedTenantResolutionProperties.CONFIG_PREFIX) public class FixedTenantResolutionProperties { diff --git a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/MultitenancyCoreAutoConfiguration.java b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/MultitenancyCoreAutoConfiguration.java similarity index 97% rename from arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/MultitenancyCoreAutoConfiguration.java rename to arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/MultitenancyCoreAutoConfiguration.java index 885100e..a6b582e 100644 --- a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/MultitenancyCoreAutoConfiguration.java +++ b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/MultitenancyCoreAutoConfiguration.java @@ -1,4 +1,4 @@ -package io.arconia.autoconfigure.core.multitenancy; +package io.arconia.autoconfigure.multitenancy.core; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -18,8 +18,6 @@ /** * Auto-configuration for core multitenancy. - * - * @author Thomas Vitale */ @AutoConfiguration @EnableConfigurationProperties({ FixedTenantResolutionProperties.class, TenantManagementProperties.class }) diff --git a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/TenantManagementProperties.java b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/TenantManagementProperties.java similarity index 97% rename from arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/TenantManagementProperties.java rename to arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/TenantManagementProperties.java index a8fd5e4..2a70672 100644 --- a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/core/multitenancy/TenantManagementProperties.java +++ b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/core/TenantManagementProperties.java @@ -1,4 +1,4 @@ -package io.arconia.autoconfigure.core.multitenancy; +package io.arconia.autoconfigure.multitenancy.core; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -6,8 +6,6 @@ /** * Configuration properties for tenant management. - * - * @author Thomas Vitale */ @ConfigurationProperties(prefix = TenantManagementProperties.CONFIG_PREFIX) public class TenantManagementProperties { diff --git a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/HttpTenantResolutionConfiguration.java b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/HttpTenantResolutionConfiguration.java similarity index 96% rename from arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/HttpTenantResolutionConfiguration.java rename to arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/HttpTenantResolutionConfiguration.java index 311103a..a524935 100644 --- a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/HttpTenantResolutionConfiguration.java +++ b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/HttpTenantResolutionConfiguration.java @@ -1,4 +1,4 @@ -package io.arconia.autoconfigure.web.multitenancy; +package io.arconia.autoconfigure.multitenancy.web; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -7,7 +7,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import io.arconia.autoconfigure.core.multitenancy.FixedTenantResolutionProperties; +import io.arconia.autoconfigure.multitenancy.core.FixedTenantResolutionProperties; import io.arconia.core.multitenancy.context.resolvers.FixedTenantResolver; import io.arconia.core.multitenancy.events.TenantEventPublisher; import io.arconia.web.multitenancy.context.filters.TenantContextFilter; @@ -18,8 +18,6 @@ /** * Configuration for HTTP tenant resolution. - * - * @author Thomas Vitale */ @Configuration(proxyBeanMethods = false) @EnableConfigurationProperties(HttpTenantResolutionProperties.class) diff --git a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/HttpTenantResolutionProperties.java b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/HttpTenantResolutionProperties.java similarity index 97% rename from arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/HttpTenantResolutionProperties.java rename to arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/HttpTenantResolutionProperties.java index a439ef5..0d88fe8 100644 --- a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/HttpTenantResolutionProperties.java +++ b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/HttpTenantResolutionProperties.java @@ -1,4 +1,4 @@ -package io.arconia.autoconfigure.web.multitenancy; +package io.arconia.autoconfigure.multitenancy.web; import java.util.List; @@ -6,8 +6,6 @@ /** * Configuration properties for HTTP tenant resolution. - * - * @author Thomas Vitale */ @ConfigurationProperties(prefix = HttpTenantResolutionProperties.CONFIG_PREFIX) public class HttpTenantResolutionProperties { diff --git a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/MultitenancyWebAutoConfiguration.java b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/MultitenancyWebAutoConfiguration.java similarity index 78% rename from arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/MultitenancyWebAutoConfiguration.java rename to arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/MultitenancyWebAutoConfiguration.java index 8dbce75..03dc6fc 100644 --- a/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/web/multitenancy/MultitenancyWebAutoConfiguration.java +++ b/arconia-spring-boot-autoconfigure/src/main/java/io/arconia/autoconfigure/multitenancy/web/MultitenancyWebAutoConfiguration.java @@ -1,15 +1,13 @@ -package io.arconia.autoconfigure.web.multitenancy; +package io.arconia.autoconfigure.multitenancy.web; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.context.annotation.Import; -import io.arconia.autoconfigure.core.multitenancy.MultitenancyCoreAutoConfiguration; +import io.arconia.autoconfigure.multitenancy.core.MultitenancyCoreAutoConfiguration; /** * Auto-configuration for web multitenancy. - * - * @author Thomas Vitale */ @AutoConfiguration(after = MultitenancyCoreAutoConfiguration.class) @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) diff --git a/arconia-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/arconia-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 229f935..e6423e8 100644 --- a/arconia-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/arconia-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,2 +1,2 @@ -io.arconia.autoconfigure.core.multitenancy.MultitenancyCoreAutoConfiguration -io.arconia.autoconfigure.web.multitenancy.MultitenancyWebAutoConfiguration +io.arconia.autoconfigure.multitenancy.core.MultitenancyCoreAutoConfiguration +io.arconia.autoconfigure.multitenancy.web.MultitenancyWebAutoConfiguration diff --git a/arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/core/multitenancy/MultitenancyCoreAutoConfigurationTests.java b/arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/multitenancy/core/MultitenancyCoreAutoConfigurationTests.java similarity index 97% rename from arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/core/multitenancy/MultitenancyCoreAutoConfigurationTests.java rename to arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/multitenancy/core/MultitenancyCoreAutoConfigurationTests.java index 289af5f..8c78251 100644 --- a/arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/core/multitenancy/MultitenancyCoreAutoConfigurationTests.java +++ b/arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/multitenancy/core/MultitenancyCoreAutoConfigurationTests.java @@ -1,4 +1,4 @@ -package io.arconia.autoconfigure.core.multitenancy; +package io.arconia.autoconfigure.multitenancy.core; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -15,8 +15,6 @@ /** * Unit tests for {@link MultitenancyCoreAutoConfiguration}. - * - * @author Thomas Vitale */ class MultitenancyCoreAutoConfigurationTests { diff --git a/arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/web/multitenancy/MultitenancyWebAutoConfigurationTests.java b/arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/multitenancy/web/MultitenancyWebAutoConfigurationTests.java similarity index 96% rename from arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/web/multitenancy/MultitenancyWebAutoConfigurationTests.java rename to arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/multitenancy/web/MultitenancyWebAutoConfigurationTests.java index 1c51d5a..7648045 100644 --- a/arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/web/multitenancy/MultitenancyWebAutoConfigurationTests.java +++ b/arconia-spring-boot-autoconfigure/src/test/java/io/arconia/autoconfigure/multitenancy/web/MultitenancyWebAutoConfigurationTests.java @@ -1,4 +1,4 @@ -package io.arconia.autoconfigure.web.multitenancy; +package io.arconia.autoconfigure.multitenancy.web; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; @@ -7,7 +7,7 @@ import org.springframework.boot.test.context.runner.WebApplicationContextRunner; import org.springframework.mock.web.MockHttpServletRequest; -import io.arconia.autoconfigure.core.multitenancy.MultitenancyCoreAutoConfiguration; +import io.arconia.autoconfigure.multitenancy.core.MultitenancyCoreAutoConfiguration; import io.arconia.web.multitenancy.context.filters.TenantContextFilter; import io.arconia.web.multitenancy.context.filters.TenantContextIgnorePathMatcher; import io.arconia.web.multitenancy.context.resolvers.CookieTenantResolver; @@ -18,8 +18,6 @@ /** * Unit tests for {@link MultitenancyWebAutoConfiguration}. - * - * @author Thomas Vitale */ class MultitenancyWebAutoConfigurationTests { diff --git a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/filters/TenantContextFilter.java b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/filters/TenantContextFilter.java index 607914f..0cccd7c 100644 --- a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/filters/TenantContextFilter.java +++ b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/filters/TenantContextFilter.java @@ -20,8 +20,6 @@ /** * Establish a tenant context from an HTTP request, if tenant information is available. - * - * @author Thomas Vitale */ public final class TenantContextFilter extends OncePerRequestFilter { diff --git a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/filters/TenantContextIgnorePathMatcher.java b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/filters/TenantContextIgnorePathMatcher.java index 73ada94..40322fb 100644 --- a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/filters/TenantContextIgnorePathMatcher.java +++ b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/filters/TenantContextIgnorePathMatcher.java @@ -13,12 +13,10 @@ /** * Matches HTTP requests paths for which a tenant context is not attached. - * - * @author Thomas Vitale */ public class TenantContextIgnorePathMatcher { - private static final Logger log = LoggerFactory.getLogger(TenantContextIgnorePathMatcher.class); + private static final Logger logger = LoggerFactory.getLogger(TenantContextIgnorePathMatcher.class); private final List ignorePathPatterns; @@ -34,7 +32,7 @@ public boolean matches(HttpServletRequest httpServletRequest) { var matchesIgnorePaths = ignorePathPatterns.stream() .anyMatch(pathPattern -> pathPattern.matches(pathContainer)); if (matchesIgnorePaths) { - log.debug( + logger.debug( "Request '" + requestUri + "' matches one of the paths for which a tenant context is not attached"); } return matchesIgnorePaths; diff --git a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/CookieTenantResolver.java b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/CookieTenantResolver.java index f87af99..124d469 100644 --- a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/CookieTenantResolver.java +++ b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/CookieTenantResolver.java @@ -10,8 +10,6 @@ /** * Strategy used to resolve the current tenant from a cookie in an HTTP request. - * - * @author Thomas Vitale */ public final class CookieTenantResolver implements HttpRequestTenantResolver { @@ -24,7 +22,7 @@ public CookieTenantResolver() { } public CookieTenantResolver(String tenantCookieName) { - Assert.hasText(tenantCookieName, "tenantCookieName cannot be empty"); + Assert.hasText(tenantCookieName, "tenantCookieName cannot be null or empty"); this.tenantCookieName = tenantCookieName; } diff --git a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/HeaderTenantResolver.java b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/HeaderTenantResolver.java index d0475f5..ccb1bc6 100644 --- a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/HeaderTenantResolver.java +++ b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/HeaderTenantResolver.java @@ -6,8 +6,6 @@ /** * Strategy used to resolve the current tenant from a header in an HTTP request. - * - * @author Thomas Vitale */ public final class HeaderTenantResolver implements HttpRequestTenantResolver { @@ -20,7 +18,7 @@ public HeaderTenantResolver() { } public HeaderTenantResolver(String tenantHeaderName) { - Assert.hasText(tenantHeaderName, "tenantHeaderName cannot be empty"); + Assert.hasText(tenantHeaderName, "tenantHeaderName cannot be null or empty"); this.tenantHeaderName = tenantHeaderName; } diff --git a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/HttpRequestTenantResolver.java b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/HttpRequestTenantResolver.java index 28c0f3d..b3687c7 100644 --- a/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/HttpRequestTenantResolver.java +++ b/arconia-web/src/main/java/io/arconia/web/multitenancy/context/resolvers/HttpRequestTenantResolver.java @@ -8,8 +8,6 @@ /** * Strategy used to resolve the current tenant from an HTTP request. - * - * @author Thomas Vitale */ public interface HttpRequestTenantResolver extends TenantResolver { diff --git a/arconia-web/src/test/java/io/arconia/web/multitenancy/context/filters/TenantContextFilterTests.java b/arconia-web/src/test/java/io/arconia/web/multitenancy/context/filters/TenantContextFilterTests.java index 40f88d2..d3aba81 100644 --- a/arconia-web/src/test/java/io/arconia/web/multitenancy/context/filters/TenantContextFilterTests.java +++ b/arconia-web/src/test/java/io/arconia/web/multitenancy/context/filters/TenantContextFilterTests.java @@ -27,8 +27,6 @@ /** * Unit tests for {@link TenantContextFilter}. - * - * @author Thomas Vitale */ class TenantContextFilterTests { diff --git a/arconia-web/src/test/java/io/arconia/web/multitenancy/context/filters/TenantContextIgnorePathMatcherTests.java b/arconia-web/src/test/java/io/arconia/web/multitenancy/context/filters/TenantContextIgnorePathMatcherTests.java index 391477d..f7f6bf9 100644 --- a/arconia-web/src/test/java/io/arconia/web/multitenancy/context/filters/TenantContextIgnorePathMatcherTests.java +++ b/arconia-web/src/test/java/io/arconia/web/multitenancy/context/filters/TenantContextIgnorePathMatcherTests.java @@ -10,8 +10,6 @@ /** * Unit tests for {@link TenantContextIgnorePathMatcher}. - * - * @author Thomas Vitale */ class TenantContextIgnorePathMatcherTests { diff --git a/arconia-web/src/test/java/io/arconia/web/multitenancy/context/resolvers/CookieTenantResolverTests.java b/arconia-web/src/test/java/io/arconia/web/multitenancy/context/resolvers/CookieTenantResolverTests.java index d6ce0ee..335f5da 100644 --- a/arconia-web/src/test/java/io/arconia/web/multitenancy/context/resolvers/CookieTenantResolverTests.java +++ b/arconia-web/src/test/java/io/arconia/web/multitenancy/context/resolvers/CookieTenantResolverTests.java @@ -10,21 +10,19 @@ /** * Unit tests for {@link CookieTenantResolver}. - * - * @author Thomas Vitale */ class CookieTenantResolverTests { @Test void whenNullCustomCookieThenThrow() { assertThatThrownBy(() -> new CookieTenantResolver(null)).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantCookieName cannot be empty"); + .hasMessageContaining("tenantCookieName cannot be null or empty"); } @Test void whenEmptyCustomCookieThenThrow() { assertThatThrownBy(() -> new CookieTenantResolver("")).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantCookieName cannot be empty"); + .hasMessageContaining("tenantCookieName cannot be null or empty"); } @Test diff --git a/arconia-web/src/test/java/io/arconia/web/multitenancy/context/resolvers/HeaderTenantResolverTests.java b/arconia-web/src/test/java/io/arconia/web/multitenancy/context/resolvers/HeaderTenantResolverTests.java index 55de576..15faac1 100644 --- a/arconia-web/src/test/java/io/arconia/web/multitenancy/context/resolvers/HeaderTenantResolverTests.java +++ b/arconia-web/src/test/java/io/arconia/web/multitenancy/context/resolvers/HeaderTenantResolverTests.java @@ -8,21 +8,19 @@ /** * Unit tests for {@link HeaderTenantResolver}. - * - * @author Thomas Vitale */ class HeaderTenantResolverTests { @Test void whenNullCustomHeaderThenThrow() { assertThatThrownBy(() -> new HeaderTenantResolver(null)).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantHeaderName cannot be empty"); + .hasMessageContaining("tenantHeaderName cannot be null or empty"); } @Test void whenEmptyCustomHeaderThenThrow() { assertThatThrownBy(() -> new HeaderTenantResolver("")).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("tenantHeaderName cannot be empty"); + .hasMessageContaining("tenantHeaderName cannot be null or empty"); } @Test