[exo-jcr-commits] exo-jcr SVN: r4677 - in jcr/trunk/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/impl/core/query and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Jul 22 04:50:28 EDT 2011


Author: nzamosenchuk
Date: 2011-07-22 04:50:28 -0400 (Fri, 22 Jul 2011)
New Revision: 4677

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/QueryResultImpl.java
   jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/query/TestTwoWayRangeIterator.java
Log:
EXOJCR-1389 :  Skip checking access when system session used.

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/QueryResultImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/QueryResultImpl.java	2011-07-22 08:05:18 UTC (rev 4676)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/QueryResultImpl.java	2011-07-22 08:50:28 UTC (rev 4677)
@@ -18,6 +18,7 @@
 
 import org.exoplatform.services.jcr.access.AccessManager;
 import org.exoplatform.services.jcr.access.PermissionType;
+import org.exoplatform.services.jcr.access.SystemIdentity;
 import org.exoplatform.services.jcr.datamodel.InternalQName;
 import org.exoplatform.services.jcr.datamodel.NodeData;
 import org.exoplatform.services.jcr.datamodel.QPath;
@@ -140,6 +141,11 @@
     * The maximum size of this result if limit > 0
     */
    private final long limit;
+   
+   /**
+    * If <code>true</code>, it means we're using a System session.
+    */
+   private final boolean isSystemSession;
 
    /**
     * Creates a new query result. The concrete sub class is responsible for
@@ -182,6 +188,7 @@
       this.docOrder = orderProps.length == 0 && documentOrder;
       this.offset = offset;
       this.limit = limit;
+      this.isSystemSession = SystemIdentity.SYSTEM.equals(session.getUserID());
    }
 
    /**
@@ -415,6 +422,10 @@
     */
    private boolean isAccessGranted(ScoreNode[] nodes) throws RepositoryException
    {
+      if (isSystemSession)
+      {
+         return true;
+      }
       for (int i = 0; i < nodes.length; i++)
       {
          try

Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/query/TestTwoWayRangeIterator.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/query/TestTwoWayRangeIterator.java	2011-07-22 08:05:18 UTC (rev 4676)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/query/TestTwoWayRangeIterator.java	2011-07-22 08:50:28 UTC (rev 4677)
@@ -17,15 +17,20 @@
 package org.exoplatform.services.jcr.impl.core.query;
 
 import org.exoplatform.services.jcr.JcrImplBaseTest;
+import org.exoplatform.services.jcr.access.PermissionType;
+import org.exoplatform.services.jcr.core.CredentialsImpl;
+import org.exoplatform.services.jcr.core.ExtendedNode;
 import org.exoplatform.services.jcr.impl.core.query.lucene.TwoWayRangeIterator;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
 
+import java.util.HashMap;
 import java.util.NoSuchElementException;
 import java.util.Random;
 
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
+import javax.jcr.Session;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryManager;
 import javax.jcr.query.QueryResult;
@@ -44,6 +49,8 @@
    private final Log log = ExoLogger.getLogger("exo.jcr.component.core.TestScoreNodeIterator");
 
    private Random random = new Random();
+   
+   private Session userSession;
 
    private final int TEST_NODES_COUNT = 100;
 
@@ -57,6 +64,12 @@
       {
          Node subnode = testRoot.addNode("TestNode" + String.format("%07d", i));
          subnode.setProperty("val", i);
+         ExtendedNode subnode2 = (ExtendedNode)testRoot.addNode("TestNode2-" + String.format("%07d", i));
+         subnode2.setProperty("val", i);
+         subnode2.addMixin("exo:privilegeable");
+         HashMap<String, String[]> perm = new HashMap<String, String[]>();
+         perm.put("admin", PermissionType.ALL);
+         subnode2.setPermissions(perm);
       }
 
    }
@@ -68,7 +81,15 @@
       Node testRoot = root.addNode(testRootNodeName);
       prepareRoot(testRoot);
       root.save();
+      userSession = repository.login(new CredentialsImpl("john", "exo".toCharArray()), "ws");
    }
+   
+   @Override
+   protected void tearDown() throws Exception
+   {
+      userSession.logout();
+      super.tearDown();
+   }
 
    // Check random skipping from start of set
    public void testSkipFromStart() throws Exception
@@ -259,7 +280,7 @@
    protected void checkPosition(ScoreNodeTester testAction, long expectedPosition) throws RepositoryException
    {
 
-      QueryManager qm = workspace.getQueryManager();
+      QueryManager qm = userSession.getWorkspace().getQueryManager();
 
       // Doc order
       String strDocOrder = "select * from nt:unstructured where jcr:path like '/" + testRootNodeName + "/%'";



More information about the exo-jcr-commits mailing list