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

Reply via email to