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