Beispiel #1
0
        /// <summary>
        /// Creates a deserializer.
        /// </summary>
        /// <param name="registryClient">
        /// The client to use for Schema Registry operations. (The client will not be disposed.)
        /// </param>
        /// <param name="deserializerBuilder">
        /// The deserializer builder used to generate deserialization functions for C# types. If
        /// none is provided, the default deserializer builder will be used.
        /// </param>
        /// <param name="schemaReader">
        /// The JSON schema reader used to convert schemas received from the registry into abstract
        /// representations. If none is provided, the default schema reader will be used.
        /// </param>
        /// <param name="tombstoneBehavior">
        /// The behavior of the deserializer on tombstone records.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when the registry client is null.
        /// </exception>
        public AsyncSchemaRegistryDeserializer(
            ISchemaRegistryClient registryClient,
            IBinaryDeserializerBuilder deserializerBuilder = null,
            IJsonSchemaReader schemaReader      = null,
            TombstoneBehavior tombstoneBehavior = TombstoneBehavior.None
            )
        {
            if (registryClient == null)
            {
                throw new ArgumentNullException(nameof(registryClient));
            }

            if (tombstoneBehavior != TombstoneBehavior.None && default(T) != null)
            {
                throw new UnsupportedTypeException(typeof(T), $"{typeof(T)} cannot represent tombstone values.");
            }

            DeserializerBuilder = deserializerBuilder ?? new BinaryDeserializerBuilder();
            RegistryClient      = registryClient;
            SchemaReader        = schemaReader ?? new JsonSchemaReader();
            TombstoneBehavior   = tombstoneBehavior;

            _cache = new Dictionary <int, Task <Func <Stream, T> > >();
            _disposeRegistryClient = false;
        }
