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