Author: schuch
Date: Fri Sep 13 09:24:32 2019
New Revision: 1866889

URL: http://svn.apache.org/viewvc?rev=1866889&view=rev
Log:
make the data collection configurable

Modified:
    
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java
    
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsParameters.java
    
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsSession.java
    
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_en_US.properties
    
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_es_ES.properties
    
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_fr_FR.properties
    
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_ja_JP.properties
    
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_zh_CN.properties
    
manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration.js
    
manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration_Server.html

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java
 Fri Sep 13 09:24:32 2019
@@ -171,12 +171,12 @@ public class CswsConnector extends org.a
 
   // Data required for maintaining csws connection
   private CswsSession cswsSession = null;
-  
+
   // Workspace Nodes (computed once and cached); should contain both 
enterprise and category workspaces
   private Map<String, Node> workspaceNodes = new HashMap<>();
   private Long enterpriseWSID = null;
   private Long categoryWSID = null;
-    
+
   // Parameter values we need
   private String serverProtocol = null;
   private String serverName = null;
@@ -188,6 +188,7 @@ public class CswsConnector extends org.a
   private String contentServiceServicePath = null;
   private String memberServiceServicePath = null;
   private String searchServiceServicePath = null;
+  private String dataCollection = null;
   private String serverHTTPNTLMDomain = null;
   private String serverHTTPNTLMUsername = null;
   private String serverHTTPNTLMPassword = null;
@@ -202,7 +203,7 @@ public class CswsConnector extends org.a
   // Connection management
   private HttpClientConnectionManager connectionManager = null;
   private HttpClient httpClient = null;
-  
+
   // Base path for viewing
   private String viewBasePath = null;
 
@@ -278,11 +279,11 @@ public class CswsConnector extends org.a
         for (final String workspaceName : workspaceNames) {
           workspaceNodes.put(workspaceName, 
cswsSession.getRootNode(workspaceName));
         }
-        
+
         if (enterpriseWSName == null || categoryWSName == null) {
           throw new ManifoldCFException("Could not locate either enterprise or 
category workspaces");
         }
-        
+
         enterpriseWSID = workspaceNodes.get(enterpriseWSName).getID();
         categoryWSID = workspaceNodes.get(categoryWSName).getID();
 
@@ -312,7 +313,7 @@ public class CswsConnector extends org.a
          throw new RuntimeException("Unrecognized exception type: 
"+thr.getClass().getName()+": "+thr.getMessage(),thr);
       }
     }
-    
+
   }
 
   /** Get the bin name string for a document identifier.  The bin name 
describes the queue to which the
@@ -353,6 +354,7 @@ public class CswsConnector extends org.a
       contentServiceServicePath = 
params.getParameter(CswsParameters.contentServicePath);
       memberServiceServicePath = 
params.getParameter(CswsParameters.memberServicePath);
       searchServiceServicePath = 
params.getParameter(CswsParameters.searchServicePath);
+      dataCollection = params.getParameter(CswsParameters.dataCollection);
       serverHTTPNTLMDomain = 
params.getParameter(CswsParameters.serverHTTPNTLMDomain);
       serverHTTPNTLMUsername = 
params.getParameter(CswsParameters.serverHTTPNTLMUsername);
       serverHTTPNTLMPassword = 
params.getObfuscatedParameter(CswsParameters.serverHTTPNTLMPassword);
@@ -362,12 +364,12 @@ public class CswsConnector extends org.a
 
       if (serverProtocol == null || serverProtocol.length() == 0)
         serverProtocol = "http";
-      
+
       if (serverPortString == null)
         serverPort = 2099;
       else
         serverPort = new Integer(serverPortString).intValue();
-      
+
       if (serverHTTPNTLMDomain != null && serverHTTPNTLMDomain.length() == 0)
         serverHTTPNTLMDomain = null;
       if (serverHTTPNTLMUsername == null || serverHTTPNTLMUsername.length() == 
0)
@@ -375,7 +377,7 @@ public class CswsConnector extends org.a
         serverHTTPNTLMUsername = null;
         serverHTTPNTLMPassword = null;
       }
-      
+
       // Set up server ssl if indicated
       String serverHTTPSKeystoreData = 
params.getParameter(CswsParameters.serverHTTPSKeystore);
       if (serverHTTPSKeystoreData != null)
@@ -383,7 +385,7 @@ public class CswsConnector extends org.a
 
       // View parameters
       // View parameter processing
-      
+
       if (viewProtocol == null || viewProtocol.length() == 0)
       {
         if (serverProtocol == null)
@@ -428,7 +430,7 @@ public class CswsConnector extends org.a
 
       if (viewCgiPath == null || viewCgiPath.length() == 0)
         viewCgiPath = "";
-      
+
       if (viewServerName == null || viewServerName.length() == 0)
         viewServerName = serverName;
 
@@ -437,7 +439,7 @@ public class CswsConnector extends org.a
       hasSessionParameters = true;
     }
   }
-  
+
   protected void getSession()
     throws ManifoldCFException, ServiceInterruption
   {
@@ -473,7 +475,7 @@ public class CswsConnector extends org.a
         .setSoTimeout(socketTimeout)
         .build());
       connectionManager = poolingConnectionManager;
-      
+
       CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
 
       // Set up authentication to use
@@ -515,7 +517,7 @@ public class CswsConnector extends org.a
       }
 
       // Construct a new csws session object for setting up this session
-      cswsSession = new CswsSession(serverUsername, serverPassword, 
serverHTTPSKeystore, 1000L * 60L * 15L, 
+      cswsSession = new CswsSession(serverUsername, serverPassword, 
serverHTTPSKeystore, 1000L * 60L * 15L,
         authenticationServiceURL, documentManagementServiceURL, 
contentServiceServiceURL, memberServiceServiceURL, searchServiceServiceURL);
 
       final GetSessionThread t = new GetSessionThread();
@@ -610,7 +612,7 @@ public class CswsConnector extends org.a
       }
     }
   }
-  
+
   /** This method is called to assess whether to count this connector instance 
should
   * actually be counted as being connected.
   *@return true if the connector instance is actually connected.
@@ -642,7 +644,7 @@ public class CswsConnector extends org.a
     contentServiceServicePath = null;
     memberServiceServicePath = null;
     searchServiceServicePath = null;
-    
+
     serverHTTPNTLMDomain = null;
     serverHTTPNTLMUsername = null;
     serverHTTPNTLMPassword = null;
@@ -658,7 +660,7 @@ public class CswsConnector extends org.a
     workspaceNodes.clear();
     enterpriseWSID = null;
     categoryWSID = null;
-    
+
     if (connectionManager != null)
     {
       connectionManager.shutdown();
@@ -744,7 +746,7 @@ public class CswsConnector extends org.a
     else if (command.startsWith("folders/"))
     {
       String path = command.substring("folders/".length());
-      
+
       try
       {
         String[] folders = getChildFolderNames(path);
@@ -821,7 +823,7 @@ public class CswsConnector extends org.a
       return super.requestInfo(output,command);
     return true;
   }
-  
+
   /** Queue "seed" documents.  Seed documents are the starting places for 
crawling activity.  Documents
   * are seeded when this method calls appropriate methods in the passed in 
ISeedingActivity object.
   *
@@ -857,7 +859,7 @@ public class CswsConnector extends org.a
     Logging.connectors.debug("Csws: addSeedDocuments");
     getSession();
     CswsContext llc = new CswsContext();
-    
+
     // First, grab the root object
     ObjectInformation rootValue = llc.getObjectInformation(enterpriseWSID);
     if (!rootValue.exists())
@@ -867,9 +869,9 @@ public class CswsConnector extends org.a
       throw new ServiceInterruption("Service interruption during seeding",new 
ManifoldCFException("Could not looking root workspace object during 
seeding"),System.currentTimeMillis()+60000L,
         System.currentTimeMillis()+600000L,-1,true);
     }
-    
+
     Logging.connectors.debug("Csws: Picking up starting paths");
-    
+
     // Walk the specification for the "startpoint" types.  Amalgamate these 
into a list of strings.
     // Presume that all roots are startpoint nodes
     boolean doUserWorkspaces = false;
@@ -907,7 +909,7 @@ public class CswsConnector extends org.a
         else if (value != null && value.equals("false"))
           doUserWorkspaces = false;
       }
-      
+
       if (doUserWorkspaces)
       {
         // Do ListUsers and enumerate the values.
@@ -916,7 +918,7 @@ public class CswsConnector extends org.a
           Logging.connectors.debug("Csws: Going through user workspaces");
           t.start();
           final PageHandle resultPageHandle = t.finishUp();
-        
+
           // Now walk through the results and add them
           while (true) {
             final GetUserResultsThread t2 = new 
GetUserResultsThread(resultPageHandle);
@@ -927,15 +929,15 @@ public class CswsConnector extends org.a
                 // We're done
                 break;
               }
-            
+
               for (final Member m : childrenDocs)
               {
                 final long childID = m.getID();
-            
+
                 // Skip admin user
                 if (childID == 1000L || childID == 1001L)
                   continue;
-                
+
                 if (Logging.connectors.isDebugEnabled())
                   Logging.connectors.debug("Csws: Found a user: ID="+childID);
 
@@ -958,7 +960,7 @@ public class CswsConnector extends org.a
       }
       Logging.connectors.debug("Csws: Done user workspaces");
     }
-    
+
     return "";
   }
 
@@ -980,13 +982,13 @@ public class CswsConnector extends org.a
     IProcessActivity activities, int jobMode, boolean usesDefaultAuthority)
     throws ManifoldCFException, ServiceInterruption
   {
-    
+
     // Initialize a "livelink context", to minimize the number of objects we 
have to fetch
     CswsContext llc = new CswsContext();
     // Initialize the table of catid's.
     // Keeping this around will allow us to benefit from batching of documents.
     MetadataDescription desc = new MetadataDescription(llc);
-    
+
     // First, process the spec to get the string we tack on
     SystemMetadataDescription sDesc = new SystemMetadataDescription(llc,spec);
 
@@ -1035,12 +1037,12 @@ public class CswsConnector extends org.a
 
       // Read the document or folder metadata, which includes the ModifyDate
       String docID = documentIdentifier;
-      
+
       boolean isFolder = docID.startsWith("F");
       long objID = new Long(docID.substring(1)).longValue();
 
       getSession();
-      
+
       final ObjectInformation value = llc.getObjectInformation(objID);
       if (!value.exists())
       {
@@ -1049,7 +1051,7 @@ public class CswsConnector extends org.a
         activities.deleteDocument(documentIdentifier);
         continue;
       }
-        
+
       // Make sure we have permission to see the object's contents
       final NodePermissions permissions = value.getPermissions();
       if (!permissions.isSeeContentsPermission())
@@ -1071,9 +1073,9 @@ public class CswsConnector extends org.a
         activities.deleteDocument(documentIdentifier);
         continue;
       }
-        
+
       // We were able to get rights, so object still exists.
-          
+
       if (isFolder)
       {
         // === Csws folder ===
@@ -1082,8 +1084,8 @@ public class CswsConnector extends org.a
         if (Logging.connectors.isDebugEnabled()) {
           Logging.connectors.debug("Csws: Processing folder "+objID);
         }
-        
-        final ListObjectsThread t = new ListObjectsThread(objID, new 
String[]{"OTDataID", "OTSubTypeName", "OTName"}, filterString, "OTDataID");
+
+        final ListObjectsThread t = new ListObjectsThread(objID, new 
String[]{"OTDataID", "OTSubTypeName", "OTName"}, dataCollection, filterString, 
"OTDataID");
         t.start();
         final List<? extends SGraph> childrenDocs;
         try {
@@ -1098,15 +1100,15 @@ public class CswsConnector extends org.a
           final long childID = getID(childDoc, 0);
           final String subType = getString(childDoc, 2);
           final String name = getString(childDoc, 1);
-          
+
           if (Logging.connectors.isDebugEnabled())
           {
             Logging.connectors.debug("Csws: Found a child of folder "+objID+" 
: ID="+childID);
           }
-          
+
           // All we need to know is whether the child is a container or not, 
and there is a way to do that directly from the node
           final boolean childIsFolder = subType.equals("Folder") || 
subType.equals("Project") || subType.equals("CompoundDocument");
-          
+
           // If it's a folder, we just let it through for now
           if (!childIsFolder)
           {
@@ -1151,14 +1153,14 @@ public class CswsConnector extends org.a
       else
       {
         // === Csws document ===
-              
+
         // The version string includes the following:
         // 1) The modify date for the document
         // 2) The rights for the document, ordered (which can change without 
changing the ModifyDate field)
         // 3) The requested metadata fields (category and attribute, ordered) 
for the document
         //
         // The document identifiers are object id's.
-  
+
         StringBuilder sb = new StringBuilder();
 
         String[] categoryPaths;
@@ -1179,10 +1181,10 @@ public class CswsConnector extends org.a
           categoryPaths = specifiedMetadataAttributes;
           sb.append(metadataString);
         }
-              
+
         String[] actualAcls;
         String[] denyAcls;
-              
+
         String denyAcl;
         if (acls != null && acls.length == 0)
         {
@@ -1208,7 +1210,7 @@ public class CswsConnector extends org.a
           // If security is on, no deny acl is needed for the local authority, 
since the repository does not support "deny".  But this was added
           // to be really really really sure.
           denyAcl = defaultAuthorityDenyToken;
-              
+
         }
         else if (acls != null && acls.length > 0)
         {
@@ -1245,17 +1247,17 @@ public class CswsConnector extends org.a
         // have to worry about it changing.  No need, therefore, to parse it 
during
         // processDocuments.
         sb.append("=").append(pathNameAttributeVersion);
-          
-        // Tack on ingestCgiPath, to insulate us against changes to the 
repository connection setup. 
+
+        // Tack on ingestCgiPath, to insulate us against changes to the 
repository connection setup.
         sb.append("_").append(viewBasePath);
 
         String versionString = sb.toString();
         if (Logging.connectors.isDebugEnabled())
           Logging.connectors.debug("Csws: Successfully calculated version 
string for document "+objID+" : '"+versionString+"'");
-              
+
         if (!activities.checkDocumentNeedsReindexing(documentIdentifier, 
versionString))
           continue;
-        
+
         // Index the document
         if (Logging.connectors.isDebugEnabled())
           Logging.connectors.debug("Csws: Processing document "+objID);
@@ -1272,7 +1274,7 @@ public class CswsConnector extends org.a
 
         // Index it
         ingestFromCsws(llc, documentIdentifier, versionString, actualAcls, 
denyAcls, rights.getOwnerRight().getRightID(), categoryPaths, activities, desc, 
sDesc);
-          
+
         if (Logging.connectors.isDebugEnabled())
           Logging.connectors.debug("Csws: Done processing document "+objID);
       }
@@ -1283,7 +1285,7 @@ public class CswsConnector extends org.a
     final String value = getString(sg, nodeIndex);
     return new Long(value).longValue();
   }
-  
+
   private static String getString(final SGraph sg, final int nodeIndex) {
     final List<? extends SNode> nodes = sg.getN();
     if (nodes == null || nodes.size() < 1) {
@@ -1296,7 +1298,7 @@ public class CswsConnector extends org.a
     }
     return stringValues.get(nodeIndex);
   }
-  
+
   /**
    * Thread that reads child objects that have a specified filter criteria, 
given an object ID.
    */
