Update of 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext
In directory 
james.mmbase.org:/tmp/cvs-serv6305/src/org/mmbase/security/implementation/cloudcontext

Modified Files:
        BasicContextProvider.java BuilderNames.java Caches.java 
        ContextProvider.java Verify.java 
Added Files:
        ContextBuilderFunctions.java 
Log Message:
  MMB-1759


See also: 
http://cvs.mmbase.org/viewcvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext
See also: http://www.mmbase.org/jira/browse/MMB-1759


ContextBuilderFunctions.java is new



Index: BasicContextProvider.java
===================================================================
RCS file: 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/BasicContextProvider.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- BasicContextProvider.java   29 Dec 2008 11:32:22 -0000      1.2
+++ BasicContextProvider.java   30 Dec 2008 17:49:44 -0000      1.3
@@ -36,7 +36,7 @@
  * This is a basic implemention of {...@link Provider} that implements all the 
methods in a default way.
  *
  * @author Michiel Meeuwissen
- * @version $Id: BasicContextProvider.java,v 1.2 2008/12/29 11:32:22 michiel 
Exp $
+ * @version $Id: BasicContextProvider.java,v 1.3 2008/12/30 17:49:44 michiel 
Exp $
  * @since  MMBase-1.9.1
  */
 public  class BasicContextProvider implements ContextProvider {
@@ -44,26 +44,35 @@
     private static final Logger log = 
Logging.getLoggerInstance(BasicContextProvider.class);
 
 
-    private final List<MMObjectBuilder> builders;
+    private final List<NodeSearchQuery> queries;
     private SortedSet<String> all;
 
+    public BasicContextProvider(NodeSearchQuery... q) {
+        List<NodeSearchQuery> temp = new ArrayList<NodeSearchQuery>();
+        for (NodeSearchQuery query : q) {
+            temp.add(query);
+        }
+        queries = Collections.unmodifiableList(temp);
+    }
+
+
     public BasicContextProvider(MMObjectBuilder... b) {
-        List<MMObjectBuilder> temp = new ArrayList<MMObjectBuilder>();
+        List<NodeSearchQuery> temp = new ArrayList<NodeSearchQuery>();
         for (MMObjectBuilder bul : b) {
             if (bul == null) throw new IllegalArgumentException("Cannot add 
null to builder list");
-            temp.add(bul);
+            temp.add(new NodeSearchQuery(bul));
         }
-        builders = Collections.unmodifiableList(temp);
+        queries = Collections.unmodifiableList(temp);
     }
 
     public BasicContextProvider(String... b) {
-        List<MMObjectBuilder> temp = new ArrayList<MMObjectBuilder>();
+        List<NodeSearchQuery> temp = new ArrayList<NodeSearchQuery>();
         for (String bulName : b) {
             MMObjectBuilder bul = MMBase.getMMBase().getBuilder(bulName);
             if (bul == null) log.warn("Cannot add 'bulName' to builder list 
(it does not exist)");
-            temp.add(bul);
+            temp.add(new NodeSearchQuery(bul));
         }
-        builders = Collections.unmodifiableList(temp);
+        queries = Collections.unmodifiableList(temp);
     }
 
     protected boolean isAllContextsPossible() {
@@ -77,8 +86,8 @@
     }
 
 
-    public Collection<MMObjectBuilder> getContextBuilders() {
-        return builders;
+    public Collection<NodeSearchQuery> getContextQueries() {
+        return queries;
     }
 
 
@@ -124,8 +133,9 @@
     protected SortedSet<String> getAllContexts() {
         if (all == null) {
             try {
-                for (MMObjectBuilder contextBuilder : getContextBuilders()) {
-                    Iterator<MMObjectNode> i = contextBuilder.getNodes(new 
NodeSearchQuery(contextBuilder)).iterator();  // list all  Contextes simply..
+                for (NodeSearchQuery q : getContextQueries()) {
+                    MMObjectBuilder contextBuilder = 
MMBase.getMMBase().getBuilder(q.getSteps().get(0).getTableName());
+                    Iterator<MMObjectNode> i = 
contextBuilder.getNodes(q).iterator();  // list all  Contextes simply..
                     all = new TreeSet<String>();
                     while (i.hasNext()) {
                         MMObjectNode context = i.next();
@@ -188,9 +198,9 @@
         Cache<String,MMObjectNode> contextCache = Caches.getContextCache();
         MMObjectNode contextNode = contextCache.get(context);
         if (contextNode == null && ! contextCache.contains(context)) {
-            for (MMObjectBuilder contextBuilder : getContextBuilders()) {
+            for (NodeSearchQuery query : getContextQueries()) {
                 try {
-                    NodeSearchQuery query = new 
NodeSearchQuery(contextBuilder);
+                    MMObjectBuilder contextBuilder = query.getBuilder();
                     BasicFieldValueConstraint constraint = new 
BasicFieldValueConstraint(query.getField(contextBuilder.getField("name")), 
context);
                     query.setConstraint(constraint);
                     Iterator<MMObjectNode> i = 
contextBuilder.getNodes(query).iterator();
@@ -513,10 +523,11 @@
 
         ChainedList<MMObjectNode> result = new ChainedList<MMObjectNode>();
 
-        for (MMObjectBuilder contextBuilder : getContextBuilders()) {
+        for (NodeSearchQuery q : getContextQueries()) {
 
-            BasicSearchQuery query = new BasicSearchQuery();
-            Step step = query.addStep(contextBuilder);
+            MMObjectBuilder contextBuilder = q.getBuilder();
+            BasicSearchQuery query = new BasicSearchQuery(q, 
BasicSearchQuery.COPY_NORMAL);
+            Step step = query.getSteps().get(0);
             BasicStepField numberStepField = new BasicStepField(step, 
contextBuilder.getField("number"));
             BasicFieldValueConstraint numberConstraint = new 
BasicFieldValueConstraint(numberStepField, 
Integer.valueOf(contextNode.getNumber()));
 
@@ -738,7 +749,7 @@
 
 
     private MMObjectNode getNode(int i) {
-        return builders.get(0).getNode(i);
+        return queries.get(0).getBuilder().getNode(i);
     }
 
 


Index: BuilderNames.java
===================================================================
RCS file: 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/BuilderNames.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- BuilderNames.java   29 Dec 2008 09:27:42 -0000      1.2
+++ BuilderNames.java   30 Dec 2008 17:49:44 -0000      1.3
@@ -9,19 +9,19 @@
 */
 package org.mmbase.security.implementation.cloudcontext;
 
-import org.mmbase.module.core.MMObjectBuilder;
+import org.mmbase.storage.search.implementation.NodeSearchQuery;
 import java.util.*;
 
 /**
  *
  * @author Michiel Meeuwissen
- * @version $Id: BuilderNames.java,v 1.2 2008/12/29 09:27:42 michiel Exp $
+ * @version $Id: BuilderNames.java,v 1.3 2008/12/30 17:49:44 michiel Exp $
  * MMBase-1.9.1
  */
 public class BuilderNames extends AbstractCollection<String> {
 
-    private final Collection<MMObjectBuilder> backing;
-    public BuilderNames(Collection<MMObjectBuilder> b) {
+    private final Collection<NodeSearchQuery> backing;
+    public BuilderNames(Collection<NodeSearchQuery> b) {
         backing = b;
 
     }
@@ -30,10 +30,10 @@
     }
     public Iterator<String> iterator() {
         return new Iterator<String>() {
-            Iterator<MMObjectBuilder> i = BuilderNames.this.backing.iterator();
+            Iterator<NodeSearchQuery> i = BuilderNames.this.backing.iterator();
             public String next() {
-                MMObjectBuilder bul = i.next();
-                return bul == null ? null : bul.getTableName();
+                NodeSearchQuery q = i.next();
+                return q == null ? null : q.getBuilder().getTableName();
             }
             public boolean hasNext() {
                 return i.hasNext();


Index: Caches.java
===================================================================
RCS file: 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/Caches.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- Caches.java 23 Dec 2008 17:30:42 -0000      1.1
+++ Caches.java 30 Dec 2008 17:49:44 -0000      1.2
@@ -24,7 +24,7 @@
  * listener to arrange invalidation of (entries of) them  when necessary.
  *
  * @author Michiel Meeuwissen
- * @version $Id: Caches.java,v 1.1 2008/12/23 17:30:42 michiel Exp $
+ * @version $Id: Caches.java,v 1.2 2008/12/30 17:49:44 michiel Exp $
  * @since  MMBase-1.9.1
  */
 public abstract class Caches {
@@ -129,7 +129,7 @@
         if 
(builder.equals(Authenticate.getInstance().getUserProvider().getUserBuilder().getTableName()))
 {
             invalidateCaches(event.getNodeNumber());
         }
-        if (new 
BuilderNames(Verify.getInstance().getContextProvider().getContextBuilders()).contains((builder))
+        if (new 
BuilderNames(Verify.getInstance().getContextProvider().getContextQueries()).contains((builder))
             || builder.equals("rightsrel")
             || builder.equals("groups")
             || builder.equals("ranks")
@@ -141,7 +141,7 @@
         String sourceType = event.getRelationSourceType();
         String destType = event.getRelationDestinationType();
         String userBuilder = 
Authenticate.getInstance().getUserProvider().getUserBuilder().getTableName();
-        Collection<String> contextBuilders = new 
BuilderNames(Verify.getInstance().getContextProvider().getContextBuilders());
+        Collection<String> contextBuilders = new 
BuilderNames(Verify.getInstance().getContextProvider().getContextQueries());
         if (sourceType.equals(userBuilder)) {
             invalidateCaches(event.getRelationSourceNumber());
         }


Index: ContextProvider.java
===================================================================
RCS file: 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/ContextProvider.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- ContextProvider.java        23 Dec 2008 17:30:42 -0000      1.1
+++ ContextProvider.java        30 Dec 2008 17:49:44 -0000      1.2
@@ -9,6 +9,7 @@
 */
 package org.mmbase.security.implementation.cloudcontext;
 
+import org.mmbase.storage.search.implementation.NodeSearchQuery;
 import java.util.*;
 import org.mmbase.security.*;
 import org.mmbase.security.SecurityException;
@@ -21,13 +22,13 @@
  * esential properties of them are acquired.
  *
  * @author Michiel Meeuwissen
- * @version $Id: ContextProvider.java,v 1.1 2008/12/23 17:30:42 michiel Exp $
+ * @version $Id: ContextProvider.java,v 1.2 2008/12/30 17:49:44 michiel Exp $
  * MMBase-1.9.1
  */
 public interface ContextProvider {
 
 
-    Collection<MMObjectBuilder> getContextBuilders();
+    Collection<NodeSearchQuery> getContextQueries();
 
     void setContext(User user, MMObjectNode node, String context);
 


Index: Verify.java
===================================================================
RCS file: 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/Verify.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- Verify.java 23 Dec 2008 17:30:42 -0000      1.15
+++ Verify.java 30 Dec 2008 17:49:44 -0000      1.16
@@ -25,7 +25,7 @@
  * @author Eduard Witteveen
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: Verify.java,v 1.15 2008/12/23 17:30:42 michiel Exp $
+ * @version $Id: Verify.java,v 1.16 2008/12/30 17:49:44 michiel Exp $
  * @see    org.mmbase.security.implementation.cloudcontext.builders.Contexts
  */
 public class Verify extends Authorization {
@@ -68,7 +68,7 @@
 
     @Override
     public boolean check(UserContext userContext, int nodeId, Operation 
operation)  {
-        return Contexts.getBuilder().mayDo((User) userContext, nodeId, 
operation);
+        return getContextProvider().mayDo((User) userContext, 
getContextNode(nodeId, true), operation);
     }
 
     @Override public boolean check(UserContext userContext, int nodeId, int 
sourceNodeId, int destinationNodeId, Operation operation) {
@@ -113,7 +113,7 @@
 
 
     protected MMObjectNode getContextNode(int nodeId, boolean exception) {
-        MMObjectNode node =  
getContextProvider().getContextBuilders().iterator().next().getNode(nodeId);
+        MMObjectNode node =  
getContextProvider().getContextQueries().iterator().next().getBuilder().getNode(nodeId);
         if (node == null) {
             if (exception) {
                 throw new SecurityException("node #" + nodeId + " not found");
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to