internal List <GetOperation> Get(Workspace workspace,
                                         List <GetRequest> requests, bool force, bool noGet)
        {
            if (workspace == null)
            {
                throw new System.ArgumentNullException("workspace");
            }
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("Get");

            msg.Add(new XElement(MessageNs + "workspaceName", workspace.Name));
            msg.Add(new XElement(MessageNs + "ownerName", workspace.OwnerName));
            msg.Add(new XElement(MessageNs + "requests", requests.Select(r => r.ToXml(MessageNs))));
            if (force)
            {
                msg.Add(new XElement(MessageNs + "force", force.ToLowString()));
            }
            if (noGet)
            {
                msg.Add(new XElement(MessageNs + "noGet", noGet.ToLowString()));
            }

            List <GetOperation> operations = new List <GetOperation>();
            var result = invoker.InvokeResult();

            foreach (var operation in result.XPathSelectElements("msg:ArrayOfGetOperation/msg:GetOperation", NsResolver))
            {
                operations.Add(GetOperation.FromXml(operation));
            }
            return(operations);
        }
        //    <QueryItems xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/ClientServices/03">
        //      <workspaceName>string</workspaceName>
        //      <workspaceOwner>string</workspaceOwner>
        //      <items>
        //        <ItemSpec item="string" recurse="None or OneLevel or Full" did="int" />
        //        <ItemSpec item="string" recurse="None or OneLevel or Full" did="int" />
        //      </items>
        //      <version />
        //      <deletedState>NonDeleted or Deleted or Any</deletedState>
        //      <itemType>Any or Folder or File</itemType>
        //      <generateDownloadUrls>boolean</generateDownloadUrls>
        //      <options>int</options>
        //    </QueryItems>
        public List <Item> QueryItems(string workspaceName, string workspaceOwner, ItemSpec[] itemSpecs, VersionSpec versionSpec,
                                      DeletedState deletedState, ItemType itemType,
                                      bool includeDownloadInfo)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("QueryItems");

            if (!string.IsNullOrEmpty(workspaceName))
            {
                msg.Add(new XElement(MessageNs + "workspaceName", workspaceName));
            }
            if (!string.IsNullOrEmpty(workspaceOwner))
            {
                msg.Add(new XElement(MessageNs + "workspaceOwner", workspaceOwner));
            }
            msg.Add(new XElement(MessageNs + "items", itemSpecs.Select(itemSpec => itemSpec.ToXml(MessageNs + "ItemSpec"))));
            msg.Add(versionSpec.ToXml(MessageNs + "version"));
            msg.Add(new XElement(MessageNs + "deletedState", deletedState));
            msg.Add(new XElement(MessageNs + "itemType", itemType));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", includeDownloadInfo.ToLowString()));

            var result = invoker.InvokeResult();

            return(result.Descendants(MessageNs + "Item").Select(Item.FromXml).ToList());
        }
        public List <Changeset> QueryHistory(ItemSpec item, VersionSpec versionItem,
                                             VersionSpec versionFrom, VersionSpec versionTo, int maxCount = short.MaxValue)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("QueryHistory");

            msg.Add(item.ToXml(MessageNs + "itemSpec"));
            msg.Add(versionItem.ToXml(MessageNs + "versionItem"));
            if (versionFrom != null)
            {
                msg.Add(versionFrom.ToXml(MessageNs + "versionFrom"));
            }
            if (versionTo != null)
            {
                msg.Add(versionTo.ToXml(MessageNs + "versionTo"));
            }
            msg.Add(new XElement(MessageNs + "maxCount", maxCount));
            msg.Add(new XElement(MessageNs + "includeFiles", false));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", false));
            msg.Add(new XElement(MessageNs + "slotMode", false));
            msg.Add(new XElement(MessageNs + "sortAscending", false));

            var result = invoker.InvokeResult();

            return(result.Elements(MessageNs + "Changeset").Select(Changeset.FromXml).ToList());
        }
        //    <DeleteWorkspace xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/ClientServices/03">
        //      <workspaceName>string</workspaceName>
        //      <ownerName>string</ownerName>
        //    </DeleteWorkspace>
        public void DeleteWorkspace(string workspaceName, string ownerName)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("DeleteWorkspace");

            msg.Add(new XElement(MessageNs + "workspaceName", workspaceName));
            msg.Add(new XElement(MessageNs + "ownerName", ownerName));
            invoker.InvokeResult();
        }
        public Workspace QueryWorkspace(string ownerName, string workspaceName)
        {
            var invoker = new SoapInvoker(this);
            XElement msg = invoker.CreateEnvelope("QueryWorkspace");
            msg.Add(new XElement(MessageNs + "workspaceName", workspaceName));
            msg.Add(new XElement(MessageNs + "ownerName", ownerName));

            XElement result = invoker.InvokeResult();
            return Workspace.FromXml(this, result);
        }
        public Workspace CreateWorkspace(Workspace workspace)
        {
            var      invoker = new SoapInvoker(this);
            XElement msg     = invoker.CreateEnvelope("CreateWorkspace");

            msg.Add(workspace.ToXml(MessageNs + "workspace"));
            XElement result = invoker.InvokeResult();

            return(Workspace.FromXml(this, result));
        }
        internal void UpdateLocalVersion(UpdateLocalVersionQueue updateLocalVersionQueue)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("UpdateLocalVersion");

            foreach (var el in updateLocalVersionQueue.ToXml(MessageNs))
            {
                msg.Add(el);
            }
            invoker.InvokeResult();
        }
        internal List <GetOperation> UndoPendChanges(Workspace workspace, List <ItemSpec> itemSpecs)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("UndoPendingChanges");

            msg.Add(new XElement(MessageNs + "workspaceName", workspace.Name));
            msg.Add(new XElement(MessageNs + "ownerName", workspace.OwnerName));
            msg.Add(new XElement(MessageNs + "items", itemSpecs.Select(x => x.ToXml(MessageNs + "ItemSpec"))));
            var result = invoker.InvokeResult();

            return(GetOperationExtractor(result));
        }
        public Workspace QueryWorkspace(string ownerName, string workspaceName)
        {
            var      invoker = new SoapInvoker(this);
            XElement msg     = invoker.CreateEnvelope("QueryWorkspace");

            msg.Add(new XElement(MessageNs + "workspaceName", workspaceName));
            msg.Add(new XElement(MessageNs + "ownerName", ownerName));

            XElement result = invoker.InvokeResult();

            return(Workspace.FromXml(this, result));
        }
        internal List <PendingChange> QueryPendingChangesForWorkspace(Workspace workspace, List <ItemSpec> itemSpecs, bool includeDownloadInfo)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("QueryPendingChangesForWorkspace");

            msg.Add(new XElement(MessageNs + "workspaceName", workspace.Name));
            msg.Add(new XElement(MessageNs + "workspaceOwner", workspace.OwnerName));
            msg.Add(new XElement(MessageNs + "itemSpecs", itemSpecs.Select(i => i.ToXml(MessageNs + "ItemSpec"))));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", includeDownloadInfo.ToLowString()));
            var result = invoker.InvokeResult();

            return(result.Elements(MessageNs + "PendingChange").Select(PendingChange.FromXml).ToList());
        }
        internal List <Conflict> QueryConflicts(Workspace workspace, List <ItemSpec> items)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("QueryConflicts");

            msg.Add(new XElement(MessageNs + "workspaceName", workspace.Name));
            msg.Add(new XElement(MessageNs + "ownerName", workspace.OwnerName));
            msg.Add(new XElement(MessageNs + "items", items.Select(itemSpec => itemSpec.ToXml(MessageNs + "ItemSpec"))));

            var result = invoker.InvokeResult();

            return(ConflictExtractor(result, workspace));
        }
        public Workspace UpdateWorkspace(string oldWorkspaceName, string ownerName,
                                         Workspace newWorkspace)
        {
            var      invoker = new SoapInvoker(this);
            XElement msg     = invoker.CreateEnvelope("UpdateWorkspace");

            msg.Add(new XElement(MessageNs + "oldWorkspaceName", oldWorkspaceName));
            msg.Add(new XElement(MessageNs + "ownerName", ownerName));
            msg.Add(newWorkspace.ToXml(MessageNs + "newWorkspace"));

            XElement result = invoker.InvokeResult();

            return(Workspace.FromXml(this, result));
        }
        public Changeset QueryChangeset(int changeSetId, bool includeChanges = false, bool includeDownloadUrls = false, bool includeSourceRenames = true)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("QueryChangeset");

            msg.Add(new XElement(MessageNs + "changesetId", changeSetId));
            msg.Add(new XElement(MessageNs + "includeChanges", includeChanges));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", includeDownloadUrls));
            msg.Add(new XElement(MessageNs + "includeSourceRenames", includeSourceRenames));

            var result = invoker.InvokeResult();

            return(Changeset.FromXml(result));
        }
        public List<Workspace> QueryWorkspaces(string ownerName, string computer)
        {
            var invoker = new SoapInvoker(this);
            XElement msg = invoker.CreateEnvelope("QueryWorkspaces");
            if (!string.IsNullOrEmpty(ownerName))
                msg.Add(new XElement(MessageNs + "ownerName", ownerName));
            if (!string.IsNullOrEmpty(computer))
                msg.Add(new XElement(MessageNs + "computer", computer));

            List<Workspace> workspaces = new List<Workspace>();
            XElement result = invoker.InvokeResult();
            workspaces.AddRange(result.Elements(MessageNs + "Workspace").Select(el => Workspace.FromXml(this, el)));
            workspaces.Sort();
            return workspaces;
        }
        //    <QueryItemsExtended xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/ClientServices/03">
        //      <workspaceName>string</workspaceName>
        //      <workspaceOwner>string</workspaceOwner>
        //      <items>
        //        <ItemSpec item="string" recurse="None or OneLevel or Full" did="int" />
        //        <ItemSpec item="string" recurse="None or OneLevel or Full" did="int" />
        //      </items>
        //      <deletedState>NonDeleted or Deleted or Any</deletedState>
        //      <itemType>Any or Folder or File</itemType>
        //      <options>int</options>
        //    </QueryItemsExtended>
        public List <ExtendedItem> QueryItemsExtended(string workspaceName, string workspaceOwner, List <ItemSpec> itemSpecs,
                                                      DeletedState deletedState, ItemType itemType)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("QueryItemsExtended");

            msg.Add(new XElement(MessageNs + "workspaceName", workspaceName));
            msg.Add(new XElement(MessageNs + "workspaceOwner", workspaceOwner));
            msg.Add(new XElement(MessageNs + "items", itemSpecs.Select(itemSpec => itemSpec.ToXml(MessageNs + "ItemSpec"))));
            msg.Add(new XElement(MessageNs + "deletedState", deletedState));
            msg.Add(new XElement(MessageNs + "itemType", itemType));

            var result = invoker.InvokeResult();

            return(result.Descendants(MessageNs + "ExtendedItem").Select(ExtendedItem.FromXml).ToList());
        }
        public List <Workspace> QueryWorkspaces(string ownerName, string computer)
        {
            var      invoker = new SoapInvoker(this);
            XElement msg     = invoker.CreateEnvelope("QueryWorkspaces");

            if (!string.IsNullOrEmpty(ownerName))
            {
                msg.Add(new XElement(MessageNs + "ownerName", ownerName));
            }
            if (!string.IsNullOrEmpty(computer))
            {
                msg.Add(new XElement(MessageNs + "computer", computer));
            }

            List <Workspace> workspaces = new List <Workspace>();
            XElement         result     = invoker.InvokeResult();

            workspaces.AddRange(result.Elements(MessageNs + "Workspace").Select(el => Workspace.FromXml(this, el)));
            workspaces.Sort();
            return(workspaces);
        }
        public List <PendingSet> QueryPendingSets(string localWorkspaceName, string localWorkspaceOwner,
                                                  string queryWorkspaceName, string ownerName,
                                                  ItemSpec[] itemSpecs, bool generateDownloadUrls)
        {
            var invoker = new SoapInvoker(this);
            var msg     = invoker.CreateEnvelope("QueryPendingSets");

            msg.Add(new XElement(MessageNs + "localWorkspaceName", localWorkspaceName));
            msg.Add(new XElement(MessageNs + "localWorkspaceOwner", localWorkspaceOwner));
            msg.Add(new XElement(MessageNs + "queryWorkspaceName", queryWorkspaceName));
            msg.Add(new XElement(MessageNs + "ownerName", ownerName));
            msg.Add(new XElement(MessageNs + "itemSpecs", itemSpecs.Select(i => i.ToXml(MessageNs + "ItemSpec"))));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", generateDownloadUrls.ToLowString()));

            var result = invoker.InvokeResult();

            return(new List <PendingSet>(result.Elements(MessageNs + "PendingSet").Select(PendingSet.FromXml)));
//            var pendingChangesElements = result.Descendants(MessageNs + "PendingChange");
//            var failuresElements = result.Descendants(MessageNs + "PendingChange");
//
//            var changes = new List<PendingChange>(pendingChangesElements.Select(el => PendingChange.FromXml(el)));
//            var faillist = new List<Failure>(failuresElements.Select(el => Failure.FromXml(el)));
//            return new Tuple<List<PendingChange>, List<Failure>>(changes, faillist);
        }
 internal void UpdateLocalVersion(UpdateLocalVersionQueue updateLocalVersionQueue)
 {
     var invoker = new SoapInvoker(this);
     var msg = invoker.CreateEnvelope("UpdateLocalVersion");
     foreach (var el in updateLocalVersionQueue.ToXml(MessageNs))
     {
         msg.Add(el);
     }
     invoker.InvokeResult();
 }
        //    <QueryItems xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/ClientServices/03">
        //      <workspaceName>string</workspaceName>
        //      <workspaceOwner>string</workspaceOwner>
        //      <items>
        //        <ItemSpec item="string" recurse="None or OneLevel or Full" did="int" />
        //        <ItemSpec item="string" recurse="None or OneLevel or Full" did="int" />
        //      </items>
        //      <version />
        //      <deletedState>NonDeleted or Deleted or Any</deletedState>
        //      <itemType>Any or Folder or File</itemType>
        //      <generateDownloadUrls>boolean</generateDownloadUrls>
        //      <options>int</options>
        //    </QueryItems>
        public List<Item> QueryItems(string workspaceName, string workspaceOwner, ItemSpec[] itemSpecs, VersionSpec versionSpec,
                                     DeletedState deletedState, ItemType itemType, 
                                     bool includeDownloadInfo)
        {
            var invoker = new SoapInvoker(this);
            var msg = invoker.CreateEnvelope("QueryItems");
            if (!string.IsNullOrEmpty(workspaceName))
                msg.Add(new XElement(MessageNs + "workspaceName", workspaceName));
            if (!string.IsNullOrEmpty(workspaceOwner))
                msg.Add(new XElement(MessageNs + "workspaceOwner", workspaceOwner));
            msg.Add(new XElement(MessageNs + "items", itemSpecs.Select(itemSpec => itemSpec.ToXml(MessageNs + "ItemSpec"))));
            msg.Add(versionSpec.ToXml(MessageNs + "version"));
            msg.Add(new XElement(MessageNs + "deletedState", deletedState));
            msg.Add(new XElement(MessageNs + "itemType", itemType));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", includeDownloadInfo.ToLowString()));

            var result = invoker.InvokeResult();
            return result.Descendants(MessageNs + "Item").Select(Item.FromXml).ToList();
        }
        //    <QueryItemsExtended xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/ClientServices/03">
        //      <workspaceName>string</workspaceName>
        //      <workspaceOwner>string</workspaceOwner>
        //      <items>
        //        <ItemSpec item="string" recurse="None or OneLevel or Full" did="int" />
        //        <ItemSpec item="string" recurse="None or OneLevel or Full" did="int" />
        //      </items>
        //      <deletedState>NonDeleted or Deleted or Any</deletedState>
        //      <itemType>Any or Folder or File</itemType>
        //      <options>int</options>
        //    </QueryItemsExtended>
        public List<ExtendedItem> QueryItemsExtended(string workspaceName, string workspaceOwner, List<ItemSpec>  itemSpecs,
                                                     DeletedState deletedState, ItemType itemType)
        {
            var invoker = new SoapInvoker(this);
            var msg = invoker.CreateEnvelope("QueryItemsExtended");
            msg.Add(new XElement(MessageNs + "workspaceName", workspaceName));
            msg.Add(new XElement(MessageNs + "workspaceOwner", workspaceOwner));
            msg.Add(new XElement(MessageNs + "items", itemSpecs.Select(itemSpec => itemSpec.ToXml(MessageNs + "ItemSpec"))));
            msg.Add(new XElement(MessageNs + "deletedState", deletedState));
            msg.Add(new XElement(MessageNs + "itemType", itemType));

            var result = invoker.InvokeResult();
            return result.Descendants(MessageNs + "ExtendedItem").Select(ExtendedItem.FromXml).ToList();
        }
        internal List<GetOperation> Get(Workspace workspace,
                                        List<GetRequest> requests, bool force, bool noGet)
        {
            if (workspace == null)
                throw new System.ArgumentNullException("workspace");
            var invoker = new SoapInvoker(this);
            var msg = invoker.CreateEnvelope("Get");
            msg.Add(new XElement(MessageNs + "workspaceName", workspace.Name));
            msg.Add(new XElement(MessageNs + "ownerName", workspace.OwnerName));
            msg.Add(new XElement(MessageNs + "requests", requests.Select(r => r.ToXml(MessageNs))));
            if (force)
                msg.Add(new XElement(MessageNs + "force", force.ToLowString()));
            if (noGet)
                msg.Add(new XElement(MessageNs + "noGet", noGet.ToLowString()));

            List<GetOperation> operations = new List<GetOperation>();
            var result = invoker.InvokeResult();

            foreach (var operation in result.XPathSelectElements("msg:ArrayOfGetOperation/msg:GetOperation", NsResolver))
            {
                operations.Add(GetOperation.FromXml(operation));
            }
            return operations;
        }
        public List<PendingSet> QueryPendingSets(string localWorkspaceName, string localWorkspaceOwner,
                                                 string queryWorkspaceName, string ownerName,
                                                 ItemSpec[] itemSpecs, bool generateDownloadUrls)
        {
            var invoker = new SoapInvoker(this);
            var msg = invoker.CreateEnvelope("QueryPendingSets");
            msg.Add(new XElement(MessageNs + "localWorkspaceName", localWorkspaceName));
            msg.Add(new XElement(MessageNs + "localWorkspaceOwner", localWorkspaceOwner));
            msg.Add(new XElement(MessageNs + "queryWorkspaceName", queryWorkspaceName));
            msg.Add(new XElement(MessageNs + "ownerName", ownerName));
            msg.Add(new XElement(MessageNs + "itemSpecs", itemSpecs.Select(i => i.ToXml(MessageNs + "ItemSpec"))));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", generateDownloadUrls.ToLowString()));

            var result = invoker.InvokeResult();
            return new List<PendingSet>(result.Elements(MessageNs + "PendingSet").Select(PendingSet.FromXml));
//            var pendingChangesElements = result.Descendants(MessageNs + "PendingChange");
//            var failuresElements = result.Descendants(MessageNs + "PendingChange");
//
//            var changes = new List<PendingChange>(pendingChangesElements.Select(el => PendingChange.FromXml(el)));
//            var faillist = new List<Failure>(failuresElements.Select(el => Failure.FromXml(el)));
//            return new Tuple<List<PendingChange>, List<Failure>>(changes, faillist);
        }
 internal List<GetOperation> UndoPendChanges(Workspace workspace, List<ItemSpec> itemSpecs)
 {
     var invoker = new SoapInvoker(this);
     var msg = invoker.CreateEnvelope("UndoPendingChanges");
     msg.Add(new XElement(MessageNs + "workspaceName", workspace.Name));
     msg.Add(new XElement(MessageNs + "ownerName", workspace.OwnerName));
     msg.Add(new XElement(MessageNs + "items", itemSpecs.Select(x => x.ToXml(MessageNs + "ItemSpec"))));
     var result = invoker.InvokeResult();
     return GetOperationExtractor(result);
 }
 internal List<PendingChange> QueryPendingChangesForWorkspace(Workspace workspace, List<ItemSpec> itemSpecs, bool includeDownloadInfo)
 {
     var invoker = new SoapInvoker(this);
     var msg = invoker.CreateEnvelope("QueryPendingChangesForWorkspace");
     msg.Add(new XElement(MessageNs + "workspaceName", workspace.Name));
     msg.Add(new XElement(MessageNs + "workspaceOwner", workspace.OwnerName));
     msg.Add(new XElement(MessageNs + "itemSpecs", itemSpecs.Select(i => i.ToXml(MessageNs + "ItemSpec"))));
     msg.Add(new XElement(MessageNs + "generateDownloadUrls", includeDownloadInfo.ToLowString()));
     var result = invoker.InvokeResult();
     return result.Elements(MessageNs + "PendingChange").Select(PendingChange.FromXml).ToList();
 }
        public List<Changeset> QueryHistory(ItemSpec item, VersionSpec versionItem, 
                                            VersionSpec versionFrom, VersionSpec versionTo, int maxCount = short.MaxValue)
        {
            var invoker = new SoapInvoker(this);
            var msg = invoker.CreateEnvelope("QueryHistory");
            msg.Add(item.ToXml(MessageNs + "itemSpec"));
            msg.Add(versionItem.ToXml(MessageNs + "versionItem"));
            if (versionFrom != null)
                msg.Add(versionFrom.ToXml(MessageNs + "versionFrom"));
            if (versionTo != null)
                msg.Add(versionTo.ToXml(MessageNs + "versionTo"));
            msg.Add(new XElement(MessageNs + "maxCount", maxCount));
            msg.Add(new XElement(MessageNs + "includeFiles", false));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", false));
            msg.Add(new XElement(MessageNs + "slotMode", false));
            msg.Add(new XElement(MessageNs + "sortAscending", false));

            var result = invoker.InvokeResult();
            return result.Elements(MessageNs + "Changeset").Select(Changeset.FromXml).ToList();
        }
        public Changeset QueryChangeset(int changeSetId, bool includeChanges = false, bool includeDownloadUrls = false, bool includeSourceRenames = true)
        {
            var invoker = new SoapInvoker(this);
            var msg = invoker.CreateEnvelope("QueryChangeset");
            msg.Add(new XElement(MessageNs + "changesetId", changeSetId));
            msg.Add(new XElement(MessageNs + "includeChanges", includeChanges));
            msg.Add(new XElement(MessageNs + "generateDownloadUrls", includeDownloadUrls));
            msg.Add(new XElement(MessageNs + "includeSourceRenames", includeSourceRenames));

            var result = invoker.InvokeResult();
            return Changeset.FromXml(result);
        }
 //    <DeleteWorkspace xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/ClientServices/03">
 //      <workspaceName>string</workspaceName>
 //      <ownerName>string</ownerName>
 //    </DeleteWorkspace>
 public void DeleteWorkspace(string workspaceName, string ownerName)
 {
     var invoker = new SoapInvoker(this);
     var msg = invoker.CreateEnvelope("DeleteWorkspace");
     msg.Add(new XElement(MessageNs + "workspaceName", workspaceName));
     msg.Add(new XElement(MessageNs + "ownerName", ownerName));
     invoker.InvokeResult();
 }
        public Workspace UpdateWorkspace(string oldWorkspaceName, string ownerName,
                                         Workspace newWorkspace)
        {
            var invoker = new SoapInvoker(this);
            XElement msg = invoker.CreateEnvelope("UpdateWorkspace");

            msg.Add(new XElement(MessageNs + "oldWorkspaceName", oldWorkspaceName));
            msg.Add(new XElement(MessageNs + "ownerName", ownerName));
            msg.Add(newWorkspace.ToXml(MessageNs + "newWorkspace"));

            XElement result = invoker.InvokeResult();
            return Workspace.FromXml(this, result);
        }
 public Workspace CreateWorkspace(Workspace workspace)
 {
     var invoker = new SoapInvoker(this);
     XElement msg = invoker.CreateEnvelope("CreateWorkspace");
     msg.Add(workspace.ToXml(MessageNs + "workspace"));
     XElement result = invoker.InvokeResult();
     return Workspace.FromXml(this, result);
 }
        internal List<Conflict> QueryConflicts(Workspace workspace, List<ItemSpec> items)
        {
            var invoker = new SoapInvoker(this);
            var msg = invoker.CreateEnvelope("QueryConflicts");
            msg.Add(new XElement(MessageNs + "workspaceName", workspace.Name));
            msg.Add(new XElement(MessageNs + "ownerName", workspace.OwnerName));
            msg.Add(new XElement(MessageNs + "items", items.Select(itemSpec => itemSpec.ToXml(MessageNs + "ItemSpec"))));

            var result = invoker.InvokeResult();
            return ConflictExtractor(result, workspace);
        }