protected override void ExportValue(ExportContext context, object value, JsonWriter writer)
        {
            Debug.Assert(context != null);
            Debug.Assert(value != null);
            Debug.Assert(writer != null);
            if (_properties.Count == 0)
            {
                writer.WriteString(value.ToString());
                return;
            }
            ObjectReferenceTracker objectReferenceTracker = null;

            try
            {
                writer.WriteStartObject();
                foreach (PropertyDescriptor property in _properties)
                {
                    object value2 = property.GetValue(value);
                    if (!JsonNull.LogicallyEquals(value2))
                    {
                        writer.WriteMember(property.Name);
                        if (objectReferenceTracker == null)
                        {
                            objectReferenceTracker = TrackObject(context, value);
                        }
                        context.Export(value2, writer);
                    }
                }
                writer.WriteEndObject();
            }
            finally
            {
                objectReferenceTracker?.Pop(value);
            }
        }
Ejemplo n.º 2
0
        protected override void ExportValue(ExportContext context, object value, JsonWriter writer)
        {
            Debug.Assert(context != null);
            Debug.Assert(value != null);
            Debug.Assert(writer != null);

            if (_properties.Count == 0)
            {
                writer.WriteString(value.ToString());
            }
            else
            {
                ObjectReferenceTracker tracker = null;

                try
                {
                    writer.WriteStartObject();

                    foreach (PropertyDescriptor property in _properties)
                    {
                        object propertyValue = property.GetValue(value);

                        if (!JsonNull.LogicallyEquals(propertyValue))
                        {
                            writer.WriteMember(property.Name);

                            if (tracker == null)
                            {
                                //
                                // We are about to enter a deeper scope so
                                // start tracking the current object being
                                // exported. This will help to detect
                                // recursive references that may occur
                                // through this exporter deeper in the tree.
                                //

                                tracker = TrackObject(context, value);
                            }

                            context.Export(propertyValue, writer);
                        }
                    }

                    writer.WriteEndObject();
                }
                finally
                {
                    if (tracker != null)
                    {
                        tracker.Pop(value);
                    }
                }
            }
        }
        private static ObjectReferenceTracker TrackObject(ExportContext context, object value)
        {
            Debug.Assert(context != null);
            Debug.Assert(value != null);
            Type typeFromHandle = typeof(ComponentExporter);
            ObjectReferenceTracker objectReferenceTracker = (ObjectReferenceTracker)context.Items[typeFromHandle];

            if (objectReferenceTracker == null)
            {
                objectReferenceTracker = new ObjectReferenceTracker();
                context.Items.Add(typeFromHandle, objectReferenceTracker);
            }
            objectReferenceTracker.PushNew(value);
            return(objectReferenceTracker);
        }
Ejemplo n.º 4
0
        private static ObjectReferenceTracker TrackObject(ExportContext context, object value)
        {
            Debug.Assert(context != null);
            Debug.Assert(value != null);

            //
            // Get the object reference tracker from the current context. If
            // it's not there, then create one.
            //

            Type key = typeof(ComponentExporter);
            ObjectReferenceTracker tracker = (ObjectReferenceTracker)context.Items[key];

            if (tracker == null)
            {
                tracker = new ObjectReferenceTracker();
                context.Items.Add(key, tracker);
            }

            tracker.PushNew(value);
            return(tracker);
        }
Ejemplo n.º 5
0
 public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log,
                                     EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker)
 {
     //DownloadedFileNames=new List<string>();
     base.InitializeTask(connections, variableDispenser, events, log, eventInfos, logEntryInfos, refTracker);
 }
Ejemplo n.º 6
0
 public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker)
 {
     base.InitializeTask(connections, variableDispenser, events, log, eventInfos, logEntryInfos, refTracker);
 }
 private static ObjectReferenceTracker TrackObject(ExportContext context, object value) 
 {
     Debug.Assert(context != null);
     Debug.Assert(value != null);
     
     //
     // Get the object reference tracker from the current context. If
     // it's not there, then create one.
     //
     
     Type key = typeof(ComponentExporter);
     ObjectReferenceTracker tracker = (ObjectReferenceTracker) context.Items[key];
     
     if (tracker == null)
     {
         tracker = new ObjectReferenceTracker();
         context.Items.Add(key, tracker);
     }
    
     tracker.PushNew(value);
     return tracker;
 }
Ejemplo n.º 8
0
 public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker)
 {
     base.InitializeTask(connections, variableDispenser, events, log, eventInfos, logEntryInfos, refTracker);
 }
Ejemplo n.º 9
0
        /// <summary>Initializes the task.</summary>
        /// <param name="connections">The connections.</param>
        /// <param name="variableDispenser">The variables.</param>
        /// <param name="events">The event subsystem.</param>
        /// <param name="log">The logging subsystem.</param>
        /// <param name="eventInfos">The event info subsystem.</param>
        /// <param name="logEntryInfos">The log entry subsystem.</param>
        /// <param name="refTracker">Reference tracker.</param>
        /// <remarks>
        /// Derived types should not override this method.  Use <see cref="InitializeCore"/> instead.
        /// </remarks>
        public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker)
        {
            var context = new TaskInitializeContext()
            {
                Connections = connections,
                Log         = log,
                Variables   = variableDispenser,

                Events           = events,
                EventInfos       = eventInfos,
                LogEntryInfos    = logEntryInfos,
                ReferenceTracker = refTracker
            };

            //Set the connections for later use
            Connections = connections;

            InitializeCore(context);
        }
Ejemplo n.º 10
0
 public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker)
 {
     Attachments = new List <Attachment>();
 }
Ejemplo n.º 11
0
        /// <summary>
        /// Initializes a new instance of the task at design time.
        /// </summary>
        /// <param name="connections"></param>
        /// <param name="variableDispenser"></param>
        /// <param name="events"></param>
        /// <param name="log"></param>
        /// <param name="eventInfos"></param>
        /// <param name="logEntryInfos"></param>
        /// <param name="refTracker"></param>
        public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker)
        {
            // Initialize public members.
            this.ApplicationName = String.Empty;
            this.IsVerbose       = true;

            // Retrieve system variables.
            this.ResolveSystemVariables(ref variableDispenser);

            base.InitializeTask(connections, variableDispenser, events, log, eventInfos, logEntryInfos, refTracker);
        }
Ejemplo n.º 12
0
 private static ObjectReferenceTracker TrackObject(ExportContext context, object value)
 {
     Type key = typeof(ComponentExporter);
     ObjectReferenceTracker tracker = (ObjectReferenceTracker) context.Items[key];
     if (tracker == null)
     {
         tracker = new ObjectReferenceTracker();
         context.Items.Add(key, tracker);
     }
     tracker.PushNew(value);
     return tracker;
 }