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