/**********************************************************************************/ /// <summary> /// Register custom serializer for manifest type. /// You don't have to call this method wile your manifest resides in Data project. /// </summary> /// <param name="manifestType"></param> /// <param name="serializer"></param> public void RegisterSerializer(CrateManifestType manifestType, IManifestSerializer serializer) { lock (_serializers) { _serializers.Add(manifestType, serializer); } }
/**********************************************************************************/ /// <summary> /// Convert DTO to Crate instance /// </summary> /// <param name="proxy"></param> /// <returns></returns> public Crate ConvertFromDto(CrateDTO proxy) { if (proxy == null) { return(null); } var manifestType = new CrateManifestType(proxy.ManifestType, proxy.ManifestId); IManifestSerializer serializer = GetSerializer(manifestType); Crate crate; if (serializer != null) { var content = proxy.Contents != null?serializer.Deserialize(proxy.Contents) : null; if (content != null) { crate = Crate.FromContent(content, proxy.Id); } else { crate = new Crate(manifestType, proxy.Id); } } else { crate = Crate.FromJson(manifestType, proxy.Id, proxy.Contents); } crate.Label = proxy.Label; crate.SourceActivityId = proxy.SourceActivityId; return(crate); }
/**********************************************************************************/ /// <summary> /// Convert crate to DTO /// </summary> /// <param name="crate"></param> /// <returns></returns> public CrateDTO ConvertToDto(Crate crate) { if (crate == null) { return(null); } IManifestSerializer serializer = GetSerializer(crate.ManifestType); CrateDTO crateDto = new CrateDTO { Id = crate.Id, Label = crate.Label, ManifestId = crate.ManifestType.Id, ManifestType = crate.ManifestType.Type, SourceActivityId = crate.SourceActivityId }; if (serializer != null) { crateDto.Contents = serializer.Serialize(crate.Get <object>()); } else { crateDto.Contents = crate.GetRaw(); } return(crateDto); }
public ManifestPipeline(IManifestConfigurationProcessor processor, IManifestLoader loader, IManifestSerializer serializer, IPolicySetEvaluator policySet) { this.processor = processor; this.loader = loader; this.serializer = serializer; this.policySet = policySet; }