You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2019/03/05 12:26:24 UTC

svn commit: r1854847 - /manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java

Author: kwright
Date: Tue Mar  5 12:26:24 2019
New Revision: 1854847

URL: http://svn.apache.org/viewvc?rev=1854847&view=rev
Log:
More work

Modified:
    manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java

Modified: manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java?rev=1854847&r1=1854846&r2=1854847&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java (original)
+++ manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java Tue Mar  5 12:26:24 2019
@@ -4386,76 +4386,40 @@ public class CswsConnector extends org.a
   }
 
   /** Build a set of actual acls given a set of rights */
-  protected String[] lookupTokens(final NodeRights rights, final ObjectInformation objInfo)
+  protected static String[] lookupTokens(final NodeRights rights, final ObjectInformation objInfo)
     throws ManifoldCFException, ServiceInterruption
   {
     if (!objInfo.exists())
       return null;
     
-    // MHL - TBD
-    // We filter each NodeRight first by whether it conveys the permissions we care about
-    /*
-              int minPermission = LAPI_DOCUMENTS.PERM_SEE +
-            LAPI_DOCUMENTS.PERM_SEECONTENTS;
-
-          int j = 0;
-          int count = 0;
-          while (j < size)
-          {
-            int permission = childrenObjects.toInteger(j, "Permissions");
-            // Only if the permission is "see contents" can we consider this
-            // access token!
-            if ((permission & minPermission) == minPermission)
-              count++;
-            j++;
-          }
-        */
+    final List<String> tokenAccumulator = new ArrayList<>();
     
-    String[] convertedAcls = new String[rights.length];
-
-    LLValue infoObject = null;
-    int j = 0;
-    int k = 0;
-    while (j < rights.length)
-    {
-      int token = rights[j++];
-      String tokenValue;
-      // Consider this token
-      switch (token)
-      {
-      case LAPI_DOCUMENTS.RIGHT_OWNER:
-        // Look up user for current document (UserID attribute)
-        tokenValue = objInfo.getOwnerId().toString();
-        break;
-      case LAPI_DOCUMENTS.RIGHT_GROUP:
-        tokenValue = objInfo.getGroupId().toString();
-        break;
-      case LAPI_DOCUMENTS.RIGHT_WORLD:
-        // Add "Guest" token
-        tokenValue = "GUEST";
-        break;
-      case LAPI_DOCUMENTS.RIGHT_SYSTEM:
-        // Add "System" token
-        tokenValue = "SYSTEM";
-        break;
-      default:
-        tokenValue = Integer.toString(token);
-        break;
-      }
-
-      // This might return a null if we could not look up the object corresponding to the right.  If so, it is safe to skip it because
-      // that always RESTRICTS view of the object (maybe erroneously), but does not expand visibility.
-      if (tokenValue != null)
-        convertedAcls[k++] = tokenValue;
+    if (evaluateRight(rights.getOwnerRight())) {
+      tokenAccumulator.add(objInfo.getOwnerId().toString());
+    }
+    if (evaluateRight(rights.getOwnerGroupRight())) {
+      tokenAccumulator.add(objInfo.getGroupId().toString());
     }
-    String[] actualAcls = new String[k];
-    j = 0;
-    while (j < k)
-    {
-      actualAcls[j] = convertedAcls[j];
-      j++;
+    // I presume this is WORLD right
+    if (evaluateRight(rights.getPublicRight())) {
+      tokenAccumulator.add("GUEST");
     }
-    return actualAcls;
+    // What happened to SYSTEM right??
+    // MHL -TBD - for "SYSTEM" token
+    
+    for (final NodeRight nr : rights.getACLRights()) {
+      if (evaluateRight(nr)) {
+        tokenAccumulator.add(new Long(nr.getRightID()).toString());
+      }
+    }
+
+    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();
+    return np.isSeePermission() && np.isSeeContentsPermission();
   }
 
   protected class GetObjectCategoryIDsThread extends Thread