Author: angela
Date: Wed Nov 20 19:15:27 2013
New Revision: 1543910

URL: http://svn.apache.org/r1543910
Log:
OAK-527: simplify commit info and drop extra commit subject.

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java?rev=1543910&r1=1543909&r2=1543910&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
 Wed Nov 20 19:15:27 2013
@@ -21,14 +21,11 @@ package org.apache.jackrabbit.oak.core;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import java.util.Set;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 
-import com.google.common.collect.ImmutableSet;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.ContentSession;
@@ -267,8 +264,8 @@ public abstract class AbstractRoot imple
         ContentSession session = getContentSession();
         CommitInfo info = new CommitInfo(
                 session.toString(),
-                getCommitSubject(session),
-                moveTracker, message);
+                session.getAuthInfo().getUserID(),
+                permissionProvider.get(), moveTracker, message);
         base = store.merge(builder, getCommitHook(hook, info), info);
         secureBuilder.baseChanged();
         modCount = 0;
@@ -316,20 +313,6 @@ public abstract class AbstractRoot imple
         return CompositeHook.compose(hooks);
     }
 
-    /**
-     * Build a read only subject for the {@link #commit(String, CommitHook)} 
call that makes the
-     * principals, auth info and the permission provider available to the 
commit hooks.
-     *
-     * @return a new read only subject.
-     */
-    private Subject getCommitSubject(ContentSession session) {
-        Set<Object> publicCreds = ImmutableSet.of(
-                permissionProvider.get(),
-                session.getAuthInfo()
-        );
-        return new Subject(true, subject.getPrincipals(), publicCreds, 
Collections.<Object>emptySet());
-    }
-
     @Override
     public boolean hasPendingChanges() {
         checkLive();

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java?rev=1543910&r1=1543909&r2=1543910&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
 Wed Nov 20 19:15:27 2013
@@ -16,9 +16,7 @@
  */
 package org.apache.jackrabbit.oak.security.authorization.permission;
 
-import java.util.Set;
 import javax.annotation.Nonnull;
-import javax.security.auth.Subject;
 
 import org.apache.jackrabbit.oak.core.ImmutableTree;
 import org.apache.jackrabbit.oak.core.TreeTypeProviderImpl;
@@ -113,12 +111,6 @@ public class PermissionValidatorProvider
     }
 
     private PermissionProvider getPermissionProvider() {
-        Subject subject = commitInfo.getSubject();
-        Set<PermissionProvider> pps = 
subject.getPublicCredentials(PermissionProvider.class);
-        if (pps.isEmpty()) {
-            throw new IllegalStateException("Unable to validate permissions; 
no permission provider associated with the commit call.");
-        } else {
-            return pps.iterator().next();
-        }
+        return commitInfo.getPermissionProvider();
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java?rev=1543910&r1=1543909&r2=1543910&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java
 Wed Nov 20 19:15:27 2013
@@ -19,13 +19,11 @@
 
 package org.apache.jackrabbit.oak.spi.commit;
 
-import java.util.Iterator;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import javax.security.auth.Subject;
 
-import org.apache.jackrabbit.oak.api.AuthInfo;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider;
 
 import static com.google.common.base.Objects.toStringHelper;
 
@@ -38,7 +36,9 @@ public class CommitInfo {
 
     private final String sessionId;
 
-    private final Subject subject;
+    private final String userId;
+
+    private final PermissionProvider permissionProvider;
 
     private final String message;
 
@@ -50,14 +50,18 @@ public class CommitInfo {
      * Creates a commit info for the given session and user.
      *
      * @param sessionId session identifier
-     * @param subject Subject identifying the user
+     * @param userId The user id.
+     * @param permissionProvider The permission provider associated with the
+     * root that is committing changes.
      * @param moveTracker Information regarding move operations associated 
with this commit.
      * @param message message attached to this commit, or {@code null}
      */
-    public CommitInfo(@Nonnull String sessionId, @Nonnull Subject subject,
+    public CommitInfo(@Nonnull String sessionId, @Nullable String userId,
+                      @Nonnull PermissionProvider permissionProvider,
                       @Nonnull MoveTracker moveTracker, @Nullable String 
message) {
         this.sessionId = sessionId;
-        this.subject = subject;
+        this.userId = (userId == null) ? OAK_UNKNOWN : userId;
+        this.permissionProvider = permissionProvider;
         this.message = message;
         this.moveTracker = moveTracker;
     }
@@ -75,22 +79,17 @@ public class CommitInfo {
      */
     @Nonnull
     public String getUserId() {
-        Iterator<AuthInfo> it = 
subject.getPublicCredentials(AuthInfo.class).iterator();
-        String userId = null;
-        if (it.hasNext()) {
-            userId = it.next().getUserID();
-        }
-        return (userId == null) ? OAK_UNKNOWN : userId;
+        return userId;
     }
 
     @Nonnull
-    public Subject getSubject() {
-        return subject;
+    public MoveTracker getMoveTracker() {
+        return moveTracker;
     }
 
     @Nonnull
-    public MoveTracker getMoveTracker() {
-        return moveTracker;
+    public PermissionProvider getPermissionProvider() {
+        return permissionProvider;
     }
 
     /**
@@ -112,11 +111,9 @@ public class CommitInfo {
     public String toString() {
         return toStringHelper(this)
                 .add("sessionId", sessionId)
-                .add("userId", getUserId())
+                .add("userId", userId)
                 .add("userData", message)
                 .add("date", date)
-                .add("moveTracker", moveTracker)
                 .toString();
     }
-
 }


Reply via email to