You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2012/08/20 16:48:47 UTC

svn commit: r1375042 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/

Author: mduerig
Date: Mon Aug 20 14:48:46 2012
New Revision: 1375042

URL: http://svn.apache.org/viewvc?rev=1375042&view=rev
Log:
OAK-101: implement identifier handling (byUUID, byIdentifier, etc)

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProviderImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java?rev=1375042&r1=1375041&r2=1375042&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java Mon Aug 20 14:48:46 2012
@@ -29,14 +29,15 @@ import javax.jcr.PropertyType;
 import javax.jcr.query.Query;
 
 import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.CoreValue;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Result;
 import org.apache.jackrabbit.oak.api.ResultRow;
 import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.api.SessionQueryEngine;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.memory.StringValue;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,12 +48,12 @@ public class IdentifierManager {
 
     private static final Logger log = LoggerFactory.getLogger(IdentifierManager.class);
 
-    private final ContentSession contentSession;
     private final Root root;
+    private final SessionQueryEngine queryEngine;
 
-    public IdentifierManager(ContentSession contentSession, Root root) {
-        this.contentSession = contentSession;
+    public IdentifierManager(SessionQueryEngine queryEngine, Root root) {
         this.root = root;
+        this.queryEngine = queryEngine;
     }
 
     @Nonnull
@@ -66,7 +67,7 @@ public class IdentifierManager {
             UUID uuid = UUID.nameUUIDFromBytes(hint.getBytes("UTF-8"));
             return uuid.toString();
         } catch (UnsupportedEncodingException e) {
-            throw new RuntimeException("Unexpected error while creating authorizable node", e);
+            throw new RuntimeException("Unexpected error while creating uuid", e);
         }
     }
 
@@ -110,7 +111,8 @@ public class IdentifierManager {
     @CheckForNull
     public Tree getTree(String identifier) {
         if (isValidUUID(identifier)) {
-            return findTreeByJcrUuid(identifier);
+            String path = resolveUUID(identifier);
+            return (path == null) ? null : root.getTree(path);
         } else {
             // TODO as stated in NodeDelegate#getIdentifier() a non-uuid ID should
             // TODO consisting of closest referenceable parent and a relative path
@@ -210,13 +212,13 @@ public class IdentifierManager {
 
     @CheckForNull
     private String resolveUUID(String uuid) {
-        return resolveUUID(contentSession.getCoreValueFactory().createValue(uuid));
+        return resolveUUID(new StringValue(uuid));
     }
 
     private String resolveUUID(CoreValue uuid) {
         try {
             Map<String, CoreValue> bindings = Collections.singletonMap("id", uuid);
-            Result result = contentSession.getQueryEngine().executeQuery("SELECT * FROM [nt:base] WHERE [jcr:uuid] = $id", Query.JCR_SQL2,
+            Result result = queryEngine.executeQuery("SELECT * FROM [nt:base] WHERE [jcr:uuid] = $id", Query.JCR_SQL2,
                     Long.MAX_VALUE, 0, bindings, new NamePathMapper.Default());
 
             String path = null;
@@ -235,9 +237,4 @@ public class IdentifierManager {
         }
     }
 
-    @CheckForNull
-    private Tree findTreeByJcrUuid(String uuid) {
-        String path = resolveUUID(uuid);
-        return (path == null) ? null : root.getTree(path);
-    }
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProviderImpl.java?rev=1375042&r1=1375041&r2=1375042&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProviderImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProviderImpl.java Mon Aug 20 14:48:46 2012
@@ -175,7 +175,7 @@ public class UserProviderImpl implements
     public UserProviderImpl(ContentSession contentSession, Root root, UserManagerConfig config) {
         this.contentSession = contentSession;
         this.root = root;
-        this.identifierManager = new IdentifierManager(contentSession, root);
+        this.identifierManager = new IdentifierManager(contentSession.getQueryEngine(), root);
 
         defaultDepth = config.getConfigValue(UserManagerConfig.PARAM_DEFAULT_DEPTH, DEFAULT_DEPTH);
         int splitValue = config.getConfigValue(UserManagerConfig.PARAM_GROUP_MEMBERSHIP_SPLIT_SIZE, 0);

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java?rev=1375042&r1=1375041&r2=1375042&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java Mon Aug 20 14:48:46 2012
@@ -93,7 +93,7 @@ public class SessionDelegate {
         this.root = contentSession.getCurrentRoot();
         this.conflictHandler = new AnnotatingConflictHandler(contentSession.getCoreValueFactory());
         this.autoRefresh = autoRefresh;
-        this.idManager = new IdentifierManager(contentSession, root);
+        this.idManager = new IdentifierManager(contentSession.getQueryEngine(), root);
         this.namePathMapper = new NamePathMapperImpl(new SessionNameMapper(), idManager);
         this.valueFactory = new ValueFactoryImpl(contentSession.getCoreValueFactory(), namePathMapper);
     }