@@ -1306,15 +1308,17 @@ public class CswsConnector extends org.a
     protected final String[] outputColumns;
     protected final String filterString;
     protected final String orderingColumn;
+    protected final String dataCollection;
     protected Throwable exception = null;
     protected List<? extends SGraph> rval = null;
 
-    public ListObjectsThread(final long objID, final String[] outputColumns, 
final String filterString, final String orderingColumn)
+    public ListObjectsThread(final long objID, final String[] outputColumns, 
final String dataCollection, final String filterString, final String 
orderingColumn)
     {
       super();
       setDaemon(true);
       this.objID = objID;
       this.outputColumns = outputColumns;
+      this.dataCollection = dataCollection;
       this.filterString = filterString;
       this.orderingColumn = orderingColumn;
     }
@@ -1325,7 +1329,7 @@ public class CswsConnector extends org.a
       {
         // Worry about paging later.  Since these are all children of a 
specific node, we are unlikely to have a problem in any case.
         // TBD
-        rval = cswsSession.searchFor(objID, outputColumns, filterString, 
orderingColumn, 0, 100000); 
+        rval = cswsSession.searchFor(objID, outputColumns, dataCollection, 
filterString, orderingColumn, 0, 100000);
       }
       catch (Throwable e)
       {
@@ -1376,7 +1380,7 @@ public class CswsConnector extends org.a
   // in that the first bunch cannot assume that the current connector object 
is connected, while the second bunch can.  That is why the first bunch
   // receives a thread context argument for all UI methods, while the second 
bunch does not need one (since it has already been applied via the connect()
   // method, above).
-    
+
   /** Output the configuration header section.
   * This method is called in the head section of the connector's configuration 
page.  Its purpose is to add the required tabs to the list, and to output any
   * javascript methods that might be needed by the configuration editing HTML.
@@ -1392,10 +1396,10 @@ public class CswsConnector extends org.a
   {
     tabsArray.add(Messages.getString(locale,"CswsConnector.Server"));
     tabsArray.add(Messages.getString(locale,"CswsConnector.DocumentView"));
-    
+
     Messages.outputResourceWithVelocity(out, locale, EDIT_CONFIGURATION_JS, 
null, true);
   }
-  
+
   /** Output the configuration body section.
   * This method is called in the body section of the connector's configuration 
page.  Its purpose is to present the required form elements for editing.
   * The coder can presume that the HTML that is output from this configuration 
will be within appropriate &lt;html&gt;, &lt;body&gt;, and &lt;form&gt; tags.  
The name of the
@@ -1409,7 +1413,7 @@ public class CswsConnector extends org.a
   public void outputConfigurationBody(IThreadContext threadContext, 
IHTTPOutput out,
     Locale locale, ConfigParams parameters, String tabName)
     throws ManifoldCFException, IOException
-  {    
+  {
     Map<String, Object> velocityContext = new HashMap<>();
     velocityContext.put(TAB_NAME_PARAM,tabName);
 
@@ -1441,7 +1445,7 @@ public class CswsConnector extends org.a
       serverPassword = "";
     else
       serverPassword = out.mapPasswordToKey(serverPassword);
-    
+
     String authenticationServicePath = 
parameters.getParameter(CswsParameters.authenticationPath);
     if (authenticationServicePath == null)
       authenticationServicePath = CswsParameters.authenticationPathDefault;
@@ -1457,7 +1461,10 @@ public class CswsConnector extends org.a
     String searchServiceServicePath = 
parameters.getParameter(CswsParameters.searchServicePath);
     if (searchServiceServicePath == null)
       searchServiceServicePath = CswsParameters.searchServicePathDefault;
-    
+    String dataCollection = 
parameters.getParameter(CswsParameters.dataCollection);
+    if (dataCollection == null)
+      dataCollection = CswsParameters.dataCollectionDefault;
+
     String serverHTTPNTLMDomain = 
parameters.getParameter(CswsParameters.serverHTTPNTLMDomain);
     if(serverHTTPNTLMDomain == null)
       serverHTTPNTLMDomain = "";
@@ -1507,12 +1514,13 @@ public class CswsConnector extends org.a
     velocityContext.put("SERVERPORT",serverPort);
     velocityContext.put("SERVERUSERNAME",serverUserName);
     velocityContext.put("SERVERPASSWORD",serverPassword);
-    
+
     velocityContext.put("AUTHENTICATIONSERVICEPATH", 
authenticationServicePath);
     velocityContext.put("CONTENTSERVICESERVICEPATH", 
contentServiceServicePath);
     velocityContext.put("DOCUMENTMANAGEMENTSERVICEPATH", 
documentManagementServicePath);
     velocityContext.put("MEMBERSERVICESERVICEPATH", memberServiceServicePath);
     velocityContext.put("SEARCHSERVICESERVICEPATH", searchServiceServicePath);
+    velocityContext.put("DATACOLLECTION", dataCollection);
 
     velocityContext.put("SERVERHTTPNTLMDOMAIN",serverHTTPNTLMDomain);
     velocityContext.put("SERVERHTTPNTLMUSERNAME",serverHTTPNTLMUserName);
@@ -1551,8 +1559,8 @@ public class CswsConnector extends org.a
     velocityContext.put("VIEWPORT",viewPort);
     velocityContext.put("VIEWCGIPATH",viewCgiPath);
     velocityContext.put("VIEWACTION",viewAction);
-  }  
-  
+  }
+
   /** Process a configuration post.
   * This method is called at the start of the connector's configuration page, 
whenever there is a possibility that form data for a connection has been
   * posted.  Its purpose is to gather form information and modify the 
configuration parameters accordingly.
@@ -1583,7 +1591,7 @@ public class CswsConnector extends org.a
     String viewAction = variableContext.getParameter("viewaction");
     if (viewAction != null)
       parameters.setParameter(CswsParameters.viewAction,viewAction);
-    
+
     // Server parameters
     String serverProtocol = variableContext.getParameter("serverprotocol");
     if (serverProtocol != null)
@@ -1600,7 +1608,7 @@ public class CswsConnector extends org.a
     String serverPassword = variableContext.getParameter("serverpassword");
     if (serverPassword != null)
       
parameters.setObfuscatedParameter(CswsParameters.serverPassword,variableContext.mapKeyToPassword(serverPassword));
-    
+
     String authenticationServicePath = 
variableContext.getParameter("authenticationservicepath");
     if (authenticationServicePath != null)
       parameters.setParameter(CswsParameters.authenticationPath, 
authenticationServicePath);
@@ -1616,6 +1624,9 @@ public class CswsConnector extends org.a
     String searchServiceServicePath = 
variableContext.getParameter("searchserviceservicepath");
     if (searchServiceServicePath != null)
       parameters.setParameter(CswsParameters.searchServicePath, 
searchServiceServicePath);
+    String dataCollection = variableContext.getParameter("datacollection");
+    if (dataCollection != null)
+      parameters.setParameter(CswsParameters.dataCollection, dataCollection);
 
     String serverHTTPNTLMDomain = 
variableContext.getParameter("serverhttpntlmdomain");
     if (serverHTTPNTLMDomain != null)
@@ -1626,7 +1637,7 @@ public class CswsConnector extends org.a
     String serverHTTPNTLMPassword = 
variableContext.getParameter("serverhttpntlmpassword");
     if (serverHTTPNTLMPassword != null)
       
parameters.setObfuscatedParameter(CswsParameters.serverHTTPNTLMPassword,variableContext.mapKeyToPassword(serverHTTPNTLMPassword));
-    
+
     String serverHTTPSKeystoreValue = 
variableContext.getParameter("serverhttpskeystoredata");
     final String serverConfigOp = 
variableContext.getParameter("serverconfigop");
     if (serverConfigOp != null)
@@ -1681,10 +1692,10 @@ public class CswsConnector extends org.a
       }
     }
     
parameters.setParameter(CswsParameters.serverHTTPSKeystore,serverHTTPSKeystoreValue);
-    
+
     return null;
   }
-  
+
   /** View configuration.
   * This method is called in the body section of the connector's view 
configuration page.  Its purpose is to present the connection information to 
the user.
   * The coder can presume that the HTML that is output from this configuration 
will be within appropriate &lt;html&gt; and &lt;body&gt; tags.
@@ -1724,7 +1735,7 @@ public class CswsConnector extends org.a
     paramMap.put("CONFIGMAP",configMap);
     Messages.outputResourceWithVelocity(out, locale, VIEW_CONFIGURATION_HTML, 
paramMap);
   }
-  
+
   /** Output the specification header section.
   * This method is called in the head section of a job page which has selected 
a repository connection of the
   * current type.  Its purpose is to add the required tabs to the list, and to 
output any javascript methods
@@ -1745,15 +1756,15 @@ public class CswsConnector extends org.a
     tabsArray.add(Messages.getString(locale,"CswsConnector.Filters"));
     tabsArray.add(Messages.getString(locale,"CswsConnector.Security"));
     tabsArray.add(Messages.getString(locale,"CswsConnector.Metadata"));
-    
+
     String seqPrefixParam = "s" + connectionSequenceNumber + "_";
 
-    Map<String, String> paramMap = new HashMap<String, String>();  
+    Map<String, String> paramMap = new HashMap<String, String>();
     paramMap.put("seqPrefix", seqPrefixParam);
 
     Messages.outputResourceWithVelocity(out, locale, EDIT_SPECIFICATION_JS, 
paramMap, true);
   }
-  
+
   /** Output the specification body section.
   * This method is called in the body section of a job page which has selected 
a repository connection of the
   * current type.  Its purpose is to present the required form elements for 
editing.
@@ -2049,8 +2060,8 @@ public class CswsConnector extends org.a
     public String toString() {
       return left + "=" + right;
     }
-  }  
-  
+  }
+
   /** Process a specification post.
   * This method is called at the start of job's edit or view page, whenever 
there is a possibility that form
   * data for a connection has been posted.  Its purpose is to gather form 
information and modify the
@@ -2087,7 +2098,7 @@ public class CswsConnector extends org.a
       sn.setAttribute("value",value);
       ds.addChild(ds.getChildCount(),sn);
     }
-    
+
     String xc = variableContext.getParameter(seqPrefix+"pathcount");
     if (xc != null)
     {
@@ -2393,7 +2404,7 @@ public class CswsConnector extends org.a
         // Strip off end
         String category = 
variableContext.getParameter(seqPrefix+"speccategory");
         int lastSlash = -1;
-        int firstColon = -1;      
+        int firstColon = -1;
         int k = 0;
         while (k < category.length())
         {
@@ -2567,7 +2578,7 @@ public class CswsConnector extends org.a
     }
     return null;
   }
-  
+
   /** View specification.
   * This method is called in the body section of a job's view page.  Its 
purpose is to present the document
   * specification information to the user.  The coder can presume that the 
HTML that is output from
@@ -2634,7 +2645,7 @@ public class CswsConnector extends org.a
     getSession();
     return getCategoryAttributes(new CswsContext(), pathString);
   }
-  
+
   protected String[] getCategoryAttributes(CswsContext llc, String pathString)
     throws ManifoldCFException, ServiceInterruption
   {
@@ -2679,7 +2690,7 @@ public class CswsConnector extends org.a
     Long readSize = null;
 
     long objID = new Integer(documentIdentifier.substring(1)).intValue();
-    
+
     // Try/finally for fetch logging
     try
     {
@@ -2693,7 +2704,7 @@ public class CswsConnector extends org.a
         activities.noDocument(documentIdentifier,version);
         return;
       }
-      
+
       // Check URL first
       if (!activities.checkURLIndexable(viewHttpAddress))
       {
@@ -2705,7 +2716,7 @@ public class CswsConnector extends org.a
         activities.noDocument(documentIdentifier,version);
         return;
       }
-      
+
       // Add general metadata
       final ObjectInformation objInfo = llc.getObjectInformation(objID);
       final VersionInformation versInfo = llc.getVersionInformation(objID, 0);
@@ -2737,7 +2748,7 @@ public class CswsConnector extends org.a
         activities.noDocument(documentIdentifier,version);
         return;
       }
-        
+
       final Long dataSize = versInfo.getDataSize();
       if (dataSize == null)
       {
@@ -2749,7 +2760,7 @@ public class CswsConnector extends org.a
         activities.noDocument(documentIdentifier,version);
         return;
       }
-      
+
       if (!activities.checkLengthIndexable(dataSize.longValue()))
       {
         // Document not indexable because of its length
@@ -2772,12 +2783,12 @@ public class CswsConnector extends org.a
         activities.noDocument(documentIdentifier,version);
         return;
       }
-      
+
       final String fileName = versInfo.getFileName();
       final Date creationDate = objInfo.getCreationDate();
       final Long parentID = objInfo.getParentId();
-      
-      
+
+
       RepositoryDocument rd = new RepositoryDocument();
 
       // Add general data we need for the output connector
@@ -2789,7 +2800,7 @@ public class CswsConnector extends org.a
         rd.setCreatedDate(creationDate);
       if (modifyDate != null)
         rd.setModifiedDate(modifyDate);
-            
+
       rd.addField(GENERAL_NAME_FIELD,objInfo.getName());
       rd.addField(GENERAL_DESCRIPTION_FIELD,objInfo.getComments());
       if (creationDate != null)
@@ -2822,7 +2833,7 @@ public class CswsConnector extends org.a
           objInfo.getSpecifiedCategoryAttribute(rd, catID, 
pathItem.getCatName());
         }
       }
-      
+
       if (actualAcls != null && denyAcls != null)
         
rd.setSecurity(RepositoryDocument.SECURITY_TYPE_DOCUMENT,actualAcls,denyAcls);
 
@@ -2841,17 +2852,17 @@ public class CswsConnector extends org.a
 
       // Use FetchVersion instead
       long currentTime;
-              
+
       // Fire up the document reading thread
       final DocumentReadingThread t = new DocumentReadingThread(objID, 0);
       boolean wasInterrupted = false;
       t.start();
-      try 
+      try
       {
         try
         {
           InputStream is = t.getSafeInputStream();
-          try 
+          try
           {
             // Can only index while background thread is running!
             rd.setBinary(is, dataSize);
@@ -2881,7 +2892,7 @@ public class CswsConnector extends org.a
 
         // No errors.  Record the fact that we made it.
       }
-      catch (InterruptedException e) 
+      catch (InterruptedException e)
       {
         t.interrupt();
         throw new ManifoldCFException("Interrupted: " + e.getMessage(), e,
@@ -2937,7 +2948,7 @@ public class CswsConnector extends org.a
     Logging.connectors.warn("Csws: IO exception ingesting "+contextMsg+": 
"+e.getMessage(),e);
     throw new ServiceInterruption("IO exception ingesting "+contextMsg+": 
"+e.getMessage(),e,currentTime+300000L,currentTime+6*3600000L,-1,false);
   }
-  
+
   /** Pack category and attribute */
   protected static String packCategoryAttribute(String category, String 
attribute)
   {
@@ -2955,7 +2966,7 @@ public class CswsConnector extends org.a
     startPos = unpack(attribute,value,startPos,':');
   }
 
- 
+
   /** Given a path string, get a list of folders and projects under that node.
   *@param pathString is the current path (folder names and project names, 
separated by dots (.)).
   *@return a list of folder and project names, in sorted order, or null if the 
path was invalid.
@@ -2972,7 +2983,7 @@ public class CswsConnector extends org.a
 
     final String filterString = "\"OTSubType\":0 OR \"OTSubType\":202 OR 
\"OTSubType\":136";
 
-    final ListObjectsThread t = new ListObjectsThread(vid, new 
String[]{"OTName"}, filterString, "OTName");
+    final ListObjectsThread t = new ListObjectsThread(vid, new 
String[]{"OTName"}, dataCollection, filterString, "OTName");
     try
     {
       t.start();
@@ -3012,7 +3023,7 @@ public class CswsConnector extends org.a
     // We want only folders that are children of the current object and which 
match the specified subfolder
     String filterString = "\"OTSubType\":131";
 
-    final ListObjectsThread t = new ListObjectsThread(vid, new 
String[]{"OTName"}, filterString, "OTName");
+    final ListObjectsThread t = new ListObjectsThread(vid, new 
String[]{"OTName"}, dataCollection, filterString, "OTName");
     try
     {
       t.start();
@@ -3191,7 +3202,7 @@ public class CswsConnector extends org.a
 
   }
   */
-  
+
   /** Get a category version for document.
   */
   /* Unused -- done a different way
@@ -3247,7 +3258,7 @@ public class CswsConnector extends org.a
         {
           throw new ManifoldCFException("Error retrieving attribute value: 
"+Integer.toString(status)+": "+llServer.getErrors());
         }
-        
+
         if (children != null)
         {
           rval = new String[children.size()];
@@ -3291,7 +3302,7 @@ public class CswsConnector extends org.a
 
   }
   */
-  
+
   /** Get an attribute value from a category version.
   */
   /* Unused -- done a different way
@@ -3311,7 +3322,7 @@ public class CswsConnector extends org.a
     }
   }
   */
-  
+
   protected class GetObjectRightsThread extends Thread
   {
     protected final long objID;
@@ -3391,11 +3402,11 @@ public class CswsConnector extends org.a
     protected final Map<VersionInformation,VersionInformation> versionInfoMap 
= new HashMap<>();
     /** Cache of UserInformation objects */
     protected final Map<UserInformation,UserInformation> userInfoMap = new 
HashMap<>();
-    
+
     public CswsContext()
     {
     }
-    
+
     public ObjectInformation getObjectInformation(final String workspaceName)
     {
       ObjectInformation oi = new ObjectInformation(workspaceName);
@@ -3419,7 +3430,7 @@ public class CswsConnector extends org.a
       }
       return lookupValue;
     }
-    
+
     public VersionInformation getVersionInformation(long objectID, int 
revisionNumber)
     {
       VersionInformation vi = new VersionInformation(objectID, revisionNumber);
@@ -3431,7 +3442,7 @@ public class CswsConnector extends org.a
       }
       return lookupValue;
     }
-    
+
     public UserInformation getUserInformation(long userID)
     {
       UserInformation ui = new UserInformation(userID);
@@ -3451,21 +3462,21 @@ public class CswsConnector extends org.a
   protected class UserInformation
   {
     protected final long userID;
-    
+
     protected boolean fetched = false;
     protected Member userValue = null;
-    
+
     public UserInformation(long userID)
     {
       this.userID = userID;
     }
-    
+
     public boolean exists()
       throws ServiceInterruption, ManifoldCFException
     {
       return getUserValue() != null;
     }
-    
+
     public String getName()
       throws ServiceInterruption, ManifoldCFException
     {
@@ -3474,7 +3485,7 @@ public class CswsConnector extends org.a
         return null;
       return userValue.getName();
     }
-      
+
     protected Member getUserValue()
       throws ServiceInterruption, ManifoldCFException
     {
@@ -3501,13 +3512,13 @@ public class CswsConnector extends org.a
     {
       return "("+userID+")";
     }
-    
+
     @Override
     public int hashCode()
     {
       return Long.hashCode(userID);
     }
-    
+
     @Override
     public boolean equals(Object o)
     {
@@ -3518,7 +3529,7 @@ public class CswsConnector extends org.a
     }
 
   }
-  
+
   /** This object represents a cache of version information.
   * Initialize it with the volume ID and object ID and revision number 
(usually zero).
   * Then, request the desired fields from it.
@@ -3527,16 +3538,16 @@ public class CswsConnector extends org.a
   {
     protected final long objectID;
     protected final long revisionNumber;
-    
+
     protected boolean fetched = false;
     protected Version versionValue = null;
-    
+
     public VersionInformation(long objectID, long revisionNumber)
     {
       this.objectID = objectID;
       this.revisionNumber = revisionNumber;
     }
-    
+
     public boolean exists()
       throws ServiceInterruption, ManifoldCFException
     {
@@ -3595,7 +3606,7 @@ public class CswsConnector extends org.a
       final Version elem = getVersionValue();
       if (elem == null)
         return null;
-      return elem.getOwner(); 
+      return elem.getOwner();
     }
 
     /** Get version LLValue */
@@ -3619,13 +3630,13 @@ public class CswsConnector extends org.a
       }
       return versionValue;
     }
-    
+
     @Override
     public int hashCode()
     {
       return Long.hashCode(objectID) + Long.hashCode(revisionNumber);
     }
-    
+
     @Override
     public boolean equals(Object o)
     {
@@ -3636,7 +3647,7 @@ public class CswsConnector extends org.a
     }
 
   }
