Author: michiel
Date: 2009-06-29 19:33:41 +0200 (Mon, 29 Jun 2009)
New Revision: 36486
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/Step.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/StepField.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/BasicSearchQuery.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicStep.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicStepField.java
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
Log:
more rigorous unmodifiability
Modified: mmbase/trunk/core/src/main/java/org/mmbase/storage/search/Step.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/storage/search/Step.java
2009-06-29 16:27:43 UTC (rev 36485)
+++ mmbase/trunk/core/src/main/java/org/mmbase/storage/search/Step.java
2009-06-29 17:33:41 UTC (rev 36486)
@@ -90,5 +90,10 @@
@Override
public String toString();
+ /**
+ * @since MMBase-1.9.2
+ */
+ void setUnmodifiable();
+
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/StepField.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/storage/search/StepField.java
2009-06-29 16:27:43 UTC (rev 36485)
+++ mmbase/trunk/core/src/main/java/org/mmbase/storage/search/StepField.java
2009-06-29 17:33:41 UTC (rev 36486)
@@ -81,4 +81,10 @@
@Override
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 16:27:43 UTC (rev 36485)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicAggregatedField.java
2009-06-29 17:33:41 UTC (rev 36486)
@@ -22,10 +22,9 @@
*/
public class BasicAggregatedField extends BasicStepField implements
AggregatedField {
- private final int aggregationType;
+ private int aggregationType = 0;
/**
- * Constructor.
*
* @param step The associated step.
* @param fieldDefs The associated fieldDefs.
@@ -34,15 +33,28 @@
*/
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 (! modifiable) throw new IllegalStateException();
+
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/BasicSearchQuery.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
2009-06-29 16:27:43 UTC (rev 36485)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
2009-06-29 17:33:41 UTC (rev 36486)
@@ -585,6 +585,12 @@
for (SortOrder so : sortOrders) {
so.setUnmodifiable();
}
+ for (StepField sf : fields) {
+ sf.setUnmodifiable();
+ }
+ for (Step s : steps) {
+ s.setUnmodifiable();
+ }
return ! wasModifiable;
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicStep.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicStep.java
2009-06-29 16:27:43 UTC (rev 36485)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicStep.java
2009-06-29 17:33:41 UTC (rev 36486)
@@ -23,15 +23,16 @@
*/
public class BasicStep implements Step {
- /** Associated builder. */
- protected MMObjectBuilder builder = null;
- /** Alias property. */
+ protected final MMObjectBuilder builder;
+
protected String alias = null;
/**
* Nodenumber set for nodes to be included (ordered
* using integer comparison).
*/
protected SortedSet<Integer> nodes = null;
+
+ protected boolean modifiable = true;
/**
* Constructor.
*
@@ -54,6 +55,7 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public BasicStep setAlias(String alias) {
+ if (! modifiable) throw new IllegalStateException();
if (alias != null && alias.trim().length() == 0) {
throw new IllegalArgumentException("Invalid alias value: " +
alias);
}
@@ -69,6 +71,7 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public Step addNode(int nodeNumber) {
+ if (! modifiable) throw new IllegalStateException();
if (nodeNumber < 0) {
throw new IllegalArgumentException("Invalid nodeNumber value: " +
nodeNumber);
}
@@ -131,4 +134,11 @@
return sb.toString();
}
+ public void setUnmodifiable() {
+ modifiable = false;
+ }
+
+
+
+
}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicStepField.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicStepField.java
2009-06-29 16:27:43 UTC (rev 36485)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/BasicStepField.java
2009-06-29 17:33:41 UTC (rev 36486)
@@ -23,15 +23,14 @@
*/
public class BasicStepField implements StepField {
- /** Associated field definition. */
- private CoreField field = null;
+ private final CoreField field;
- /** Associated step. */
- private Step step = null;
+ private final Step step;
- /** Alias property. */
private String alias = null;
+ protected boolean modifiable = true;
+
/**
* Tests if a value is acceptable for comparison with a certain field.
* @param value The value to be tested.
@@ -144,6 +143,14 @@
}
/**
+ * @since MMBase-1.9.2
+ */
+ public void setUnmodifiable() {
+ modifiable = true;
+ }
+
+
+ /**
* Sets alias property.
*
* @param alias The alias property.
@@ -151,6 +158,7 @@
* @throws IllegalArgumentException when an invalid argument is supplied.
*/
public BasicStepField setAlias(String alias) {
+ if (! modifiable) throw new IllegalStateException();
if (alias != null && alias.trim().length() == 0) {
throw new IllegalArgumentException("Invalid alias value: " +
alias);
}
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 16:27:43 UTC (rev 36485)
+++
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
2009-06-29 17:33:41 UTC (rev 36486)
@@ -40,11 +40,9 @@
*/
public class NodeSearchQuery extends BasicSearchQuery implements SearchQuery {
- /** Builder for the specified nodetype. */
private final MMObjectBuilder builder;
- /** Map, maps fields to stepfields. */
- private Map<CoreField, BasicStepField> stepFields = new HashMap<CoreField,
BasicStepField>();
+ private final Map<CoreField, BasicStepField> stepFields = new
HashMap<CoreField, BasicStepField>();
/**
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs