Author: michiel
Date: 2009-07-06 16:31:49 +0200 (Mon, 06 Jul 2009)
New Revision: 36578

Modified:
   mmbase/trunk/core/src/main/java/org/mmbase/module/core/MMObjectNode.java
Log:
A few test-cases related to setting security context where failing. This fixes 
them

Modified: 
mmbase/trunk/core/src/main/java/org/mmbase/module/core/MMObjectNode.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/module/core/MMObjectNode.java    
2009-07-06 14:31:10 UTC (rev 36577)
+++ mmbase/trunk/core/src/main/java/org/mmbase/module/core/MMObjectNode.java    
2009-07-06 14:31:49 UTC (rev 36578)
@@ -170,6 +170,7 @@
     public MMObjectNode(MMObjectNode node) {
         parent = node.parent;
         isNew  = node.isNew();
+        newContext = node.newContext;
         values.putAll(node.getValues());
         values.putAll(node.getOldValues());
     }
@@ -328,13 +329,22 @@
      * @since MMBase-1.7
      */
     public int insert(UserContext user) {
+        String nc = newContext;
         int nodeID = parent.safeInsert(this, user.getIdentifier());
         if (nodeID != -1) {
             MMBaseCop mmbaseCop = parent.getMMBase().getMMBaseCop();
             mmbaseCop.getAuthorization().create(user, nodeID);
-            if (newContext != null) {
-                mmbaseCop.getAuthorization().setContext(user, nodeID, 
newContext);
+            if (nc != null) {
+                mmbaseCop.getAuthorization().setContext(user, nodeID, nc);
+                if (log.isDebugEnabled()) {
+                    log.debug("Context was set " + newContext + " " + this);
+                }
                 newContext = null;
+                parent.safeCommit(this);
+            } else {
+                if (log.isDebugEnabled()) {
+                    log.debug("Context was not set " + this);
+                }
             }
         }
         return nodeID;
@@ -353,9 +363,12 @@
             MMBaseCop mmbaseCop = parent.getMMBase().getMMBaseCop();
             mmbaseCop.getAuthorization().update(user, getNumber());
             if (newContext != null) {
-                mmbaseCop.getAuthorization().setContext(user,getNumber(), 
newContext);
+                // can only be done with real number
+                mmbaseCop.getAuthorization().setContext(user, getNumber(), 
newContext);
                 newContext = null;
+                parent.safeCommit(this);
             }
+            mmbaseCop.getAuthorization().update(user, getNumber());
         }
         return success;
     }
@@ -383,11 +396,14 @@
      * @since MMBase-1.7
      */
     public void setContext(UserContext user, String context, boolean now) {
-       if (now) {
-           
parent.getMMBase().getMMBaseCop().getAuthorization().setContext(user, 
getNumber(), context);
-       } else {
-           newContext = context;
-       }
+        if (log.isDebugEnabled()) {
+            log.debug("Setting context " + user + " -> " + context + " " + now 
+ " on " + this);
+        }
+        if (now) {
+            
parent.getMMBase().getMMBaseCop().getAuthorization().setContext(user, 
getNumber(), context);
+        } else {
+            newContext = context;
+        }
     }
 
     /**

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to