Exemple #1
0
 internal ExecutionScope(ClientRuntimeContext context, string name, ExecutionScopeDisposingCallback disposingCallback)
 {
     if (context == null)
     {
         throw new ArgumentNullException("context");
     }
     this.m_context = context;
     this.m_name    = name;
     this.m_id      = this.m_context.NextSequenceId;
     this.m_context.PendingRequest.ExecutionScopes.Push(this);
     this.m_clientActionExecutionScopeStart = new ClientActionExecutionScopeStart(this, this.m_name);
     this.m_context.PendingRequest.AddQuery(this.m_clientActionExecutionScopeStart);
     this.m_disposingCallback = disposingCallback;
 }
 private ChunkStringBuilder BuildQuery()
 {
     SerializationContext serializationContext = this.SerializationContext;
     ChunkStringBuilder chunkStringBuilder = new ChunkStringBuilder();
     XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
     xmlWriterSettings.OmitXmlDeclaration = true;
     xmlWriterSettings.NewLineHandling = NewLineHandling.Entitize;
     XmlWriter xmlWriter = XmlWriter.Create(chunkStringBuilder.CreateTextWriter(CultureInfo.InvariantCulture), xmlWriterSettings);
     xmlWriter.WriteStartElement("Request", "http://schemas.microsoft.com/sharepoint/clientquery/2009");
     xmlWriter.WriteAttributeString("AddExpandoFieldTypeSuffix", "true");
     xmlWriter.WriteAttributeString("SchemaVersion", this.Context.RequestSchemaVersion.ToString());
     xmlWriter.WriteAttributeString("LibraryVersion", "16.0.0.0");
     if (!string.IsNullOrEmpty(this.m_context.ApplicationName))
     {
         xmlWriter.WriteAttributeString("ApplicationName", this.m_context.ApplicationName);
     }
     xmlWriter.WriteStartElement("Actions");
     Stack<ExecutionScope> stack = new Stack<ExecutionScope>();
     foreach (ClientAction current in this.m_queries)
     {
         if (current is ClientActionExecutionScopeStart)
         {
             ClientActionExecutionScopeStart clientActionExecutionScopeStart = (ClientActionExecutionScopeStart)current;
             clientActionExecutionScopeStart.Scope.WriteStart(xmlWriter, serializationContext);
             stack.Push(clientActionExecutionScopeStart.Scope);
         }
         else if (current is ClientActionExecutionScopeEnd)
         {
             ClientActionExecutionScopeEnd clientActionExecutionScopeEnd = (ClientActionExecutionScopeEnd)current;
             if (stack.Count == 0 || stack.Pop() != clientActionExecutionScopeEnd.Scope)
             {
                 throw ExceptionHandlingScope.CreateInvalidUsageException();
             }
             clientActionExecutionScopeEnd.Scope.WriteEnd(xmlWriter, serializationContext);
         }
         else
         {
             current.WriteToXml(xmlWriter, serializationContext);
         }
     }
     if (stack.Count > 0)
     {
         throw ExceptionHandlingScope.CreateInvalidUsageException();
     }
     xmlWriter.WriteEndElement();
     xmlWriter.WriteStartElement("ObjectPaths");
     Dictionary<long, ObjectPath> dictionary = new Dictionary<long, ObjectPath>();
     while (true)
     {
         List<long> list = new List<long>();
         foreach (long current2 in serializationContext.Paths.Keys)
         {
             if (!dictionary.ContainsKey(current2))
             {
                 list.Add(current2);
             }
         }
         if (list.Count == 0)
         {
             break;
         }
         for (int i = 0; i < list.Count; i++)
         {
             ObjectPath objectPath = this.m_context.ObjectPaths[list[i]];
             objectPath.WriteToXml(xmlWriter, serializationContext);
             dictionary[list[i]] = objectPath;
         }
     }
     xmlWriter.WriteEndElement();
     xmlWriter.WriteEndElement();
     xmlWriter.Flush();
     return chunkStringBuilder;
 }