Author: michiel
Date: 2009-06-29 15:17:08 +0200 (Mon, 29 Jun 2009)
New Revision: 36463
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/Constraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/SortOrder.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicAggregatedField.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicCompareFieldsConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicCompositeConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicDateSortOrder.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldCompareConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldNullConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueBetweenConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueDateConstraint.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueInConstraint.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/BasicSortOrder.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
Log:
if a query is unmodifiable, then also it's constituents should be
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/Constraint.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/storage/search/Constraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++ mmbase/trunk/core/src/main/java/org/mmbase/storage/search/Constraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -47,4 +47,10 @@
@Override
int hashCode();
+
+ /**
+ * @since MMBase-1.9.2
+ */
+ void setUnmodifiable();
+
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/SortOrder.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/storage/search/SortOrder.java
2009-06-29 11:49:30 UTC (rev 36462)
+++ mmbase/trunk/core/src/main/java/org/mmbase/storage/search/SortOrder.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -88,5 +88,10 @@
*/
public String toString();
+ /**
+ * @since MMBase-1.9.2
+ */
+ void setUnmodifiable();
+
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicAggregatedField.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicAggregatedField.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicAggregatedField.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -22,8 +22,7 @@
*/
public class BasicAggregatedField extends BasicStepField implements
AggregatedField {
- /** he aggregation type. */
- private int aggregationType = 0;
+ private final int aggregationType;
/**
* Constructor.
@@ -35,26 +34,15 @@
*/
public BasicAggregatedField(Step step, CoreField fieldDefs, int
aggregationType) {
super(step, fieldDefs);
- setAggregationType(aggregationType);
- }
-
- /**
- * Sets the aggregation type.
- *
- * @param aggregationType The aggregation type.
- * @return This <code>BasicAggregatedField</code> instance.
- * @throws IllegalArgumentException when an invalid argument is supplied.
- */
- public BasicAggregatedField setAggregationType(int aggregationType) {
if (aggregationType < AggregatedField.AGGREGATION_TYPE_GROUP_BY
|| aggregationType > AggregatedField.AGGREGATION_TYPE_MAX) {
- throw new IllegalArgumentException(
- "Invalid aggregationType value: " + aggregationType);
+ throw new IllegalArgumentException("Invalid aggregationType value:
" + aggregationType);
}
this.aggregationType = aggregationType;
- return this;
}
+
+
/**
* Gets the aggregation type.
*/
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicCompareFieldsConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicCompareFieldsConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicCompareFieldsConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -19,11 +19,9 @@
* @version $Id$
* @since MMBase-1.7
*/
-public class BasicCompareFieldsConstraint extends BasicFieldCompareConstraint
-implements CompareFieldsConstraint {
+public class BasicCompareFieldsConstraint extends BasicFieldCompareConstraint
implements CompareFieldsConstraint {
- /** The second associated field. */
- private StepField field2 = null;
+ private final StepField field2;
/**
* Constructor.
@@ -37,15 +35,13 @@
// Test for non-null value.
if (field2 == null) {
- throw new IllegalArgumentException(
- "Invalid field2 value: " + field2);
+ throw new IllegalArgumentException("Invalid field2 value: " +
field2);
}
// Test for matching fieldtype.
if (field1.getType() != field2.getType()) {
- throw new IllegalArgumentException(
- "Fieldtypes do not match: " + field1.getType()
- + " and " + field2.getType());
+ throw new IllegalArgumentException( "Fieldtypes do not match: " +
field1.getType()
+ + " and " + field2.getType());
}
this.field2 = field2;
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicCompositeConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicCompositeConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicCompositeConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -23,11 +23,9 @@
public class BasicCompositeConstraint extends BasicConstraint implements
CompositeConstraint {
private static final Logger log =
Logging.getLoggerInstance(BasicCompositeConstraint.class);
- /** The child constraints. */
- private List<Constraint> childs = new ArrayList<Constraint>();
+ private final List<Constraint> childs = new ArrayList<Constraint>();
- /** The logical operator. */
- private int logicalOperator = 0;
+ private final int logicalOperator;
/**
* Constructor.
@@ -50,6 +48,13 @@
}
}
+ public void setUnmodifiable() {
+ super.setUnmodifiable();
+ for (Constraint c : childs) {
+ c.setUnmodifiable();
+ }
+ }
+
/**
* Adds new child constraint.
*
@@ -58,20 +63,20 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public BasicCompositeConstraint addChild(Constraint child) {
+ if (! modifiable) throw new IllegalStateException();
if (child == null) {
- throw new IllegalArgumentException(
- "Invalid child argument: " + child);
+ throw new IllegalArgumentException("Invalid child argument: " +
child);
}
// Check constraint not added to itself.
if (child == this) {
- throw new IllegalArgumentException(
- "Trying to add constraint as child to itself: " + child);
+ throw new IllegalArgumentException("Trying to add constraint as
child to itself: " + child);
}
childs.add(child);
return this;
}
public BasicCompositeConstraint removeChild(Constraint child) {
+ if (! modifiable) throw new IllegalStateException();
if (! childs.remove(child)) {
log.info("Tried to remove non existing child");
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -22,19 +22,26 @@
// this class would logically be abstract, but test-cases are instantiating it.
public class BasicConstraint implements Constraint {
- /** Inverse property. */
private boolean inverse = false;
+ protected boolean modifiable = true;
- /** Default constructor. */
protected BasicConstraint() {}
/**
+ * @since MMBase-1.9.2
+ */
+ public void setUnmodifiable() {
+ modifiable = false;
+ }
+
+ /**
* Sets inverse.
*
* @return This <code>BasicConstraint</code> instance.
* @param inverse The inverse value.
*/
public BasicConstraint setInverse(boolean inverse) {
+ if (! modifiable) throw new IllegalStateException();
this.inverse = inverse;
return this;
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicDateSortOrder.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicDateSortOrder.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicDateSortOrder.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -20,7 +20,6 @@
*/
public class BasicDateSortOrder extends BasicSortOrder implements
DateSortOrder {
- /** The date part. */
private int part = -1; // unset
/**
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldCompareConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldCompareConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldCompareConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -44,7 +44,7 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public BasicFieldCompareConstraint setOperator(int operator) {
-
+ if (! modifiable) throw new IllegalStateException();
// Test for defined operator value.
if (operator < FieldCompareConstraint.LESS
|| operator > FieldCompareConstraint.REGEXP) {
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -23,10 +23,8 @@
// this class would logically be abstract, but test-cases are instantiating it.
public class BasicFieldConstraint extends BasicConstraint implements
FieldConstraint {
- /** The associated field. */
- private StepField field;
+ final private StepField field;
- /** The caseSensitive property. */
private boolean caseSensitive = true;
/**
@@ -52,6 +50,7 @@
* @param caseSensitive The caseSensitive property value.
*/
public BasicFieldConstraint setCaseSensitive(boolean caseSensitive) {
+ if (! modifiable) throw new IllegalStateException();
this.caseSensitive = caseSensitive;
return this;
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldNullConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldNullConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldNullConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -18,8 +18,7 @@
* @version $Id$
* @since MMBase-1.7
*/
-public class BasicFieldNullConstraint extends BasicFieldConstraint
-implements FieldNullConstraint {
+public class BasicFieldNullConstraint extends BasicFieldConstraint implements
FieldNullConstraint {
/**
* Constructor.
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueBetweenConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueBetweenConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueBetweenConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -57,6 +57,7 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public BasicFieldValueBetweenConstraint setLowerLimit(Object lowerLimit) {
+ if (! modifiable) throw new IllegalStateException();
this.lowerLimit = lowerLimit;
return this;
}
@@ -72,6 +73,7 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public BasicFieldValueBetweenConstraint setUpperLimit(Object upperLimit) {
+ if (! modifiable) throw new IllegalStateException();
this.upperLimit = upperLimit;
return this;
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -49,6 +49,7 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public BasicFieldValueConstraint setValue(Object value) {
+ if (! modifiable) throw new IllegalStateException();
BasicStepField.testValue(value, getField());
this.value = value;
return this;
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueDateConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueDateConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueDateConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -57,6 +57,7 @@
}
public void setPart(int p) {
+ if (! modifiable) throw new IllegalStateException();
part = p;
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueInConstraint.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueInConstraint.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicFieldValueInConstraint.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -21,7 +21,6 @@
*/
public class BasicFieldValueInConstraint extends BasicFieldConstraint
implements FieldValueInConstraint {
- /** The values. */
private final SortedSet<Object> values = new TreeSet<Object>();
/**
@@ -42,6 +41,7 @@
* @see org.mmbase.storage.search.FieldValueInConstraint#getValues
*/
public BasicFieldValueInConstraint addValue(Object value) {
+ if (! modifiable) throw new IllegalStateException();
BasicStepField.testValue(value, getField());
values.add(value);
return this;
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 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -29,15 +29,8 @@
public class BasicSearchQuery implements SearchQuery,
org.mmbase.util.PublicCloneable<BasicSearchQuery> {
private static final Logger log =
Logging.getLoggerInstance(BasicSearchQuery.class);
- /**
- * Distinct property.
- */
private boolean distinct = false;
-
- /** MaxNumber property. */
private int maxNumber = SearchQuery.DEFAULT_MAX_NUMBER;
-
- /** Offset property. */
private int offset = SearchQuery.DEFAULT_OFFSET;
// Following fields would must logically be final, but that is
incompatible with
@@ -48,10 +41,8 @@
protected List<StepField> fields = new ArrayList<StepField>();
private List<SortOrder> sortOrders = new ArrayList<SortOrder>();
- /** Constraint.. */
private Constraint constraint = null;
- /** Aggragating property. */
private boolean aggregating = false;
/** Two variables to speed up hashCode() by caching the result */
@@ -304,9 +295,7 @@
FieldValueInConstraint constraint = (FieldValueInConstraint) c;
BasicFieldValueInConstraint newConstraint = new
BasicFieldValueInConstraint(createNewStepField(q, constraint.getField()));
- Iterator<Object> k = constraint.getValues().iterator();
- while (k.hasNext()) {
- Object value = k.next();
+ for (Object value : constraint.getValues()) {
newConstraint.addValue(value);
}
newConstraint.setInverse(constraint.isInverse());
@@ -592,6 +581,7 @@
public void setCachePolicy(CachePolicy policy) {
if (! modifiable) throw new IllegalStateException("Unmodifiable");
+ hasChangedHashcode = true;
this.cachePolicy = policy;
}
@@ -609,6 +599,12 @@
public boolean markUsed() {
boolean wasModifiable = modifiable;
modifiable = false;
+ if (constraint != null) {
+ constraint.setUnmodifiable();
+ }
+ for (SortOrder so : sortOrders) {
+ so.setUnmodifiable();
+ }
return ! wasModifiable;
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSortOrder.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSortOrder.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSortOrder.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -20,12 +20,11 @@
*/
public class BasicSortOrder implements SortOrder {
- /** Associated stepfield. */
- private StepField field = null;
- /** Direction property. */
+ protected boolean modifiable = true;
+ private final StepField field;
+
private int direction = SortOrder.ORDER_ASCENDING;
-
private boolean caseSensitive = true;
/**
@@ -44,6 +43,13 @@
}
/**
+ * @since MMBase-1.9.2
+ */
+ public void setUnmodifiable() {
+ modifiable = false;
+ }
+
+ /**
* Sets direction.
*
* @param direction The direction.
@@ -51,6 +57,7 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public BasicSortOrder setDirection(int direction) {
+ if (! modifiable) throw new IllegalStateException();
if (direction != SortOrder.ORDER_ASCENDING
&& direction != SortOrder.ORDER_DESCENDING) {
throw new IllegalArgumentException("Invalid direction value: " +
direction);
@@ -87,6 +94,7 @@
* @since MMBase-1.8
*/
public BasicSortOrder setCaseSensitive(boolean c) {
+ if (! modifiable) throw new IllegalStateException();
caseSensitive = c;
return this;
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
2009-06-29 11:49:30 UTC (rev 36462)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
2009-06-29 13:17:08 UTC (rev 36463)
@@ -41,7 +41,7 @@
public class NodeSearchQuery extends BasicSearchQuery implements SearchQuery {
/** Builder for the specified nodetype. */
- private MMObjectBuilder builder = null;
+ private final MMObjectBuilder builder;
/** Map, maps fields to stepfields. */
private Map<CoreField, BasicStepField> stepFields = new HashMap<CoreField,
BasicStepField>();
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs