Author: michiel
Date: 2009-06-29 11:18:33 +0200 (Mon, 29 Jun 2009)
New Revision: 36452
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/SearchQuery.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/ModifiableQuery.java
Log:
Copied 'markedUsed' method from bridge to the interface, which can be used in
QueryResultCache, to make absosolute sure that the query is 'used' and not
modified any more
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/SearchQuery.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/storage/search/SearchQuery.java
2009-06-29 09:17:19 UTC (rev 36451)
+++ mmbase/trunk/core/src/main/java/org/mmbase/storage/search/SearchQuery.java
2009-06-29 09:18:33 UTC (rev 36452)
@@ -137,4 +137,12 @@
public String toString();
+ /**
+ * @since MMBase-1.9.2
+ */
+ boolean markUsed();
+
+
+
+
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
2009-06-29 09:17:19 UTC (rev 36451)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
2009-06-29 09:18:33 UTC (rev 36452)
@@ -132,7 +132,7 @@
public BasicSearchQuery clone() {
try {
BasicSearchQuery clone = (BasicSearchQuery) super.clone();
- clone.setModifiable(true);
+ clone.modifiable = true;
clone.copySteps(this);
clone.copyFields(this);
clone.copySortOrders(this);
@@ -457,7 +457,6 @@
}
// MM
-
public void addFields(Step step) {
MMBase mmb = MMBase.getMMBase();
MMObjectBuilder builder = mmb.getBuilder(step.getTableName());
@@ -599,11 +598,21 @@
/**
* @since MMBase-1.9.1
*/
- public void setModifiable(boolean m) {
- modifiable = m;
+ public void setModifiable(boolean b) {
+ if (! modifiable && b) throw new IllegalStateException("Unmodifiable");
+ modifiable = b;
}
- // javadoc is inherited
+ /**
+ * @since MMBase-1.9.2
+ */
+ public boolean markUsed() {
+ boolean wasModifiable = modifiable;
+ modifiable = false;
+ return ! wasModifiable;
+ }
+
+ @Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
@@ -624,7 +633,7 @@
}
}
- // javadoc is inherited
+ @Override
public int hashCode() {
if (hasChangedHashcode) {
savedHashcode = (distinct? 0: 101)
@@ -638,7 +647,7 @@
return savedHashcode;
}
- // javadoc is inherited
+ @Override
public String toString() {
StringBuilder sb = new
StringBuilder("SearchQuery(distinct:").append(isDistinct()).
append(", steps:" + getSteps()).
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/ModifiableQuery.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/ModifiableQuery.java
2009-06-29 09:17:19 UTC (rev 36451)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/ModifiableQuery.java
2009-06-29 09:18:33 UTC (rev 36452)
@@ -36,6 +36,7 @@
*/
public class ModifiableQuery implements SearchQuery {
+ private boolean modifiable = true;
private SearchQuery query = null;
/**
@@ -91,7 +92,7 @@
*/
private CachePolicy cachePolicy = null;
-
+
/** Creates a new instance of ModifiedQuery */
public ModifiableQuery(SearchQuery query) {
this.query = query;
@@ -105,6 +106,7 @@
* @return This <code>ModifiableQuery</code> instance.
*/
public ModifiableQuery setMaxNumber(int maxNumber) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.maxNumber = maxNumber;
return this;
}
@@ -117,6 +119,7 @@
* @return This <code>ModifiableQuery</code> instance.
*/
public ModifiableQuery setOffset(int offset) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.offset = offset;
return this;
}
@@ -129,6 +132,7 @@
* @return This <code>ModifiableQuery</code> instance.
*/
public ModifiableQuery setConstraint(Constraint constraint) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.constraint = constraint;
return this;
}
@@ -141,6 +145,7 @@
* @return This <code>ModifiableQuery</code> instance.
*/
public ModifiableQuery setFields(List<StepField> fields) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.fields = fields;
return this;
}
@@ -153,6 +158,7 @@
* @return This <code>ModifiableQuery</code> instance.
*/
public ModifiableQuery setSortOrders(List<SortOrder> sortOrders) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.sortOrders = sortOrders;
return this;
}
@@ -165,6 +171,7 @@
* @return This <code>ModifiableQuery</code> instance.
*/
public ModifiableQuery setSteps(List<Step> steps) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.steps = steps;
return this;
}
@@ -177,6 +184,7 @@
* @return This <code>ModifiableQuery</code> instance.
*/
public ModifiableQuery setDistinct(Boolean distinct) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.distinct = distinct;
return this;
}
@@ -189,6 +197,7 @@
* @return This <code>ModifiableQuery</code> instance.
*/
public ModifiableQuery setAggregating(Boolean aggregating) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.aggregating = aggregating;
return this;
}
@@ -275,6 +284,7 @@
}
public void setCachePolicy(CachePolicy policy) {
+ if (! modifiable) throw new IllegalStateException("Unmodifiable");
this.cachePolicy = policy;
}
@@ -331,6 +341,11 @@
return sb.toString();
}
+ public boolean markUsed() {
+ boolean wasUsed = !modifiable;
+ modifiable = false;
+ return wasUsed;
+ }
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs