Sha256: cc4b446b96fbb0491c84fb2f7da1848b22550c2bfddf2e2abed1a09c170d1b54

Contents?: true

Size: 1.77 KB

Versions: 10

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

module Avromatic
  module Patches
    module SchemaValidatorPatch
      # This method replaces validate_recursive in AvroPatches::LogicalTypes::SchemaValidatorPatch
      # to enable validating datums that contain an encoding provider.
      def validate_recursive(expected_schema, logical_datum, path, result, encoded = false)
        datum = resolve_datum(expected_schema, logical_datum, encoded)
        case expected_schema.type_sym
        when :record, :error, :request
          if datum.is_a?(Hash) && datum.key?(Avromatic::IO::ENCODING_PROVIDER)
            return if expected_schema.sha256_resolution_fingerprint ==
              datum[Avromatic::IO::ENCODING_PROVIDER].value_avro_schema.sha256_resolution_fingerprint
            raise Avro::SchemaValidator::ValidationError
          end
        end
        super(expected_schema, logical_datum, path, result, encoded)
      end
    end

    module SchemaValidatorPatchV040
      # This method replaces validate_recursive in AvroPatches::LogicalTypes::SchemaValidatorPatch
      # to enable validating datums that contain an encoding provider.
      def validate_recursive(expected_schema, logical_datum, path, result, options = {})
        datum = resolve_datum(expected_schema, logical_datum, options[:encoded])
        case expected_schema.type_sym
        when :record, :error, :request
          if datum.is_a?(Hash) && datum.key?(Avromatic::IO::ENCODING_PROVIDER)
            return if expected_schema.sha256_resolution_fingerprint ==
              datum[Avromatic::IO::ENCODING_PROVIDER].value_avro_schema.sha256_resolution_fingerprint
            raise Avro::SchemaValidator::ValidationError
          end
        end
        super(expected_schema, logical_datum, path, result, options)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
avromatic-2.2.6 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.2.5 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.2.4 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.2.3 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.2.2 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.2.1 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.2.0 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.1.0 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.0.1 lib/avromatic/patches/schema_validator_patch.rb
avromatic-2.0.0 lib/avromatic/patches/schema_validator_patch.rb