-  
+
   /** This object represents an object information cache.
   * Initialize it with the volume ID and object ID, and then request
   * the appropriate fields from it.  Keep it around as long as needed; it 
functions as a cache
@@ -3646,10 +3657,10 @@ public class CswsConnector extends org.a
   {
     protected final long objectID;
     protected final String workspaceName;
-    
+
     protected Node objectValue = null;
     protected boolean fetched = false;
-    
+
     public ObjectInformation(final long objectID)
     {
       this.objectID = objectID;
@@ -3660,14 +3671,14 @@ public class CswsConnector extends org.a
       this.workspaceName = workspaceName;
       this.objectID = -1L;
     }
-    
+
     /**
      * Get workspace name
      */
     public String getWorkspaceName() {
       return workspaceName;
     }
-    
+
     /**
     * Check whether object seems to exist or not.
     */
@@ -3683,7 +3694,7 @@ public class CswsConnector extends org.a
     {
       return "(Object: "+objectID+")";
     }
-    
+
     /**
     * Fetch attribute value for a specified categoryID for a given object.
     */
@@ -3716,7 +3727,7 @@ public class CswsConnector extends org.a
       if (objInfo == null) {
         return false;
       }
-      final List<? extends AttributeGroup> attributeGroups = 
objInfo.getMetadata().getAttributeGroups();           
+      final List<? extends AttributeGroup> attributeGroups = 
objInfo.getMetadata().getAttributeGroups();
       for (final AttributeGroup attribute : attributeGroups) {
         final int index = attribute.getKey().indexOf(".");
         final String categoryAttributeName = attribute.getDisplayName();
@@ -3775,7 +3786,7 @@ public class CswsConnector extends org.a
         // We want only folders that are children of the current object and 
which match the specified subfolder
         final String filterString = "(\"OTSubType\":0 OR \"OTSubType\":202 OR 
\"OTSubType\":136) AND \"OTName\":\""+subFolder+"\"";
 
-        final ListObjectsThread t = new ListObjectsThread(obj, new 
String[]{"OTDataID", "OTSubTypeName"}, filterString, "OTDataID");
+        final ListObjectsThread t = new ListObjectsThread(obj, new 
String[]{"OTDataID", "OTSubTypeName"}, dataCollection, filterString, 
"OTDataID");
         try
         {
           t.start();
@@ -3830,7 +3841,7 @@ public class CswsConnector extends org.a
       }
       return m.getAttributeGroups();
     }
