svn commit: r897572 - in /ofbiz/branches/executioncontext20091231: applications/securityext/data/ framework/api/src/org/ofbiz/api/context/ framework/context/src/org/ofbiz/context/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r897572 - in /ofbiz/branches/executioncontext20091231: applications/securityext/data/ framework/api/src/org/ofbiz/api/context/ framework/context/src/org/ofbiz/context/

adrianc
Author: adrianc
Date: Sat Jan  9 22:40:12 2010
New Revision: 897572

URL: http://svn.apache.org/viewvc?rev=897572&view=rev
Log:
Moved runUnprotected and endRunUnprotected method implementations from ThreadContext to ExecutionContextImpl. Minor change to demo data.

Modified:
    ofbiz/branches/executioncontext20091231/applications/securityext/data/UserDemoData.xml
    ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java
    ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java
    ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ExecutionContextImpl.java

Modified: ofbiz/branches/executioncontext20091231/applications/securityext/data/UserDemoData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/applications/securityext/data/UserDemoData.xml?rev=897572&r1=897571&r2=897572&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20091231/applications/securityext/data/UserDemoData.xml (original)
+++ ofbiz/branches/executioncontext20091231/applications/securityext/data/UserDemoData.xml Sat Jan  9 22:40:12 2010
@@ -87,8 +87,6 @@
     <UserLoginSecurityGroup groupId="BIZADMIN" userLoginId="bizadmin" fromDate="2001-01-01 12:00:00.0"/>
 
     <UserToUserGroupRel userLoginId="anonymous" groupId="OFBIZ_USERS"/>
-    <UserToUserGroupRel userLoginId="system" groupId="OFBIZ_USERS"/>
-    <UserToUserGroupRel userLoginId="admin" groupId="OFBIZ_USERS"/>
     <UserToUserGroupRel userLoginId="flexadmin" groupId="OFBIZ_USERS"/>
     <UserToUserGroupRel userLoginId="demoadmin" groupId="OFBIZ_USERS"/>
     <UserToUserGroupRel userLoginId="ltdadmin" groupId="OFBIZ_USERS"/>
@@ -96,5 +94,6 @@
     <UserToUserGroupRel userLoginId="bizadmin" groupId="OFBIZ_USERS"/>
 
     <UserToArtifactPermRel userLoginId="admin" artifactPath="ofbiz" permissionValue="admin=true"/>
+    <UserToArtifactPermRel userLoginId="system" artifactPath="ofbiz" permissionValue="admin=true"/>
 
 </entity-engine-xml>

Modified: ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java?rev=897572&r1=897571&r2=897572&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java (original)
+++ ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java Sat Jan  9 22:40:12 2010
@@ -45,6 +45,12 @@
  */
 public interface ExecutionContext {
 
+    /**
+     * Restores the <code>AuthorizationManager</code> instance that was in use
+     * before the last <code>runUnprotected</code> method call.
+     */
+    public void endRunUnprotected();
+
     /** Returns an <code>AccessController</code> instance for this
      * user login and execution path combination.
      *
@@ -120,6 +126,12 @@
      */
     public void reset();
 
+    /**
+     * Replaces the current <code>AuthorizationManager</code> instance
+     * with one that allows unrestricted use of all artifacts.
+     */
+    public void runUnprotected();
+
     /** Sets the currency unit of measure.
      *
      * @param currencyUom The ISO currency code

Modified: ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java?rev=897572&r1=897571&r2=897572&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java (original)
+++ ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java Sat Jan  9 22:40:12 2010
@@ -24,7 +24,6 @@
 
 import org.ofbiz.api.authorization.AccessController;
 import org.ofbiz.api.authorization.AuthorizationManager;
-import org.ofbiz.api.authorization.NullAuthorizationManager;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilProperties;
 
@@ -34,7 +33,6 @@
 public class ThreadContext {
 
     protected static final String module = ThreadContext.class.getName();
-    protected static final AuthorizationManager nullAuthorizationManager = new NullAuthorizationManager();
 
     protected static final ThreadLocal<ExecutionContext> executionContext = new ThreadLocal<ExecutionContext>() {
         protected synchronized ExecutionContext initialValue() {
@@ -50,19 +48,8 @@
         }
     };
 
-    /** Used by <code>runUnprotected</code> and <code>endRunUnprotected</code>
-     * to save/restore the original <code>AuthorizationManager</code> instance.
-     */
-    protected static final ThreadLocal<AuthorizationManager> authManager = new ThreadLocal<AuthorizationManager>() {
-        protected synchronized AuthorizationManager initialValue() {return null;};
-    };
-
     public static void endRunUnprotected() {
-        AuthorizationManager savedAuthorizationManager = authManager.get();
-        if (savedAuthorizationManager != null) {
-            setSecurity(savedAuthorizationManager);
-            authManager.set(null);
-        }
+        executionContext.get().endRunUnprotected();
     }
 
     public static AccessController getAccessController() {
@@ -126,8 +113,7 @@
     }
 
     public static void runUnprotected() {
-        authManager.set(getSecurity());
-        setSecurity(nullAuthorizationManager);
+        executionContext.get().runUnprotected();
     }
 
     public static void setCurrencyUom(String currencyUom) {

Modified: ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ExecutionContextImpl.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ExecutionContextImpl.java?rev=897572&r1=897571&r2=897572&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ExecutionContextImpl.java (original)
+++ ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ExecutionContextImpl.java Sat Jan  9 22:40:12 2010
@@ -22,8 +22,11 @@
 import java.util.Map;
 import java.util.TimeZone;
 
+import javolution.util.FastList;
+
 import org.ofbiz.api.authorization.AccessController;
 import org.ofbiz.api.authorization.AuthorizationManager;
+import org.ofbiz.api.authorization.NullAuthorizationManager;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.entity.DelegatorFactory;
@@ -38,6 +41,11 @@
 public class ExecutionContextImpl extends org.ofbiz.api.context.AbstractExecutionContext implements ExecutionContext {
 
     public static final String module = ExecutionContextImpl.class.getName();
+    protected static final AuthorizationManager nullAuthorizationManager = new NullAuthorizationManager();
+    /** Used by <code>runUnprotected</code> and <code>endRunUnprotected</code>
+     * to save/restore the original <code>AuthorizationManager</code> instance.
+     */
+    protected final FastList<AuthorizationManager> managerList = FastList.newInstance();
     protected Delegator delegator = null;
     protected LocalDispatcher dispatcher = null;
     protected AuthorizationManager security = null;
@@ -105,6 +113,7 @@
     @Override
     public void reset() {
         super.reset();
+        this.managerList.clear();
         this.delegator = null;
         this.dispatcher = null;
         this.security = null;
@@ -150,4 +159,17 @@
         this.userLogin = null;
         this.resetUserPreferences();
     }
+
+    @Override
+    public void endRunUnprotected() {
+        if (!this.managerList.isEmpty()) {
+            this.setSecurity(this.managerList.removeLast());
+        }
+    }
+
+    @Override
+    public void runUnprotected() {
+        this.managerList.addLast(getSecurity());
+        this.setSecurity(nullAuthorizationManager);
+    }
 }