public static T DeserializePayload <T>( this DescribedSerializationBase describedSerialization, VersionMatchStrategy assemblyVersionMatchStrategy = VersionMatchStrategy.AnySingleVersion) { var result = describedSerialization.DeserializePayloadUsingSpecificFactory <T>( SerializerFactory.Instance, assemblyVersionMatchStrategy); return(result); }
public static DescribedSerializationBase ToDescribedSerialization <T>( this T objectToPackageIntoDescribedSerialization, SerializerRepresentation serializerRepresentation, SerializationFormat serializationFormat, VersionMatchStrategy assemblyVersionMatchStrategy = VersionMatchStrategy.AnySingleVersion) { var result = objectToPackageIntoDescribedSerialization.ToDescribedSerializationUsingSpecificFactory( serializerRepresentation, SerializerFactory.Instance, serializationFormat, assemblyVersionMatchStrategy); return(result); }
/// <inheritdoc /> public override ISerializer BuildSerializer( SerializerRepresentation serializerRepresentation, VersionMatchStrategy assemblyVersionMatchStrategy = VersionMatchStrategy.AnySingleVersion) { if (serializerRepresentation == null) { throw new ArgumentNullException(nameof(serializerRepresentation)); } ISerializer result; if (CachedSerializerRepresentationToSerializerMap.TryGetValue(serializerRepresentation, out ConcurrentDictionary <VersionMatchStrategy, ISerializer> assemblyVersionMatchStrategyToSerializerMap)) { if (assemblyVersionMatchStrategyToSerializerMap.TryGetValue(assemblyVersionMatchStrategy, out result)) { return(result); } } // ReSharper disable once RedundantArgumentDefaultValue var configurationType = serializerRepresentation.SerializationConfigType?.ResolveFromLoadedTypes(assemblyVersionMatchStrategy, throwIfCannotResolve: true); ISerializer serializer; switch (serializerRepresentation.SerializationKind) { case SerializationKind.Bson: serializer = new ObcBsonSerializer(configurationType?.ToBsonSerializationConfigurationType()); break; case SerializationKind.Json: serializer = new ObcJsonSerializer(configurationType?.ToJsonSerializationConfigurationType()); break; case SerializationKind.PropertyBag: serializer = new ObcPropertyBagSerializer(configurationType?.ToPropertyBagSerializationConfigurationType()); break; default: throw new NotSupportedException(Invariant($"{nameof(serializerRepresentation)} from enumeration {nameof(SerializationKind)} of {serializerRepresentation.SerializationKind} is not supported.")); } result = this.WrapInCompressingSerializerIfAppropriate(serializer, serializerRepresentation.CompressionKind); CachedSerializerRepresentationToSerializerMap.TryAdd(serializerRepresentation, new ConcurrentDictionary <VersionMatchStrategy, ISerializer>()); CachedSerializerRepresentationToSerializerMap[serializerRepresentation].TryAdd(assemblyVersionMatchStrategy, result); return(result); }
/// <inheritdoc /> public override ISerializer BuildSerializer( SerializerRepresentation serializerRepresentation, VersionMatchStrategy assemblyVersionMatchStrategy = VersionMatchStrategy.AnySingleVersion) { if (serializerRepresentation == null) { throw new ArgumentNullException(nameof(serializerRepresentation)); } ISerializer result; if (CachedSerializerRepresentationToSerializerMap.TryGetValue(serializerRepresentation, out ConcurrentDictionary <VersionMatchStrategy, ISerializer> assemblyVersionMatchStrategyToSerializerMap)) { if (assemblyVersionMatchStrategyToSerializerMap.TryGetValue(assemblyVersionMatchStrategy, out result)) { return(result); } } ISerializer serializer; switch (serializerRepresentation.SerializationKind) { case SerializationKind.Bson: serializer = BsonSerializerFactory.BuildSerializer(serializerRepresentation, assemblyVersionMatchStrategy); break; case SerializationKind.Json: serializer = JsonSerializerFactory.BuildSerializer(serializerRepresentation, assemblyVersionMatchStrategy); break; case SerializationKind.PropertyBag: serializer = PropertyBagSerializerFactory.BuildSerializer(serializerRepresentation, assemblyVersionMatchStrategy); break; default: throw new NotSupportedException(Invariant($"{nameof(serializerRepresentation)} from enumeration {nameof(SerializationKind)} of {serializerRepresentation.SerializationKind} is not supported.")); } result = this.WrapInCompressingSerializerIfAppropriate(serializer, serializerRepresentation.CompressionKind); CachedSerializerRepresentationToSerializerMap.TryAdd(serializerRepresentation, new ConcurrentDictionary <VersionMatchStrategy, ISerializer>()); CachedSerializerRepresentationToSerializerMap[serializerRepresentation].TryAdd(assemblyVersionMatchStrategy, result); return(result); }
public RecordFilterConvertedForStoredProcedure( string internalRecordIdsCsv, string identifierTypeIdsCsv, string objectTypeIdsCsv, string stringIdsToMatchXml, string tagIdsCsv, TagMatchStrategy tagMatchStrategy, VersionMatchStrategy versionMatchStrategy, string deprecatedIdEventTypeIdsCsv) { this.InternalRecordIdsCsv = internalRecordIdsCsv; this.IdentifierTypeIdsCsv = identifierTypeIdsCsv; this.ObjectTypeIdsCsv = objectTypeIdsCsv; this.StringIdsToMatchXml = stringIdsToMatchXml; this.TagIdsCsv = tagIdsCsv; this.TagMatchStrategy = tagMatchStrategy; this.VersionMatchStrategy = versionMatchStrategy; this.DeprecatedIdEventTypeIdsCsv = deprecatedIdEventTypeIdsCsv; }
/// <summary> /// Builds the execute stored procedure operation. /// </summary> /// <param name="streamName">Name of the stream.</param> /// <param name="serializerRepresentation">The serializer representation.</param> /// <param name="identifierType">The identifier type.</param> /// <param name="objectType">The object type.</param> /// <param name="internalRecordId">The optional internal record identifier (for stream re-play).</param> /// <param name="serializedObjectId">The serialized object identifier.</param> /// <param name="serializedObjectString">The serialized object as a string (should have data IFF the serializer is set to SerializationFormat.String, otherwise null).</param> /// <param name="serializedObjectBytes">The serialized object as a byte array (should have data IFF the serializer is set to SerializationFormat.Binary, otherwise null).</param> /// <param name="objectDateTimeUtc">The date time of the object if exists.</param> /// <param name="tagIdsCsv">The tag identifiers as CSV.</param> /// <param name="existingRecordStrategy">Existing record encountered strategy.</param> /// <param name="recordRetentionCount">Number of records to keep if using a pruning <paramref name="existingRecordStrategy"/>.</param> /// <param name="versionMatchStrategy">Type version match strategy.</param> /// <returns>Operation to execute stored procedure.</returns> public static ExecuteStoredProcedureOp BuildExecuteStoredProcedureOp( string streamName, IdentifiedSerializerRepresentation serializerRepresentation, IdentifiedType identifierType, IdentifiedType objectType, long?internalRecordId, string serializedObjectId, string serializedObjectString, byte[] serializedObjectBytes, DateTime?objectDateTimeUtc, string tagIdsCsv, ExistingRecordStrategy existingRecordStrategy, int?recordRetentionCount, VersionMatchStrategy versionMatchStrategy) { var sprocName = Invariant($"[{streamName}].{nameof(PutRecord)}"); var parameters = new List <ParameterDefinitionBase>() { new InputParameterDefinition <int>(nameof(InputParamName.SerializerRepresentationId), Tables.SerializerRepresentation.Id.SqlDataType, serializerRepresentation.Id), new InputParameterDefinition <int?>(nameof(InputParamName.IdentifierTypeWithoutVersionId), Tables.TypeWithoutVersion.Id.SqlDataType, identifierType?.IdWithoutVersion), new InputParameterDefinition <int?>(nameof(InputParamName.IdentifierTypeWithVersionId), Tables.TypeWithVersion.Id.SqlDataType, identifierType?.IdWithVersion), new InputParameterDefinition <int?>(nameof(InputParamName.ObjectTypeWithoutVersionId), Tables.TypeWithoutVersion.Id.SqlDataType, objectType?.IdWithoutVersion), new InputParameterDefinition <int?>(nameof(InputParamName.ObjectTypeWithVersionId), Tables.TypeWithVersion.Id.SqlDataType, objectType?.IdWithVersion), new InputParameterDefinition <long?>(nameof(InputParamName.InternalRecordId), Tables.Record.Id.SqlDataType, internalRecordId), new InputParameterDefinition <string>(nameof(InputParamName.StringSerializedId), Tables.Record.StringSerializedId.SqlDataType, serializedObjectId), new InputParameterDefinition <string>(nameof(InputParamName.StringSerializedObject), Tables.Record.StringSerializedObject.SqlDataType, serializedObjectString), new InputParameterDefinition <byte[]>(nameof(InputParamName.BinarySerializedObject), Tables.Record.BinarySerializedObject.SqlDataType, serializedObjectBytes), new InputParameterDefinition <DateTime?>(nameof(InputParamName.ObjectDateTimeUtc), Tables.Record.ObjectDateTimeUtc.SqlDataType, objectDateTimeUtc), new InputParameterDefinition <string>(nameof(InputParamName.TagIdsCsv), Tables.Record.TagIdsCsv.SqlDataType, tagIdsCsv), new InputParameterDefinition <ExistingRecordStrategy>(nameof(InputParamName.ExistingRecordStrategy), new StringSqlDataTypeRepresentation(false, 50), existingRecordStrategy), new InputParameterDefinition <int?>(nameof(InputParamName.RecordRetentionCount), new IntSqlDataTypeRepresentation(), recordRetentionCount), new InputParameterDefinition <VersionMatchStrategy>(nameof(InputParamName.VersionMatchStrategy), new StringSqlDataTypeRepresentation(false, 50), versionMatchStrategy), new OutputParameterDefinition <long?>(nameof(OutputParamName.Id), Tables.Record.Id.SqlDataType), new OutputParameterDefinition <string>(nameof(OutputParamName.ExistingRecordIdsCsv), Tables.Record.TagIdsCsv.SqlDataType), new OutputParameterDefinition <string>(nameof(OutputParamName.PrunedRecordIdsCsv), Tables.Record.TagIdsCsv.SqlDataType), }; var result = new ExecuteStoredProcedureOp(sprocName, parameters); return(result); }
public RecordFilterConvertedForStoredProcedure DeepCloneWithVersionMatchStrategy(VersionMatchStrategy versionMatchStrategy) { var result = new RecordFilterConvertedForStoredProcedure( this.InternalRecordIdsCsv?.DeepClone(), this.IdentifierTypeIdsCsv?.DeepClone(), this.ObjectTypeIdsCsv?.DeepClone(), this.StringIdsToMatchXml?.DeepClone(), this.TagIdsCsv?.DeepClone(), this.TagMatchStrategy.DeepClone(), versionMatchStrategy, this.DeprecatedIdEventTypeIdsCsv?.DeepClone()); return(result); }