-    
+
     /**
     * Get category IDs available to the object with a specified object ID
     */
@@ -3839,7 +3850,7 @@ public class CswsConnector extends org.a
     {
       return getSuperObjectCategoryIDs(objectID);
     }
-    
+
     /**
     * Returns the category ID specified by the path name.
     * @param startPath is the folder name, ending in a category name (a string 
with slashes as separators)
@@ -3885,10 +3896,10 @@ public class CswsConnector extends org.a
         } else {
           filterString = "\"OTSubType\":131";
         }
-        
+
         filterString += " AND \"OTName:\"" + subFolder + "\"";
 
-        final ListObjectsThread t = new ListObjectsThread(obj, new 
String[]{"OTDataID", "OTSubTypeName"}, filterString, "OTDataID");
+        final ListObjectsThread t = new ListObjectsThread(obj, new 
String[]{"OTDataID", "OTSubTypeName"}, dataCollection, filterString, 
"OTDataID");
         try
         {
           t.start();
@@ -3936,7 +3947,7 @@ public class CswsConnector extends org.a
         return null;
       return elem.getPermissions();
     }
-    
+
     /** Get OpenText document name.
     */
     public String getName()
@@ -3945,7 +3956,7 @@ public class CswsConnector extends org.a
       final Node elem = getObjectValue();
       if (elem == null)
         return null;
