[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