Fix for CONNECTORS-772.

git-svn-id: https://svn.apache.org/repos/asf/manifoldcf/integration/sharepoint-2010/trunk@1521507 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CHANGES.txt b/CHANGES.txt
index 9eabfe6..dceed99 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,6 +3,10 @@
 
 ======================= 0.3-dev =====================
 
+CONNECTORS-772: SharePoint on AWS does not permit using the
+URL to locate the site.
+(Dmitry Goldenberg, Karl Wright)
+
 CONNECTORS-754: Remove dependency on Permissions.asmx.
 (Will Parkinson, Karl Wright)
 
diff --git a/webservice/MCPermissions.cs b/webservice/MCPermissions.cs
index db8ee59..6ae3cb3 100644
--- a/webservice/MCPermissions.cs
+++ b/webservice/MCPermissions.cs
@@ -93,56 +93,53 @@
                 uint startRowParam = Convert.ToUInt32(startRow);

                 uint rowLimitParam = Convert.ToUInt32(rowLimit);

 

-                using (SPSite site = new SPSite(SPContext.Current.Web.Url))

+                using (SPWeb oWebsiteRoot = SPContext.Current.Web)

                 {

-                    using (SPWeb oWebsiteRoot = site.OpenWeb())

+                    if (oWebsiteRoot != null)

                     {

-                        if (oWebsiteRoot != null)

+

+                        oWebsiteRoot.Lists.IncludeRootFolder = true;

+                        SPList oList = oWebsiteRoot.Lists[new Guid(listName)];

+

+                        SPQuery listQuery = new SPQuery();

+                        listQuery.Query = "<OrderBy Override=\"TRUE\"><FieldRef Name=\"FileRef\" /></OrderBy>";

+                        listQuery.QueryThrottleMode = SPQueryThrottleOption.Override;

+                        listQuery.ViewAttributes = "Scope=\"Recursive\"";

+                        listQuery.ViewFields = "<FieldRef Name='FileRef' />";

+                        listQuery.RowLimit = 1000;

+

+                        XmlDocument doc = new XmlDocument();

+                        retVal = doc.CreateElement("GetListItems", 

+                            "http://schemas.microsoft.com/sharepoint/soap/directory/");

+                        XmlNode getListItemsNode = doc.CreateElement("GetListItemsResponse");

+

+                        uint counter = 0;

+                        do

                         {

+                            if (counter >= startRowParam + rowLimitParam)

+                                break;

 

-                            oWebsiteRoot.Lists.IncludeRootFolder = true;

-                            SPList oList = oWebsiteRoot.Lists[new Guid(listName)];

+                            SPListItemCollection collListItems = oList.GetItems(listQuery);

 

-                            SPQuery listQuery = new SPQuery();

-                            listQuery.Query = "<OrderBy Override=\"TRUE\"><FieldRef Name=\"FileRef\" /></OrderBy>";

-                            listQuery.QueryThrottleMode = SPQueryThrottleOption.Override;

-                            listQuery.ViewAttributes = "Scope=\"Recursive\"";

-                            listQuery.ViewFields = "<FieldRef Name='FileRef' />";

-                            listQuery.RowLimit = 1000;

 

-                            XmlDocument doc = new XmlDocument();

-                            retVal = doc.CreateElement("GetListItems", 

-                                "http://schemas.microsoft.com/sharepoint/soap/directory/");

-                            XmlNode getListItemsNode = doc.CreateElement("GetListItemsResponse");

-

-                            uint counter = 0;

-                            do

+                            foreach (SPListItem oListItem in collListItems)

                             {

-                                if (counter >= startRowParam + rowLimitParam)

-                                    break;

-

-                                SPListItemCollection collListItems = oList.GetItems(listQuery);

-

-

-                                foreach (SPListItem oListItem in collListItems)

+                                if (counter >= startRowParam && counter < startRowParam + rowLimitParam)

                                 {

-                                    if (counter >= startRowParam && counter < startRowParam + rowLimitParam)

-                                    {

-                                        XmlNode resultNode = doc.CreateElement("GetListItemsResult");

-                                        XmlAttribute idAttribute = doc.CreateAttribute("FileRef");

-                                        idAttribute.Value = oListItem.Url;

-                                        resultNode.Attributes.Append(idAttribute);

-                                        getListItemsNode.AppendChild(resultNode);

-                                    }

-                                    counter++;

+                                    XmlNode resultNode = doc.CreateElement("GetListItemsResult");

+                                    XmlAttribute idAttribute = doc.CreateAttribute("FileRef");

+                                    idAttribute.Value = oListItem.Url;

+                                    resultNode.Attributes.Append(idAttribute);

+                                    getListItemsNode.AppendChild(resultNode);

                                 }

+                                counter++;

+                            }

                                 

-                                listQuery.ListItemCollectionPosition = collListItems.ListItemCollectionPosition;

+                            listQuery.ListItemCollectionPosition = collListItems.ListItemCollectionPosition;

 

-                            } while (listQuery.ListItemCollectionPosition != null);

+                        } while (listQuery.ListItemCollectionPosition != null);

                             

-                            retVal.AppendChild(getListItemsNode);

-                        }

+                        retVal.AppendChild(getListItemsNode);

                     }

 

                 }