Author: kwright
Date: Wed Sep 18 18:05:35 2013
New Revision: 1524508

URL: http://svn.apache.org/r1524508
Log:
More fixes for path manipulation

Modified:
    
manifoldcf/branches/CONNECTORS-772/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java

Modified: 
manifoldcf/branches/CONNECTORS-772/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-772/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java?rev=1524508&r1=1524507&r2=1524508&view=diff
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-772/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java
 (original)
+++ 
manifoldcf/branches/CONNECTORS-772/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java
 Wed Sep 18 18:05:35 2013
@@ -1250,7 +1250,7 @@ public class SharePointRepository extend
             String listID = proxy.getListID( encodePath(site), site, listName 
);
             if (listID != null)
             {
-              ListItemStream fs = new ListItemStream( activities, 
encodedServerLocation, site, spec );
+              ListItemStream fs = new ListItemStream( activities, 
encodedServerLocation, site, siteListPath, spec );
               boolean success = proxy.getChildren( fs, encodePath(site) , 
listID, dspStsWorks );
               if (!success)
               {
@@ -1420,7 +1420,7 @@ public class SharePointRepository extend
             String libID = proxy.getDocLibID( encodePath(site), site, libName 
);
             if (libID != null)
             {
-              FileStream fs = new FileStream( activities, 
encodedServerLocation, site, spec );
+              FileStream fs = new FileStream( activities, 
encodedServerLocation, site, siteLibPath, spec );
               boolean success = proxy.getChildren( fs, encodePath(site) , 
libID, dspStsWorks );
               if (!success)
               {
@@ -1886,13 +1886,15 @@ public class SharePointRepository extend
     protected final DocumentSpecification spec;
     protected final String rootPath;
     protected final String sitePath;
+    protected final String siteLibPath;
     
-    public FileStream(IProcessActivity activities, String rootPath, String 
sitePath, DocumentSpecification spec)
+    public FileStream(IProcessActivity activities, String rootPath, String 
sitePath, String siteLibPath, DocumentSpecification spec)
     {
       this.activities = activities;
       this.spec = spec;
       this.rootPath = rootPath;
       this.sitePath = sitePath;
+      this.siteLibPath = siteLibPath;
     }
     
     public void addFile(String relPath)
@@ -1914,15 +1916,16 @@ public class SharePointRepository extend
         {
           // Since the processing for a file needs to know the library path, 
we need a way to signal the cutoff between library and folder levels.
           // The way I've chosen to do this is to use a double slash at that 
point, as a separator.
-          if (relPath.startsWith(sitePath))
+          if (relPath.startsWith(siteLibPath))
           {
-            String modifiedPath = relPath.substring(0,sitePath.length()) + "/" 
+ relPath.substring(sitePath.length());
+            // Split at the libpath/file boundary
+            String modifiedPath = siteLibPath + "/" + 
relPath.substring(siteLibPath.length());
 
             activities.addDocumentReference( modifiedPath );
           }
           else
           {
-            Logging.connectors.warn("SharePoint: Unexpected relPath structure; 
path is '"+relPath+"', but expected to see something beginning with 
'"+sitePath+"'");
+            Logging.connectors.warn("SharePoint: Unexpected relPath structure; 
path is '"+relPath+"', but expected to see something beginning with 
'"+siteLibPath+"'");
           }
         }
       }
@@ -1939,13 +1942,15 @@ public class SharePointRepository extend
     protected final DocumentSpecification spec;
     protected final String rootPath;
     protected final String sitePath;
+    protected final String siteListPath;
 
-    public ListItemStream(IProcessActivity activities, String rootPath, String 
sitePath, DocumentSpecification spec)
+    public ListItemStream(IProcessActivity activities, String rootPath, String 
sitePath, String siteListPath, DocumentSpecification spec)
     {
       this.activities = activities;
       this.spec = spec;
       this.rootPath = rootPath;
       this.sitePath = sitePath;
+      this.siteListPath = siteListPath;
     }
     
     public void addFile(String relPath)
@@ -1969,14 +1974,21 @@ public class SharePointRepository extend
           // Now, strip "Lists" from relPath
           if (!relPath.startsWith("/Lists/"))
             throw new ManifoldCFException("Expected path to start with 
/Lists/");
-          relPath = relPath.substring("/Lists".length());
-          if ( checkIncludeListItem( sitePath + relPath, spec ) )
+          relPath = sitePath + relPath.substring("/Lists".length());
+          if ( checkIncludeListItem( relPath, spec ) )
           {
-            // Since the processing for a item needs to know the list path, we 
need a way to signal the cutoff between list and item levels.
-            // The way I've chosen to do this is to use a triple slash at that 
point, as a separator.
-            String modifiedPath = relPath.substring(0,sitePath.length()) + 
"//" + relPath.substring(sitePath.length());
+            if (relPath.startsWith(siteListPath))
+            {
+              // Since the processing for a item needs to know the list path, 
we need a way to signal the cutoff between list and item levels.
+              // The way I've chosen to do this is to use a triple slash at 
that point, as a separator.
+              String modifiedPath = relPath.substring(0,siteListPath.length()) 
+ "//" + relPath.substring(siteListPath.length());
 
-            activities.addDocumentReference( modifiedPath );
+              activities.addDocumentReference( modifiedPath );
+            }
+            else
+            {
+              Logging.connectors.warn("SharePoint: Unexpected relPath 
structure; site path is '"+relPath+"', but expected to see something beginning 
with '"+siteListPath+"'");
+            }
           }
         }
         else


Reply via email to