Interface ResourceResolverRegistry

All Known Implementing Classes:
InMemoryResourceResolverRegistry

@ExperimentalJSentinelApi public interface ResourceResolverRegistry
Lookup of ResourceResolvers by resource type and one-shot resolveAttributes(ResourceRef) pipeline for policy predicates.

Discovered via java.util.ServiceLoader; consuming applications register a default implementation in META-INF/services/com.svenruppert.jsentinel.policy.spi.ResourceResolverRegistry. If no implementation is registered, the JSentinelServiceResolver supplies an in-memory default into which individual ResourceResolvers are registered programmatically at startup.

Implementations should be thread-safe: resolver registration typically happens at startup, resolution runs on every protected access.

  • Method Details

    • register

      void register(ResourceResolver<?> resolver)
      Registers a resolver. Duplicate ResourceResolver.resourceType() registrations replace the previous entry.
      Parameters:
      resolver - non-null resolver
    • find

      Optional<ResourceResolver<?>> find(String resourceType)
      Looks up a resolver by resource type.
      Parameters:
      resourceType - non-blank resource type
      Returns:
      resolver, or empty if none is registered
    • resolveAttributes

      Optional<Map<String,Object>> resolveAttributes(ResourceRef ref)
      Resolves the given reference and returns the resolver's attribute map. Returns empty when no resolver is registered for the resource type, or when the resolver itself returns empty for the id. Never throws on unknown types or ids — policies treat the absence of attributes as a graceful deny.
      Parameters:
      ref - non-null reference
      Returns:
      attribute map, or empty