-      return elem.getName(); 
+      return elem.getName();
     }
 
     /** Get OpenText comments/description.
@@ -3956,7 +3967,7 @@ public class CswsConnector extends org.a
       final Node elem = getObjectValue();
       if (elem == null)
         return null;
-      return elem.getComment(); 
+      return elem.getComment();
     }
 
     /** Get parent ID.
@@ -3967,7 +3978,7 @@ public class CswsConnector extends org.a
       final Node elem = getObjectValue();
       if (elem == null)
         return null;
-      return elem.getParentID(); 
+      return elem.getParentID();
     }
 
     /** Get creation date.
@@ -3980,7 +3991,7 @@ public class CswsConnector extends org.a
         return null;
       return new 
Date(elem.getCreateDate().toGregorianCalendar().getTimeInMillis());
     }
-    
+
     /** Get creator ID.
     */
     public Long getCreatorId()
@@ -3989,7 +4000,7 @@ public class CswsConnector extends org.a
       final Node elem = getObjectValue();
       if (elem == null)
         return null;
-      return elem.getCreatedBy(); 
+      return elem.getCreatedBy();
     }
 
     /* Get modify date.
@@ -4040,7 +4051,7 @@ public class CswsConnector extends org.a
       }
       return objectValue;
     }
-    
+
     @Override
     public int hashCode()
     {
@@ -4049,7 +4060,7 @@ public class CswsConnector extends org.a
       }
       return Long.hashCode(objectID);
     }
-    
+
     @Override
     public boolean equals(Object o)
     {
@@ -4119,7 +4130,7 @@ public class CswsConnector extends org.a
   protected class GetUserResultsThread extends Thread
   {
     protected final PageHandle pageHandle;
-    
+
     protected List<? extends Member> rval = null;
     protected Throwable exception = null;
 
@@ -4369,9 +4380,9 @@ public class CswsConnector extends org.a
   {
     if (!objInfo.exists())
       return null;
-    
+
     final List<String> tokenAccumulator = new ArrayList<>();
-    
+
     if (evaluateRight(rights.getOwnerRight())) {
       tokenAccumulator.add(rights.getOwnerRight().toString());
     }
@@ -4383,7 +4394,7 @@ public class CswsConnector extends org.a
     }
     // What happened to Guest/World right??
     // MHL -TBD - for "GUEST" token
-    
+
     for (final NodeRight nr : rights.getACLRights()) {
       if (evaluateRight(nr)) {
         tokenAccumulator.add(new Long(nr.getRightID()).toString());
@@ -4392,7 +4403,7 @@ public class CswsConnector extends org.a
 
     return tokenAccumulator.toArray(new String[tokenAccumulator.size()]);
   }
-  
+
   /** Check if NodeRight conveys the permissions we need */
   protected static boolean evaluateRight(final NodeRight nr) {
     final NodePermissions np = nr.getPermissions();
@@ -4421,14 +4432,14 @@ public class CswsConnector extends org.a
         if (categories == null) {
           return;
         }
-        
+
         int catCount = 0;
         for (final Node category : categories) {
           if (category.getType().equals("Category")) {
             catCount++;
           }
         }
-        
+
         rval = new long[catCount];
         for (final Node category : categories) {
           if (category.getType().equals("Category")) {
@@ -4714,13 +4725,13 @@ public class CswsConnector extends org.a
   {
     // The livelink context
     protected final CswsContext llc;
-    
+
     // The path attribute name
     protected final String pathAttributeName;
 
     // The path separator
     protected final String pathSeparator;
-    
+
     // The node ID to path name mapping (which acts like a cache)
     protected final Map<String,String> pathMap = new HashMap<String,String>();
 
@@ -4730,10 +4741,10 @@ public class CswsConnector extends org.a
     // Acls
     protected final Set<String> aclMap = new HashSet<String>();
     protected final boolean securityOn;
-    
+
     // Filter string
     protected final String filterString;
-    
+
     protected final Set<String> holder = new HashSet<String>();
     protected final boolean includeAllMetadata;
 
@@ -4748,7 +4759,7 @@ public class CswsConnector extends org.a
       StringBuilder fsb = new StringBuilder();
       boolean first = true;
       boolean includeAllMetadata = false;
-      
+
       for (int i = 0; i < spec.getChildCount(); i++)
       {
         SpecificationNode n = spec.getChild(i);
@@ -4832,7 +4843,7 @@ public class CswsConnector extends org.a
 
         }
       }
-      
+
       this.includeAllMetadata = includeAllMetadata;
       this.pathAttributeName = pathAttributeName;
       this.pathSeparator = pathSeparator;
@@ -4856,7 +4867,7 @@ public class CswsConnector extends org.a
     {
       return includeAllMetadata;
     }
-    
+
     public String[] getMetadataAttributes()
     {
       // Put into an array
@@ -4868,12 +4879,12 @@ public class CswsConnector extends org.a
       }
       return specifiedMetadataAttributes;
     }
-    
+
     public String getFilterString()
     {
       return filterString;
     }
-    
+
     public String[] getAcls()
     {
       if (!securityOn)
@@ -4887,7 +4898,7 @@ public class CswsConnector extends org.a
       }
       return rval;
     }
-  
+
     /** Get the path attribute name.
     *@return the path attribute name, or null if none specified.
     */
@@ -4902,7 +4913,7 @@ public class CswsConnector extends org.a
     {
       return pathSeparator;
     }
-    
+
     /** Given an identifier, get the translated string that goes into the 
metadata.
     */
     public String getPathAttributeValue(String documentIdentifier)
@@ -4920,7 +4931,7 @@ public class CswsConnector extends org.a
     {
       return matchMap.toString();
     }
-    
+
     /** For a given node, get its path.
     */
     public String getNodePathString(String documentIdentifier)
@@ -4990,7 +5001,7 @@ public class CswsConnector extends org.a
   protected class MetadataDescription
   {
     protected final CswsContext llc;
-    
+
     // This is a map of category name to category ID and attributes
     protected final Map<String,MetadataPathItem> categoryMap = new 
HashMap<String,MetadataPathItem>();
 
@@ -5069,7 +5080,7 @@ public class CswsConnector extends org.a
   {
     // Csws context
     protected final CswsContext llc;
-    
+
     // This is the map from category ID to category path name.
     // It's keyed by a Long formed from the id, and has String values.
     protected final Map<Long,String> categoryPathMap = new HashMap<>();
@@ -5232,7 +5243,7 @@ public class CswsConnector extends org.a
       {
         rootValue = llc.getObjectInformation(workspaceName);
       }
-      
+
       if (!rootValue.exists())
       {
         Logging.connectors.warn("Csws: Could not get workspace/volume ID!  
Retrying...");
@@ -5248,14 +5259,14 @@ public class CswsConnector extends org.a
   /** This thread performs a LAPI FetchVersion command, streaming the resulting
   * document back through a XThreadInputStream to the invoking thread.
   */
-  protected class DocumentReadingThread extends Thread 
+  protected class DocumentReadingThread extends Thread
   {
 
     protected Throwable exception = null;
     protected final long docID;
     protected final long versionNumber;
     protected final XThreadInputStream stream;
-    
+
     public DocumentReadingThread(final long docID, final long versionNumber)
     {
       super();
@@ -5271,7 +5282,7 @@ public class CswsConnector extends org.a
       try
       {
         final XThreadOutputStream outputStream = new 
XThreadOutputStream(stream);
-        try 
+        try
         {
           cswsSession.getVersionContents(docID, versionNumber, outputStream);
         }
@@ -5287,7 +5298,7 @@ public class CswsConnector extends org.a
     public InputStream getSafeInputStream() {
       return stream;
     }
-    
+
     public void finishUp()
       throws InterruptedException, ManifoldCFException, ServiceInterruption
     {
@@ -5335,7 +5346,7 @@ public class CswsConnector extends org.a
     /** Client and method, all preconfigured */
     protected final HttpClient httpClient;
     protected final HttpRequestBase executeMethod;
-    
+
     protected HttpResponse response = null;
     protected Throwable responseException = null;
     protected XThreadInputStream threadStream = null;
@@ -5347,7 +5358,7 @@ public class CswsConnector extends org.a
     protected Throwable shutdownException = null;
 
     protected Throwable generalException = null;
-    
+
     public ExecuteMethodThread(HttpClient httpClient, HttpRequestBase 
executeMethod)
     {
       super();
@@ -5390,7 +5401,7 @@ public class CswsConnector extends org.a
               this.notifyAll();
             }
           }
-          
+
           // Start the transfer of the content
           if (responseException == null)
           {
@@ -5427,7 +5438,7 @@ public class CswsConnector extends org.a
               }
             }
           }
-          
+
           if (responseException == null && streamException == null)
           {
             if (threadStream != null)
@@ -5436,7 +5447,7 @@ public class CswsConnector extends org.a
               threadStream.stuffQueue();
             }
           }
-          
+
         }
         finally
         {
@@ -5496,7 +5507,7 @@ public class CswsConnector extends org.a
         return -1L;
       return new Long(contentLength.trim()).longValue();
     }
-    
+
     public String getFirstHeader(String headerName)
       throws InterruptedException, IOException, HttpException
     {
@@ -5535,7 +5546,7 @@ public class CswsConnector extends org.a
         }
       }
     }
-    
+
     public void abort()
     {
       // This will be called during the finally
@@ -5552,13 +5563,13 @@ public class CswsConnector extends org.a
         abortThread = true;
       }
     }
-    
+
     public void finishUp()
       throws InterruptedException
     {
       join();
     }
-    
+
     protected synchronized void checkException(Throwable exception)
       throws IOException, HttpException
     {
@@ -5580,5 +5591,5 @@ public class CswsConnector extends org.a
     }
 
   }
