Class TenantContext

java.lang.Object
io.confluent.kafka.multitenant.schema.TenantContext
All Implemented Interfaces:
org.apache.kafka.common.protocol.MessageContext

public class TenantContext extends Object implements org.apache.kafka.common.protocol.MessageContext
This class contains the core logic to transform Kafka requests and responses so that topics/groups/etc have appropriate tenant prefixes. The TenantContext is built from the authentication context and passed through to the serde in order to add or remove the tenant prefix. We use EntityType to determine which transformation is needed. Note also that there are additional transformations/validations done inside MultiTenantRequestContext.
  • Field Details

    • DELIMITER

      public static final String DELIMITER
      See Also:
    • principal

      public final io.confluent.kafka.multitenant.MultiTenantPrincipal principal
    • prefix

      public final String prefix
  • Constructor Details

    • TenantContext

      public TenantContext(io.confluent.kafka.multitenant.MultiTenantPrincipal principal)
  • Method Details

    • isTenantPrefixed

      public static boolean isTenantPrefixed(String prefixedName)
    • extractTenantPrefix

      public static String extractTenantPrefix(String prefixedName)
    • extractTenant

      public static String extractTenant(String prefixedName)
    • addTenantPrefix

      public static String addTenantPrefix(String prefix, String value)
    • addTenantPrefix

      public String addTenantPrefix(String value)
    • addTenantPrefixNullable

      public static String addTenantPrefixNullable(String prefix, String value)
    • prefix

      public String prefix()
    • prefixSizeInBytes

      public int prefixSizeInBytes()
    • removeTenantPrefix

      public org.apache.kafka.common.TopicPartition removeTenantPrefix(org.apache.kafka.common.TopicPartition tp)
    • removePrefix

      public static String removePrefix(String value)
    • removeTenantPrefix

      public String removeTenantPrefix(String value)
    • removeTenantPrefixNullable

      public String removeTenantPrefixNullable(String value)
    • hasTenantPrefix

      public static boolean hasTenantPrefix(String prefix, String prefixedName)
    • hasTenantPrefix

      public boolean hasTenantPrefix(String value)
    • removeAllTenantPrefixes

      public String removeAllTenantPrefixes(String message)
    • sizeOfRemovedPrefixes

      public int sizeOfRemovedPrefixes(String message)
    • prefixedWildcard

      public String prefixedWildcard()
    • write

      public String write(org.apache.kafka.common.protocol.EntityType entityType, String value)
      Specified by:
      write in interface org.apache.kafka.common.protocol.MessageContext
    • write

      public org.apache.kafka.common.protocol.Message write(org.apache.kafka.common.protocol.EntityType entityType, org.apache.kafka.common.protocol.Message value)
      Specified by:
      write in interface org.apache.kafka.common.protocol.MessageContext
    • read

      public String read(org.apache.kafka.common.protocol.EntityType entityType, String value)
      Specified by:
      read in interface org.apache.kafka.common.protocol.MessageContext
    • read

      public org.apache.kafka.common.protocol.Message read(org.apache.kafka.common.protocol.EntityType entityType, org.apache.kafka.common.protocol.Message value)
      Specified by:
      read in interface org.apache.kafka.common.protocol.MessageContext
    • addTenantPrefixToPrincipal

      public static String addTenantPrefixToPrincipal(String prefix, String principalString)
    • isTransformRequired

      public static boolean isTransformRequired(org.apache.kafka.common.resource.ResourceType resourceType)