Skip to content

Commit 65affcd

Browse files
committed
refactor(tenant): Review multitenancy APIs
Signed-off-by: Thomas Vitale <ThomasVitale@users.noreply.github.com>
1 parent 8ed5783 commit 65affcd

20 files changed

Lines changed: 54 additions & 2 deletions

File tree

arconia-multitenancy/arconia-multitenancy-core/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ plugins {
66
}
77

88
dependencies {
9+
implementation project(":arconia-core")
10+
911
implementation "org.jspecify:jspecify:${jSpecifyVersion}"
1012
implementation "org.slf4j:slf4j-api"
1113
implementation "org.springframework:spring-context"

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/cache/DefaultTenantKeyGenerator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import java.lang.reflect.Method;
44

5+
import io.arconia.core.support.Incubating;
6+
57
import org.springframework.cache.interceptor.SimpleKeyGenerator;
68

79
import io.arconia.multitenancy.core.context.TenantContextHolder;
@@ -10,6 +12,7 @@
1012
* An implementation of {@link TenantKeyGenerator} that generates cache keys combining the
1113
* current tenant identifier with the given method and parameters.
1214
*/
15+
@Incubating
1316
public final class DefaultTenantKeyGenerator implements TenantKeyGenerator {
1417

1518
@Override

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/context/TenantContextHolder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.arconia.multitenancy.core.context;
22

3+
import io.arconia.core.support.Incubating;
4+
35
import org.jspecify.annotations.Nullable;
46
import org.slf4j.Logger;
57
import org.slf4j.LoggerFactory;
@@ -11,14 +13,14 @@
1113
/**
1214
* A shared, thread-local store for the current tenant.
1315
*/
16+
@Incubating
1417
public final class TenantContextHolder {
1518

1619
private static final Logger logger = LoggerFactory.getLogger(TenantContextHolder.class);
1720

1821
private static final ThreadLocal<String> tenantIdentifier = new ThreadLocal<>();
1922

20-
private TenantContextHolder() {
21-
}
23+
private TenantContextHolder() {}
2224

2325
public static void setTenantIdentifier(String tenant) {
2426
Assert.hasText(tenant, "tenant cannot be null or empty");

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/context/events/HolderTenantContextEventListener.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.arconia.multitenancy.core.context.events;
22

3+
import io.arconia.core.support.Incubating;
34
import io.arconia.multitenancy.core.context.TenantContextHolder;
45
import io.arconia.multitenancy.core.events.TenantEvent;
56
import io.arconia.multitenancy.core.events.TenantEventListener;
@@ -8,6 +9,7 @@
89
* A {@link TenantEventListener} that sets/clears the tenant identifier from the current
910
* context on the {@link TenantContextHolder}.
1011
*/
12+
@Incubating
1113
public final class HolderTenantContextEventListener implements TenantEventListener {
1214

1315
@Override

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/context/events/MdcTenantContextEventListener.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.arconia.multitenancy.core.context.events;
22

3+
import io.arconia.core.support.Incubating;
4+
35
import org.slf4j.Logger;
46
import org.slf4j.LoggerFactory;
57
import org.slf4j.MDC;
@@ -12,6 +14,7 @@
1214
* A {@link TenantEventListener} that sets/clears the tenant identifier from the current
1315
* context on the SLF4J's {@link MDC}.
1416
*/
17+
@Incubating
1518
public final class MdcTenantContextEventListener implements TenantEventListener {
1619

1720
private static final Logger logger = LoggerFactory.getLogger(MdcTenantContextEventListener.class);

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/context/events/ObservationTenantContextEventListener.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.arconia.multitenancy.core.context.events;
22

3+
import io.arconia.core.support.Incubating;
4+
35
import io.micrometer.common.KeyValue;
46
import io.micrometer.observation.Observation;
57

@@ -14,6 +16,7 @@
1416
* A {@link TenantEventListener} that sets the tenant identifier from the current context
1517
* on an existing {@link Observation}.
1618
*/
19+
@Incubating
1720
public final class ObservationTenantContextEventListener implements TenantEventListener {
1821

1922
private static final Logger logger = LoggerFactory.getLogger(ObservationTenantContextEventListener.class);

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/context/events/TenantContextAttachedEvent.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.arconia.multitenancy.core.context.events;
22

3+
import io.arconia.core.support.Incubating;
4+
35
import io.micrometer.observation.Observation.Context;
46

57
import org.jspecify.annotations.Nullable;
@@ -11,6 +13,7 @@
1113
* A {@link TenantEvent} which indicates a tenant has been attached to the current
1214
* context.
1315
*/
16+
@Incubating
1417
public final class TenantContextAttachedEvent extends TenantEvent {
1518

1619
@Nullable

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/context/events/TenantContextClosedEvent.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package io.arconia.multitenancy.core.context.events;
22

3+
import io.arconia.core.support.Incubating;
34
import io.arconia.multitenancy.core.events.TenantEvent;
45

56
/**
67
* A {@link TenantEvent} which indicates the context for the current tenant has been
78
* closed.
89
*/
10+
@Incubating
911
public final class TenantContextClosedEvent extends TenantEvent {
1012

1113
public TenantContextClosedEvent(String tenantIdentifier, Object object) {

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/context/events/ValidatingTenantContextEventListener.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.arconia.multitenancy.core.context.events;
22

3+
import io.arconia.core.support.Incubating;
4+
35
import org.slf4j.Logger;
46
import org.slf4j.LoggerFactory;
57

@@ -11,6 +13,7 @@
1113
/**
1214
* A {@link TenantEventListener} that validates the tenant for the current context.
1315
*/
16+
@Incubating
1417
public final class ValidatingTenantContextEventListener implements TenantEventListener {
1518

1619
private static final Logger logger = LoggerFactory.getLogger(ValidatingTenantContextEventListener.class);

arconia-multitenancy/arconia-multitenancy-core/src/main/java/io/arconia/multitenancy/core/context/resolvers/FixedTenantResolver.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package io.arconia.multitenancy.core.context.resolvers;
22

3+
import io.arconia.core.support.Incubating;
4+
35
import org.jspecify.annotations.NonNull;
46
import org.springframework.util.Assert;
57

68
/**
79
* Strategy to use a fixed value as the current tenant, regardless of the source context.
810
*/
11+
@Incubating
912
public final class FixedTenantResolver implements TenantResolver<Object> {
1013

1114
public static final String DEFAULT_FIXED_TENANT_IDENTIFIER = "default";

0 commit comments

Comments
 (0)