Class BackendRegistry

java.lang.Object
org.fhirfrog.frog.server.registry.BackendRegistry

public class BackendRegistry extends Object
Registry of available FHIR server backends for test execution.

Backends are loaded from multiple sources in priority order (last wins on name collision):

  1. Project-local: sushi-config.yaml → fhir-frog.server/fhir-frog.servers
  2. User-level: ~/.fhir-frog/backends.yaml
  3. Environment variables: FHIR_FROG_SERVER_URL, FHIR_FROG_AUTH_*

All tools (CLI, Ant, Maven plugin, frog-runner) resolve backends through this class.

  • Method Details

    • empty

      public static BackendRegistry empty()
      Creates an empty registry.
    • of

      public static BackendRegistry of(List<ServerBackend> backends)
      Creates a registry from an explicit list of backends.
    • load

      public static BackendRegistry load(Path... sources)
      Loads and merges backends from multiple sources. Later sources override earlier ones when backends share the same name.
      Parameters:
      sources - paths to backends.yaml or sushi-config.yaml files; non-existent files are silently skipped
      Returns:
      merged registry
    • load

      public static BackendRegistry load(Function<String,String> envResolver, Path... sources)
      Loads with a custom environment variable resolver (for testing).
    • all

      public List<ServerBackend> all()
      All registered backends.
    • findByConformsTo

      public List<ServerBackend> findByConformsTo(String canonical)
      Find all backends claiming the given IG canonical.
    • findByName

      public Optional<ServerBackend> findByName(String name)
      Find a backend by its human-readable name.
    • resolve

      public ServerBackend resolve(String name, String conformsTo, String explicitUrl)
      Resolves a single backend for a test run.

      Resolution order:

      1. If explicitUrl is given, creates an ad-hoc anonymous backend
      2. If name is given, looks up by name
      3. If conformsTo is given, returns the first matching backend
      4. If there is exactly one backend in the registry, returns it
      Throws:
      IllegalArgumentException - if resolution fails (no match, ambiguous)