-  
+
 }

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsParameters.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsParameters.java?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsParameters.java
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsParameters.java
 Fri Sep 13 09:24:32 2019
@@ -35,7 +35,7 @@ public class CswsParameters
   public final static String viewCgiPath = "View CGI path";
   /** Document View Action**/
   public final static String viewAction = "View Action";
-  
+
   // These parameters are for Web Services
   /** Connection options; choices are "http", "https" */
   public final static String serverProtocol = "Server protocol";
@@ -62,6 +62,9 @@ public class CswsParameters
   /** MemberService service CGI path */
   public final static String memberServicePath = "Server MemberService Service 
path";
   public final static String memberServicePathDefault = 
"/cws/MemberService.svc";
+  /** Name of the Livelink Collection */
+  public final static String dataCollection = "Data Collection";
+  public final static String dataCollectionDefault = "'LES Enterprise'";
   /** Server domain, if NTLM */
   public final static String serverHTTPNTLMDomain = "Server HTTP NTLM domain";
   /** Server HTTP user */
@@ -70,12 +73,12 @@ public class CswsParameters
   public final static String serverHTTPNTLMPassword = "Server HTTP NTLM 
password";
   /** Keystore for LAPI */
   public final static String serverHTTPSKeystore = "Server HTTPS truststore";
-  
-  
+
+
   // These parameters are for the LiveLink Authority
   /** Cache time in seconds */
   public final static String cacheLifetime = "Cache lifetime minutes";
   /** Max LRU size */
   public final static String cacheLRUSize = "Max cache LRU size";
-  
+
 }

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsSession.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsSession.java?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsSession.java
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/java/org/apache/manifoldcf/csws/CswsSession.java
 Fri Sep 13 09:24:32 2019
@@ -33,16 +33,6 @@ import org.apache.cxf.transport.http.Htt
 import org.apache.cxf.configuration.jsse.TLSClientParameters;
 
 import javax.activation.DataHandler;
-import javax.xml.namespace.QName;
-import javax.xml.soap.MessageFactory;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPEnvelope;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPHeader;
-import javax.xml.soap.SOAPHeaderElement;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.soap.SOAPPart;
-import javax.xml.ws.soap.MTOMFeature;
 import javax.xml.ws.soap.SOAPFaultException;
 import javax.xml.ws.BindingProvider;
 import javax.xml.ws.Holder;
@@ -64,20 +54,16 @@ import com.opentext.livelink.service.mem
 
 import com.opentext.livelink.service.memberservice.MemberSearchOptions;
 import com.opentext.livelink.service.memberservice.MemberSearchResults;
-import com.opentext.livelink.service.docman.AttributeGroup;
 import com.opentext.livelink.service.docman.CategoryInheritance;
 import com.opentext.livelink.service.docman.GetNodesInContainerOptions;
 import com.opentext.livelink.service.docman.Node;
-import com.opentext.livelink.service.docman.NodePermissions;
 import com.opentext.livelink.service.docman.Version;
 import com.opentext.livelink.service.docman.NodeRights;
 import com.opentext.livelink.service.docman.AttributeGroupDefinition;
-import com.opentext.livelink.service.docman.Attribute;
 import com.opentext.livelink.service.memberservice.User;
 import com.opentext.livelink.service.memberservice.Member;
 import com.opentext.livelink.service.memberservice.Group;
 import com.opentext.livelink.service.searchservices.SResultPage;
-import com.opentext.livelink.service.searchservices.SNode;
 import com.opentext.livelink.service.searchservices.SGraph;
 import com.opentext.livelink.service.searchservices.SingleSearchRequest;
 import com.opentext.livelink.service.searchservices.SingleSearchResponse;
@@ -113,21 +99,21 @@ public class CswsSession
   private final ContentService contentServiceHandle;
   private final MemberService memberServiceHandle;
   private final SearchService searchServiceHandle;
-  
+
   // Transient data
-  
+
   // Cached root node types
   private List<? extends String> rootNodeTypes = null;
-  
+
   // Cached workspace root nodes
   private Map<String, Node> workspaceTypeNodes = new HashMap<>();
-  
+
   private final static String sslSocketFactoryProperty = 
"com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory";
-  
+
   // Transient data that will need to be periodically rebuilt
   private long currentSessionExpiration = -1L;
   private String currentAuthToken = null;
