/**********************************************************************************/
 /// <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);
        }
Ejemplo n.º 4
0
 public ManifestPipeline(IManifestConfigurationProcessor processor, IManifestLoader loader, IManifestSerializer serializer, IPolicySetEvaluator policySet)
 {
     this.processor  = processor;
     this.loader     = loader;
     this.serializer = serializer;
     this.policySet  = policySet;
 }