Class TenantAwareStrategy

java.lang.Object
cloud.opencode.base.feature.strategy.TenantAwareStrategy
All Implemented Interfaces:
EnableStrategy

public class TenantAwareStrategy extends Object implements EnableStrategy
Tenant Aware Strategy 租户感知策略

Strategy that enables features based on tenant configuration.

基于租户配置启用功能的策略。

Features | 主要功能:

  • Per-tenant overrides - 按租户覆盖
  • Multi-tenant support - 多租户支持
  • Fallback strategy - 回退策略

Usage Examples | 使用示例:

// Enterprise tenant enabled, trial disabled
Feature feature = Feature.builder("premium-feature")
    .strategy(new TenantAwareStrategy(
        Map.of("enterprise", true, "trial", false),
        AlwaysOffStrategy.INSTANCE
    ))
    .build();

// Check with tenant context
boolean enabled = feature.isEnabled(
    FeatureContext.builder()
        .tenantId("enterprise")
        .build()
);

Security | 安全性:

  • Thread-safe: Yes - 线程安全: 是
  • Null-safe: Partial (validates inputs) - 空值安全: 部分(验证输入)
Since:
JDK 25, opencode-base-feature V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Constructor Details

    • TenantAwareStrategy

      public TenantAwareStrategy(Map<String,Boolean> tenantOverrides, EnableStrategy fallbackStrategy)
      Create tenant aware strategy 创建租户感知策略
      Parameters:
      tenantOverrides - tenant-specific overrides | 租户特定覆盖
      fallbackStrategy - fallback when tenant not in map | 租户不在映射中时的回退
    • TenantAwareStrategy

      public TenantAwareStrategy(Map<String,Boolean> tenantOverrides)
      Create with default fallback (always off) 使用默认回退创建(始终禁用)
      Parameters:
      tenantOverrides - tenant-specific overrides | 租户特定覆盖
  • Method Details

    • isEnabled

      public boolean isEnabled(Feature feature, FeatureContext context)
      Check if enabled for tenant 检查是否对租户启用
      Specified by:
      isEnabled in interface EnableStrategy
      Parameters:
      feature - the feature | 功能
      context - the context | 上下文
      Returns:
      true if enabled for tenant | 如果对租户启用返回true
    • getTenantOverrides

      public Map<String,Boolean> getTenantOverrides()
      Get tenant overrides 获取租户覆盖
      Returns:
      tenant overrides map | 租户覆盖映射
    • getFallbackStrategy

      public EnableStrategy getFallbackStrategy()
      Get fallback strategy 获取回退策略
      Returns:
      fallback strategy | 回退策略
    • hasTenantOverride

      public boolean hasTenantOverride(String tenantId)
      Check if tenant has explicit override 检查租户是否有显式覆盖
      Parameters:
      tenantId - the tenant ID | 租户ID
      Returns:
      true if has override | 如果有覆盖返回true
    • toString

      public String toString()
      Overrides:
      toString in class Object