-  
+
   public CswsSession(final String userName,
     final String password,
     final IKeystoreManager keystore,
@@ -137,7 +123,7 @@ public class CswsSession
     final String contentServiceServiceURL,
     final String memberServiceServiceURL,
     final String searchServiceServiceURL) throws ManifoldCFException {
-      
+
     // Save username/password
     this.userName = userName;
     this.password = password;
@@ -153,11 +139,11 @@ public class CswsSession
     config.setTlsClientParameters(tlsConfig);
     final HttpConduitFeature conduitFeature = new HttpConduitFeature();
     conduitFeature.setConduitConfig(config);
-    
+
     // Construct service references from the URLs
     // EVERYTHING depends on the right classloader being used to help us 
locate appropriate resources etc, so swap to the classloader for THIS
     // class.
-    final ClassLoader savedCl = 
Thread.currentThread().getContextClassLoader();    
+    final ClassLoader savedCl = Thread.currentThread().getContextClassLoader();
     try {
       
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
       this.authService = (authenticationServiceURL != null)?new 
Authentication_Service(new URL(authenticationServiceURL), conduitFeature):null;
@@ -171,7 +157,7 @@ public class CswsSession
       throw new ManifoldCFException("Malformed URL: "+e.getMessage(), e);
     } finally {
       Thread.currentThread().setContextClassLoader(savedCl);
-    } 
+    }
     // Initialize authclient etc.
     if (authService != null) {
       this.authClientHandle = authService.getBasicHttpBindingAuthentication();
@@ -203,7 +189,7 @@ public class CswsSession
     } else {
       this.searchServiceHandle = null;
     }
-    
+
   }
 
   /**
@@ -221,8 +207,8 @@ public class CswsSession
     // MHL to set up transport etc.
     return contentServiceHandle;
   }
-  
-  /** 
+
+  /**
    * Fetch initialized MemberService handle.
    */
   public MemberService getMemberServiceHandle() {
@@ -230,16 +216,16 @@ public class CswsSession
     return memberServiceHandle;
   }
 
-  /** 
+  /**
    * Fetch initialized SearchService handle.
    */
   public SearchService getSearchServiceHandle() {
     // MHL
     return searchServiceHandle;
   }
-  
+
   // Accessors for information that only needs to be accessed once per 
session, which we will cache
-  
+
   /**
    * Fetch root node types.   These will be cached so we only need to do it 
once.
    */
@@ -257,11 +243,11 @@ public class CswsSession
     }
     return this.rootNodeTypes;
   }
-  
+
   /**
    * Fetch root node given type.
    */
-  public Node getRootNode(final String nodeType) 
+  public Node getRootNode(final String nodeType)
   throws ManifoldCFException, ServiceInterruption {
     Node thisWorkspaceNode = workspaceTypeNodes.get(nodeType);
     if (thisWorkspaceNode == null) {
@@ -276,7 +262,7 @@ public class CswsSession
     }
     return thisWorkspaceNode;
   }
-  
+
   public List<? extends Node> listNodes(final long nodeId)
     throws ManifoldCFException, ServiceInterruption {
     try {
@@ -313,7 +299,7 @@ public class CswsSession
       return null;
     }
   }
-  
+
   public List<? extends CategoryInheritance> getCategoryInheritance(final long 
parentId)
     throws ManifoldCFException, ServiceInterruption {
     try {
@@ -339,8 +325,8 @@ public class CswsSession
       return null;
     }
   }
-  
-  public Node getNode(final long nodeId) 
+
+  public Node getNode(final long nodeId)
     throws ManifoldCFException, ServiceInterruption {
     // Need to detect if object was deleted, and return null in this case!!!
     try {
@@ -367,7 +353,7 @@ public class CswsSession
     }
   }
 
-  public NodeRights getNodeRights(final long nodeId) 
+  public NodeRights getNodeRights(final long nodeId)
     throws ManifoldCFException, ServiceInterruption {
     // Need to detect if object was deleted, and return null in this case!!!
     try {
@@ -381,7 +367,7 @@ public class CswsSession
     }
   }
 
-  public Version getVersion(final long nodeId, final long version) 
+  public Version getVersion(final long nodeId, final long version)
     throws ManifoldCFException, ServiceInterruption {
     try {
       return getDocumentManagementHandle().getVersion(nodeId, version, 
getOTAuthentication());
@@ -404,7 +390,7 @@ public class CswsSession
     } catch (javax.xml.ws.WebServiceException e) {
       processWSException(e);
       return null;
-    }      
+    }
   }
 
   public User getUserByLoginName(final String userName)
@@ -445,8 +431,8 @@ public class CswsSession
       return null;
     }
   }
-  
-  public Member getMember(final long memberId) 
+
+  public Member getMember(final long memberId)
     throws ManifoldCFException, ServiceInterruption {
     try {
       return getMemberServiceHandle().getMemberById(memberId, 
getOTAuthentication());
@@ -458,7 +444,7 @@ public class CswsSession
       return null;
     }
   }
-  
+
   public void getVersionContents(final long nodeId, final long version, final 
OutputStream os)
     throws ManifoldCFException, ServiceInterruption {
     try {
@@ -474,8 +460,8 @@ public class CswsSession
       processWSException(e);
     }
   }
-  
-  public PageHandle getAllUsers() 
+
+  public PageHandle getAllUsers()
     throws ManifoldCFException, ServiceInterruption {
     final MemberSearchOptions srchMemOptions  = new MemberSearchOptions();
     srchMemOptions.setFilter(SearchFilter.USER);
@@ -514,9 +500,9 @@ public class CswsSession
       return null;
     }
   }
-  
+
   // Node searching
-  
+
   /**
   * Return a set of IDs matching the specification.
   * @param parentID is the parent ID.
@@ -525,19 +511,20 @@ public class CswsSession
   * OTDataID
   * OTSubTypeName
   * OTName
+  * @param dataCollection the data collection (i.e. the slice) to be queried
   * @param searchSpec is the search specification, e.g. "\"OTSubType\":0 OR 
\"OTSubType\":1 OR \"OTSubType\":144) AND \"OTModifyDate\":&lt;20190312"
   *  For reference:
-  * OTSubType Details 
-  * 0 - Folder 
-  * 1 - Alias [Shortcut] 
-  * 131 - Category 
-  * 136 - Compound Document 
-  * 140 - URL 
-  * 144 - Document 
-  * 202 - Project 
+  * OTSubType Details
+  * 0 - Folder
+  * 1 - Alias [Shortcut]
+  * 131 - Category
+  * 136 - Compound Document
+  * 140 - URL
+  * 144 - Document
+  * 202 - Project
   * 204 - Task List
-  * 207 - Channel 
-  * 215 - Discussion 
+  * 207 - Channel
+  * 215 - Discussion
   * 299 - LiveReport
   * @param orderingColumn is the column name to order the result by
   * @param start is the ID of the result to return (0-based)
@@ -545,11 +532,11 @@ public class CswsSession
   * @return an array of IDs corresponding to documents or categories requested
   */
   public List<? extends SGraph> searchFor(final long parentID,
-    final String[] returnColumns, final String searchSpec, final String 
orderingColumn, final int start, final int count)
+    final String[] returnColumns, final String dataCollection, final String 
searchSpec, final String orderingColumn, final int start, final int count)
     throws ManifoldCFException, ServiceInterruption {
     try {
       final SingleSearchRequest singleSrchReq = new SingleSearchRequest();
-      singleSrchReq.setDataCollectionSpec("'LES Enterprise'");//Livelink 
Enterprise Server
+      singleSrchReq.setDataCollectionSpec(dataCollection);//Livelink 
Enterprise Server
       singleSrchReq.setQueryLanguage("Livelink Search API V1"); //Search Query 
Language API
       singleSrchReq.setFirstResultToRetrieve(start + 1);
       singleSrchReq.setNumResultsToRetrieve(count);
@@ -580,13 +567,13 @@ public class CswsSession
       return null;
     }
   }
-                                                
+
   // Construct authentication token argument, which must be passed as last 
argument for every method
-  
+
   /**
    * Construct OTAuthentication structure (to be passed as an argument)
    */
-  public Holder<OTAuthentication> getOTAuthentication() 
+  public Holder<OTAuthentication> getOTAuthentication()
     throws ManifoldCFException, ServiceInterruption {
     final String authToken = getAuthToken();
     // Create the OTAuthentication object and set the authentication token
@@ -598,7 +585,7 @@ public class CswsSession
   }
 
   // Private methods
-  
+
   private String getAuthToken()
     throws ManifoldCFException, ServiceInterruption {
     final long currentTime = System.currentTimeMillis();
@@ -618,19 +605,19 @@ public class CswsSession
     }
     return currentAuthToken;
   }
-  
+
   private void processIOException(IOException e)
     throws ManifoldCFException, ServiceInterruption {
     throw new ManifoldCFException("IO exception: "+e.getMessage(), e);
     // MHL
   }
-  
+
   private void processSOAPFault(SOAPFaultException e)
     throws ManifoldCFException, ServiceInterruption {
     throw new ManifoldCFException("SOAP exception: "+e.getMessage(), e);
     // MHL
   }