Beispiel #2
0
        /// <summary>
        /// Creates a deserializer.
        /// </summary>
        /// <param name="registryConfiguration">
        /// Schema Registry configuration. Using the <see cref="SchemaRegistryConfig" /> class is
        /// highly recommended.
        /// </param>
        /// <param name="deserializerBuilder">
        /// The deserializer builder to use to to generate deserialization functions for C# types.
        /// If none is provided, the default deserializer builder will be used.
        /// </param>
        /// <param name="schemaReader">
        /// The JSON schema reader to use to convert schemas received from the registry into abstract
        /// representations. If none is provided, the default schema reader will be used.
        /// </param>
        /// <param name="tombstoneBehavior">
        /// The behavior of the deserializer on tombstone records.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when the registry configuration is null.
        /// </exception>
        public AsyncSchemaRegistryDeserializer(
            IEnumerable <KeyValuePair <string, string> > registryConfiguration,
            IBinaryDeserializerBuilder deserializerBuilder = null,
            IJsonSchemaReader schemaReader      = null,
            TombstoneBehavior tombstoneBehavior = TombstoneBehavior.None
            )
        {
            if (registryConfiguration == null)
            {
                throw new ArgumentNullException(nameof(registryConfiguration));
            }

            if (tombstoneBehavior != TombstoneBehavior.None && default(T) != null)
            {
                throw new UnsupportedTypeException(typeof(T), $"{typeof(T)} cannot represent tombstone values.");
            }

            DeserializerBuilder = deserializerBuilder ?? new BinaryDeserializerBuilder();
            RegistryClient      = new CachedSchemaRegistryClient(registryConfiguration);
            SchemaReader        = schemaReader ?? new JsonSchemaReader();
            TombstoneBehavior   = tombstoneBehavior;

            _cache = new Dictionary <int, Task <Func <Stream, T> > >();
            _disposeRegistryClient = true;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="BinaryRecordDeserializerBuilderCase" /> class.
 /// </summary>
 /// <param name="deserializerBuilder">
 /// A deserializer builder instance that will be used to build field deserializers.
 /// </param>
 /// <param name="memberVisibility">
 /// The binding flags to use to select fields and properties.
 /// </param>
 public BinaryRecordDeserializerBuilderCase(
     IBinaryDeserializerBuilder deserializerBuilder,
     BindingFlags memberVisibility)
 {
     DeserializerBuilder = deserializerBuilder ?? throw new ArgumentNullException(nameof(deserializerBuilder), "Binary deserializer builder cannot be null.");
     MemberVisibility    = memberVisibility;
 }
 private AsyncSchemaRegistryDeserializer(
     IBinaryDeserializerBuilder deserializerBuilder = null,
     IJsonSchemaReader schemaReader = null
     )
 {
     _cache = new ConcurrentDictionary <int, Task <Func <Stream, T> > >();
     _deserializerBuilder = deserializerBuilder ?? new BinaryDeserializerBuilder();
     _schemaReader        = schemaReader ?? new JsonSchemaReader();
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="SchemaRegistryDeserializerBuilder" />
        /// class with a Schema Registry instance.
        /// </summary>
        /// <param name="registryClient">
        /// A Schema Registry client to use for Registry operations. (The client will not be
        /// disposed.)
        /// </param>
        /// <param name="deserializerBuilder">
        /// A deserializer builder instance that should be used to generate deserialization
        /// functions for .NET <see cref="Type" />s. If none is provided, the default
        /// <see cref="BinaryDeserializerBuilder" /> will be used.
        /// </param>
        /// <param name="schemaReader">
        /// A schema reader instance that should be used to convert schemas received from the
        /// Registry into abstract representations. If none is provided, the default
        /// <see cref="JsonSchemaReader" /> will be used.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when <paramref name="registryClient" /> is <c>null</c>.
        /// </exception>
        public SchemaRegistryDeserializerBuilder(
            ISchemaRegistryClient registryClient,
            IBinaryDeserializerBuilder deserializerBuilder = null,
            IJsonSchemaReader schemaReader = null)
        {
            disposeRegistryClient = false;

            DeserializerBuilder = deserializerBuilder ?? new BinaryDeserializerBuilder();
            RegistryClient      = registryClient ?? throw new ArgumentNullException(nameof(registryClient));
            SchemaReader        = schemaReader ?? new JsonSchemaReader();
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SchemaRegistryDeserializerBuilder" />
 /// class with a Schema Registry configuration.
 /// </summary>
 /// <param name="registryConfiguration">
 /// A Schema Registry configuration. Using the <see cref="SchemaRegistryConfig" /> class is
 /// highly recommended.
 /// </param>
 /// <param name="deserializerBuilder">
 /// A deserializer builder instance that should be used to generate deserialization
 /// functions for .NET <see cref="Type" />s. If none is provided, the default
 /// <see cref="BinaryDeserializerBuilder" /> will be used.
 /// </param>
 /// <param name="schemaReader">
 /// A schema reader instance that should be used to convert schemas received from the
 /// Registry into abstract representations. If none is provided, the default
 /// <see cref="JsonSchemaReader" /> will be used.
 /// </param>
 public SchemaRegistryDeserializerBuilder(
     IEnumerable <KeyValuePair <string, string> > registryConfiguration,
     IBinaryDeserializerBuilder deserializerBuilder = null,
     IJsonSchemaReader schemaReader = null)
     : this(
         new CachedSchemaRegistryClient(registryConfiguration),
         deserializerBuilder,
         schemaReader)
 {
     disposeRegistryClient = true;
 }
        /// <summary>
        /// Creates a deserializer.
        /// </summary>
        /// <param name="registryClient">
        /// A client to use for Schema Registry operations. (The client will not be disposed.)
        /// </param>
        /// <param name="deserializerBuilder">
        /// A deserializer builder (used to build deserialization functions for C# types). If none
        /// is provided, the default deserializer builder will be used.
        /// </param>
        /// <param name="schemaReader">
        /// A JSON schema reader (used to convert schemas received from the registry into abstract
        /// representations). If none is provided, the default schema reader will be used.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when the registry client is null.
        /// </exception>
        public AsyncSchemaRegistryDeserializer(
            ISchemaRegistryClient registryClient,
            IBinaryDeserializerBuilder deserializerBuilder = null,
            IJsonSchemaReader schemaReader = null
            ) : this(
                deserializerBuilder,
                schemaReader
                )
        {
            if (registryClient == null)
            {
                throw new ArgumentNullException(nameof(registryClient));
            }

            _resolve = id => registryClient.GetSchemaAsync(id);
        }
Beispiel #8
0
        /// <summary>
        /// Creates a deserializer.
        /// </summary>
        /// <param name="registryConfiguration">
        /// Schema Registry configuration. Using the <see cref="SchemaRegistryConfig" /> class is
        /// highly recommended.
        /// </param>
        /// <param name="deserializerBuilder">
        /// The deserializer builder to use to to generate deserialization functions for C# types.
        /// If none is provided, the default deserializer builder will be used.
        /// </param>
        /// <param name="schemaReader">
        /// The JSON schema reader to use to convert schemas received from the registry into abstract
        /// representations. If none is provided, the default schema reader will be used.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when the registry configuration is null.
        /// </exception>
        public AsyncSchemaRegistryDeserializer(
            IEnumerable <KeyValuePair <string, string> > registryConfiguration,
            IBinaryDeserializerBuilder deserializerBuilder = null,
            IJsonSchemaReader schemaReader = null
            ) : this(
                deserializerBuilder,
                schemaReader
                )
        {
            if (registryConfiguration == null)
            {
                throw new ArgumentNullException(nameof(registryConfiguration));
            }

            RegistryClient         = new CachedSchemaRegistryClient(registryConfiguration);
            _disposeRegistryClient = true;
        }
Beispiel #9
0
        /// <summary>
        /// Creates a deserializer.
        /// </summary>
        /// <param name="registryClient">
        /// The client to use for Schema Registry operations. (The client will not be disposed.)
        /// </param>
        /// <param name="deserializerBuilder">
        /// The deserializer builder used to generate deserialization functions for C# types. If
        /// none is provided, the default deserializer builder will be used.
        /// </param>
        /// <param name="schemaReader">
        /// The JSON schema reader used to convert schemas received from the registry into abstract
        /// representations. If none is provided, the default schema reader will be used.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when the registry client is null.
        /// </exception>
        public AsyncSchemaRegistryDeserializer(
            ISchemaRegistryClient registryClient,
            IBinaryDeserializerBuilder deserializerBuilder = null,
            IJsonSchemaReader schemaReader = null
            ) : this(
                deserializerBuilder,
                schemaReader
                )
        {
            if (registryClient == null)
            {
                throw new ArgumentNullException(nameof(registryClient));
            }

            RegistryClient         = registryClient;
            _disposeRegistryClient = false;
        }
        /// <summary>
        /// Creates a deserializer.
        /// </summary>
        /// <param name="registryConfiguration">
        /// Schema Registry configuration. Using the <see cref="SchemaRegistryConfig" /> class is
        /// highly recommended.
        /// </param>
        /// <param name="deserializerBuilder">
        /// A deserializer builder (used to build deserialization functions for C# types). If none
        /// is provided, the default deserializer builder will be used.
        /// </param>
        /// <param name="schemaReader">
        /// A JSON schema reader (used to convert schemas received from the registry into abstract
        /// representations). If none is provided, the default schema reader will be used.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when the registry configuration is null.
        /// </exception>
        public AsyncSchemaRegistryDeserializer(
            IEnumerable <KeyValuePair <string, string> > registryConfiguration,
            IBinaryDeserializerBuilder deserializerBuilder = null,
            IJsonSchemaReader schemaReader = null
            ) : this(
                deserializerBuilder,
                schemaReader
                )
        {
            if (registryConfiguration == null)
            {
                throw new ArgumentNullException(nameof(registryConfiguration));
            }

            _resolve = async id =>
            {
                using (var registry = new CachedSchemaRegistryClient(registryConfiguration))
                {
                    return(await registry.GetSchemaAsync(id).ConfigureAwait(false));
                }
            };
        }
 public FixedSerializationTests()
 {
     DeserializerBuilder = new BinaryDeserializerBuilder();
     SerializerBuilder   = new BinarySerializerBuilder();
 }
 public MapSerializationTests()
 {
     deserializerBuilder = new BinaryDeserializerBuilder();
     serializerBuilder   = new BinarySerializerBuilder();
     stream = new MemoryStream();
 }
Beispiel #13
0
 public BooleanSerializationTests()
 {
     DeserializerBuilder = new BinaryDeserializerBuilder();
     SerializerBuilder   = new BinarySerializerBuilder();
 }
Beispiel #14
0
 public IntegerSerializationTests()
 {
     DeserializerBuilder = new BinaryDeserializerBuilder();
     SerializerBuilder   = new BinarySerializerBuilder();
 }
 public DecimalSerializationTests()
 {
     DeserializerBuilder = new BinaryDeserializerBuilder();
     SerializerBuilder   = new BinarySerializerBuilder();
 }
Beispiel #16
0
 public RecordConstructorDeserializationTests()
 {
     DeserializerBuilder = new BinaryDeserializerBuilder();
     SchemaBuilder       = new SchemaBuilder();
     SerializerBuilder   = new BinarySerializerBuilder();
 }
 public OrderDeserializerBuilderCase(ITypeResolver resolver, IBinaryCodec codec, IBinaryDeserializerBuilder builder) : base(codec, builder)
 {
     Resolver = resolver;
 }
Beispiel #18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BinaryUnionDeserializerBuilderCase" /> class.
 /// </summary>
 /// <param name="deserializerBuilder">
 /// A deserializer builder instance that will be used to build child deserializers.
 /// </param>
 public BinaryUnionDeserializerBuilderCase(IBinaryDeserializerBuilder deserializerBuilder)
 {
     DeserializerBuilder = deserializerBuilder ?? throw new ArgumentNullException(nameof(deserializerBuilder), "Binary deserializer builder cannot be null.");
 }
Beispiel #19
0
 public StringSerializationTests()
 {
     DeserializerBuilder = new BinaryDeserializerBuilder();
     SerializerBuilder   = new BinarySerializerBuilder();
 }
Beispiel #20
0
 public TimestampSerializationTests()
 {
     DeserializerBuilder = new BinaryDeserializerBuilder();
     SerializerBuilder   = new BinarySerializerBuilder();
 }
 public OrderDeserializerBuilderCase(IBinaryDeserializerBuilder builder)
     : base(builder)
 {
 }
Beispiel #22
0
 public OrderEventUnionDeserializerBuilderCase(IBinaryDeserializerBuilder deserializerBuilder)
     : base(deserializerBuilder)
 {
 }