Author: michiel
Date: 2010-03-03 13:54:56 +0100 (Wed, 03 Mar 2010)
New Revision: 41250

Modified:
   
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicConstraint.java
   
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicStepField.java
   
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
Log:
merged from 1.9

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicConstraint.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicConstraint.java
     2010-03-03 12:52:03 UTC (rev 41249)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicConstraint.java
     2010-03-03 12:54:56 UTC (rev 41250)
@@ -53,7 +53,7 @@
 
     // javadoc is inherited
     public int getBasicSupportLevel() {
-        return SearchQueryHandler.SUPPORT_OPTIMAL;
+        return 3; // TODO SearchQueryHandler.SUPPORT_OPTIMAL;
     }
 
     // javadoc is inherited

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicStepField.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicStepField.java
      2010-03-03 12:52:03 UTC (rev 41249)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicStepField.java
      2010-03-03 12:54:56 UTC (rev 41250)
@@ -9,11 +9,14 @@
 */
 package org.mmbase.storage.search.implementation;
 
-import org.mmbase.bridge.Field;
+import org.mmbase.bridge.*;
 import org.mmbase.bridge.Fields;
 import org.mmbase.storage.search.*;
 import org.mmbase.util.SizeMeasurable;
 import org.mmbase.util.SizeOf;
+import org.mmbase.util.logging.*;
+import java.util.*;
+import java.util.concurrent.*;
 
 /**
  * Basic implementation.
@@ -24,6 +27,7 @@
  * @since MMBase-1.7
  */
 public class BasicStepField implements StepField, SizeMeasurable, 
java.io.Serializable {
+    private static final Logger log = 
Logging.getLoggerInstance(BasicStepField.class);
 
     private static final long serialVersionUID = 1L;
 
@@ -121,6 +125,9 @@
         }
     }
 
+    // Perhaps it is better to have something like this available in 
CloudContext itself.
+    // CloudContext#getAnonymousCloud or so.
+    private static final Map<CloudContext, Cloud> anonymousClouds = new 
ConcurrentHashMap<CloudContext, Cloud>();
     /**
      * Constructor.
      *
@@ -143,6 +150,20 @@
                                                + " instead of step " +  
step.getTableName() + ": "
                                                + field);
         }
+
+        if (field instanceof org.mmbase.bridge.implementation.BasicField) { // 
not so nice, but I can't come up with something better for now
+            // SearchQueries can be referenced in caches. We don't want to
+            // have references to user clouds there (Field is probably a 
BasicField then)
+            // So, we use a specialized anonymous cloud instance
+            CloudContext cloudContext = 
field.getNodeManager().getCloud().getCloudContext();
+            Cloud anonymousCloud = anonymousClouds.get(cloudContext);
+            if (anonymousCloud == null) {
+                anonymousCloud = cloudContext.getCloud("mmbase");
+                anonymousClouds.put(cloudContext, anonymousCloud);
+            }
+            NodeManager anonymousNodeManager = 
anonymousCloud.getNodeManager(field.getNodeManager().getName());
+            field = anonymousNodeManager.getField(field.getName());
+        }
         this.field = field;
     }
 
@@ -150,7 +171,7 @@
      * @since MMBase-1.9.2
      */
     public void setUnmodifiable() {
-        modifiable = true;
+        modifiable = false;
     }
 
 

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
     2010-03-03 12:52:03 UTC (rev 41249)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
     2010-03-03 12:54:56 UTC (rev 41250)
@@ -64,14 +64,14 @@
         this.builder = builder.getTableName();
     }
     */
-    public NodeSearchQuery(NodeManager  builder) {
+    public NodeSearchQuery(NodeManager  nodeManager) {
         Step step = super.addStep(builder.getName());
-        for (Field f : builder.getFields(NodeManager.ORDER_CREATE)) {
+        for (Field f : nodeManager.getFields(NodeManager.ORDER_CREATE)) {
             if (! f.isVirtual() && f.getType() != Field.TYPE_BINARY) {
                 addField(step, f);
             }
         }
-        this.builder = builder.getName();
+        this.builder = nodeManager.getName();
     }
 
     /*

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

Reply via email to