-  
+
   private void processWSException(javax.xml.ws.WebServiceException e)
     throws ManifoldCFException, ServiceInterruption {
     throw new ManifoldCFException("Web service communication issue: 
"+e.getMessage(), e);

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_en_US.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_en_US.properties?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_en_US.properties
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_en_US.properties
 Fri Sep 13 09:24:32 2019
@@ -40,6 +40,7 @@ CswsConnector.DocumentManagementServiceP
 CswsConnector.ContentServiceServicePath=ContentService service path:
 CswsConnector.MemberServiceServicePath=MemberService service path:
 CswsConnector.SearchServiceServicePath=SearchService service path:
+CswsConnector.DataCollection=Data Collection:
 CswsConnector.UserNameRegularExpression=User name regular expression:
 CswsConnector.LivelinkUserExpression=Livelink user expression:
 CswsConnector.Parameters=Parameters:
@@ -57,6 +58,7 @@ CswsConnector.EnterTheContentServiceServ
 CswsConnector.TheContentServiceServicePathMustBeginWithACharacter=The 
ContentService service path must begin with a / character
 CswsConnector.EnterTheSearchServiceServicePath=Enter the SearchService service 
path
 CswsConnector.TheSearchServiceServicePathMustBeginWithACharacter=The 
SearchService service path must begin with a / character
+CswsConnector.DataCollectionIsRequired=Enter the data collection
 CswsConnector.AServerPortNumberIsRequired=A server port number is required
 CswsConnector.TheViewCgiPathMustBeBlankOrBeginWithACharacter=The view cgi path 
must be blank, or begin with a / character
 CswsConnector.NoCertificatesPresent=No certificates present

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_es_ES.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_es_ES.properties?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_es_ES.properties
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_es_ES.properties
 Fri Sep 13 09:24:32 2019
@@ -41,6 +41,7 @@ CswsConnector.DocumentManagementServiceP
 CswsConnector.ContentServiceServicePath=ContentService service path:
 CswsConnector.MemberServiceServicePath=MemberService service path:
 CswsConnector.SearchServiceServicePath=SearchService service path:
+CswsConnector.DataCollection=Data Collection:
 CswsConnector.UserNameRegularExpression=Nombre de usuario expresión regular:
 CswsConnector.LivelinkUserExpression=Expresión user link directo:
 CswsConnector.Parameters=Paràmetros:
@@ -58,6 +59,7 @@ CswsConnector.EnterTheContentServiceServ
 CswsConnector.TheContentServiceServicePathMustBeginWithACharacter=The 
ContentService service path must begin with a / character
 CswsConnector.EnterTheSearchServiceServicePath=Enter the SearchService service 
path
 CswsConnector.TheSearchServiceServicePathMustBeginWithACharacter=The 
SearchService service path must begin with a / character
+CswsConnector.DataCollectionIsRequired=Enter the data collection
 CswsConnector.AServerPortNumberIsRequired=Se requiere un número de puerto del 
servidor
 CswsConnector.TheViewCgiPathMustBeBlankOrBeginWithACharacter=El camino vista 
cgi debe estar en blanco , o comenzar con un / carácter
 CswsConnector.NoCertificatesPresent=Ningún presente de certificados

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_fr_FR.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_fr_FR.properties?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_fr_FR.properties
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_fr_FR.properties
 Fri Sep 13 09:24:32 2019
@@ -40,6 +40,7 @@ CswsConnector.EnterTheContentServiceServ
 CswsConnector.TheContentServiceServicePathMustBeginWithACharacter=The 
ContentService service path must begin with a / character
 CswsConnector.EnterTheSearchServiceServicePath=Enter the SearchService service 
path
 CswsConnector.TheSearchServiceServicePathMustBeginWithACharacter=The 
SearchService service path must begin with a / character
+CswsConnector.DataCollectionIsRequired=Enter the data collection
 CswsConnector.AServerPortNumberIsRequired=Un numéro de port serveur est 
nécessaire
 CswsConnector.UserNameRegularExpressionCannotBeNull=Une expression régulière 
de nom d'utilisateur ne peut être null
 CswsConnector.ServerName=Nom du serveur:
@@ -51,6 +52,7 @@ CswsConnector.DocumentManagementServiceP
 CswsConnector.ContentServiceServicePath=ContentService service path:
 CswsConnector.MemberServiceServicePath=MemberService service path:
 CswsConnector.SearchServiceServicePath=SearchService service path:
+CswsConnector.DataCollection=Data Collection:
 CswsConnector.UserNameRegularExpression=Expression régulière du nom 
d'utilisateur:
 CswsConnector.LivelinkUserExpression=Expression de l'utilisateur Livelink:
 CswsConnector.Parameters=Paramètres:

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_ja_JP.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_ja_JP.properties?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_ja_JP.properties
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_ja_JP.properties
 Fri Sep 13 09:24:32 2019
@@ -40,6 +40,7 @@ CswsConnector.EnterTheContentServiceServ
 CswsConnector.TheContentServiceServicePathMustBeginWithACharacter=The 
ContentService service path must begin with a / character
 CswsConnector.EnterTheSearchServiceServicePath=Enter the SearchService service 
path
 CswsConnector.TheSearchServiceServicePathMustBeginWithACharacter=The 
SearchService service path must begin with a / character
+CswsConnector.DataCollectionIsRequired=Enter the data collection
 CswsConnector.AServerPortNumberIsRequired=サーバポート番号をå…
¥åŠ›ã—ã¦ãã ã•ã„
 
CswsConnector.UserNameRegularExpressionCannotBeNull=ユーザ名正規表現をå
…¥åŠ›ã—ã¦ãã ã•ã„
 CswsConnector.ServerName=サーバ名:
@@ -51,6 +52,7 @@ CswsConnector.DocumentManagementServiceP
 CswsConnector.ContentServiceServicePath=ContentService service path:
 CswsConnector.MemberServiceServicePath=MemberService service path:
 CswsConnector.SearchServiceServicePath=SearchService service path:
+CswsConnector.DataCollection=Data Collection:
 CswsConnector.UserNameRegularExpression=ユーザ名正規表現式:
 CswsConnector.LivelinkUserExpression=Livelinkユーザ式:
 CswsConnector.Parameters=引数:

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_zh_CN.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_zh_CN.properties?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_zh_CN.properties
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/csws/common_zh_CN.properties
 Fri Sep 13 09:24:32 2019
@@ -41,6 +41,7 @@ CswsConnector.DocumentManagementServiceP
 CswsConnector.ContentServiceServicePath=ContentService service path:
 CswsConnector.MemberServiceServicePath=MemberService service path:
 CswsConnector.SearchServiceServicePath=SearchService service path:
+CswsConnector.DataCollection=Data Collection:
 CswsConnector.UserNameRegularExpression=用户名正则表达式: 
 CswsConnector.LivelinkUserExpression=Livelink用户表达式: 
 CswsConnector.Parameters=参数: 
@@ -58,6 +59,7 @@ CswsConnector.EnterTheContentServiceServ
 CswsConnector.TheContentServiceServicePathMustBeginWithACharacter=The 
ContentService service path must begin with a / character
 CswsConnector.EnterTheSearchServiceServicePath=Enter the SearchService service 
path
 CswsConnector.TheSearchServiceServicePathMustBeginWithACharacter=The 
SearchService service path must begin with a / character
+CswsConnector.DataCollectionIsRequired=Enter the data collection
 CswsConnector.AServerPortNumberIsRequired=请输入服务器端口号
 
CswsConnector.TheViewCgiPathMustBeBlankOrBeginWithACharacter=显示CGI路径需设为空或始于‘/’字符
 CswsConnector.NoCertificatesPresent=证书不存在

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration.js
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration.js?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration.js
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration.js
 Fri Sep 13 09:24:32 2019
@@ -142,6 +142,13 @@
         editconnection.searchserviceservicepath.focus();
         return false;
       }
+      if (editconnection.datacollection.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('CswsConnector.DataCollectionIsRequired'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('CswsConnector.Server'))");
+        editconnection.datacollection.focus();
+        return false;
+      }
 
       if (editconnection.viewprotocol.value == "")
       {

Modified: 
manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration_Server.html
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration_Server.html?rev=1866889&r1=1866888&r2=1866889&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration_Server.html
 (original)
+++ 
manifoldcf/trunk/connectors/csws/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/csws/editConfiguration_Server.html
 Fri Sep 13 09:24:32 2019
@@ -103,6 +103,14 @@
       <input type="text" size="32" name="searchserviceservicepath" 
value="$Encoder.attributeEscape($SEARCHSERVICESERVICEPATH)"/>
     </td>
   </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('CswsConnector.DataCollection'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="datacollection" 
value="$Encoder.attributeEscape($DATACOLLECTION)"/>
+    </td>
+  </tr>
 
   <tr><td class="separator" colspan="2"><hr/></td></tr>
   <tr>
@@ -177,5 +185,6 @@
 <input type="hidden" name="contentserviceservicepath" 
value="$Encoder.attributeEscape($CONTENTSERVICESERVICEPATH)"/>
 <input type="hidden" name="memberserviceservicepath" 
value="$Encoder.attributeEscape($MEMBERSERVICESERVICEPATH)"/>
 <input type="hidden" name="searchserviceservicepath" 
value="$Encoder.attributeEscape($SEARCHSERVICESERVICEPATH)"/>
+<input type="hidden" name="datacollection" 
value="$Encoder.attributeEscape($DATACOLLECTION)"/>
 
 #end
\ No newline at end of file


Reply via email to