Class BloomFilterServiceImpl

java.lang.Object
it.gov.pagopa.onboarding.citizen.service.BloomFilterServiceImpl
All Implemented Interfaces:
BloomFilterService

@Service public class BloomFilterServiceImpl extends Object implements BloomFilterService
  • Constructor Details

  • Method Details

    • add

      public reactor.core.publisher.Mono<Void> add(String value)

      Adds a fiscal code to the Bloom Filter.

      Parameters:
      value - the fiscal code to add (plain text, will be hashed for logging)
      Returns:
      Mono<Void> completing when the value is added
    • mightContain

      public reactor.core.publisher.Mono<String> mightContain(String fiscalCode)

      Checks if a fiscal code might be present in the Bloom Filter.

      Note: False negatives are impossible, false positives occur with ~1% probability.

      Implementation note: Returns string literals for backward compatibility with existing API contracts:

      • "OK" → Fiscal code might exist (proceed with database verification)
      • "NO CHANNELS ENABLED" → Fiscal code definitely absent (skip database query)

      For internal usage, consider using contains(String) which returns a boolean.

      Specified by:
      mightContain in interface BloomFilterService
      Parameters:
      fiscalCode - plain fiscal code
      Returns:
      "true" if might exist (requires DB check), "false" if definitely absent
    • contains

      public reactor.core.publisher.Mono<Boolean> contains(String value)

      Checks if a fiscal code is present in the Bloom Filter (boolean response).

      Preferred over mightContain(String) for internal usage as it returns a strongly-typed boolean instead of string literals.

      Parameters:
      value - the fiscal code to check
      Returns:
      Mono<Boolean> emitting true if might exist, false if definitely absent