Update of /var/cvs/src/org/mmbase/storage/search/implementation
In directory james.mmbase.org:/tmp/cvs-serv17219

Modified Files:
        BasicSearchQuery.java 
Log Message:
rolled back previous change (making fields final), because i remembered another 
reason why this cannot be done (clone() sucks)


See also: 
http://cvs.mmbase.org/viewcvs/src/org/mmbase/storage/search/implementation


Index: BasicSearchQuery.java
===================================================================
RCS file: 
/var/cvs/src/org/mmbase/storage/search/implementation/BasicSearchQuery.java,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -b -r1.49 -r1.50
--- BasicSearchQuery.java       30 Dec 2008 16:28:08 -0000      1.49
+++ BasicSearchQuery.java       2 Jan 2009 11:04:49 -0000       1.50
@@ -23,7 +23,7 @@
  * Basic implementation.
  *
  * @author Rob van Maris
- * @version $Id: BasicSearchQuery.java,v 1.49 2008/12/30 16:28:08 michiel Exp $
+ * @version $Id: BasicSearchQuery.java,v 1.50 2009/01/02 11:04:49 michiel Exp $
  * @since MMBase-1.7
  */
 public class BasicSearchQuery implements SearchQuery, Cloneable {
@@ -40,10 +40,13 @@
     /** Offset property. */
     private int offset = SearchQuery.DEFAULT_OFFSET;
 
-    private   final List<Step> steps             = new ArrayList<Step>();
-    private   final List<Step> unmodifiableSteps = 
Collections.unmodifiableList(steps); // getSteps is called very  very often
-    protected final List<StepField> fields       = new ArrayList<StepField>();
-    private   final List<SortOrder> sortOrders   = new ArrayList<SortOrder>();
+    // Following fields would must logically be final, but that is 
incompatible with
+    // clone(). Perhaps we should drop usage of clone() altogether. clone() 
sucks.
+
+    private   List<Step> steps             = new ArrayList<Step>();
+    private   List<Step> unmodifiableSteps = 
Collections.unmodifiableList(steps); // getSteps is called very  very often
+    protected List<StepField> fields       = new ArrayList<StepField>();
+    private   List<SortOrder> sortOrders   = new ArrayList<SortOrder>();
 
     /** Constraint.. */
     private Constraint constraint = null;
@@ -78,6 +81,7 @@
         this(false);
     }
 
+
     public final static int COPY_NORMAL = 0;
     public final static int COPY_AGGREGATING = 1;
     public final static int COPY_WITHOUTFIELDS = 2;
@@ -142,7 +146,7 @@
 
     protected void copySteps(SearchQuery q) {
         MMBase mmb = MMBase.getMMBase();
-        steps.clear();
+        steps = new ArrayList<Step>(q.getSteps().size());
         Iterator<Step> i = q.getSteps().iterator();
         while(i.hasNext()) {
             Step step = i.next();
@@ -181,11 +185,11 @@
             }
         }
         //log.info("copied steps " + q.getSteps() + " became " + steps);
-        //unmodifiableSteps = Collections.unmodifiableList(steps);
+        unmodifiableSteps = Collections.unmodifiableList(steps);
         hasChangedHashcode = true;
     }
     protected void copyFields(SearchQuery q) {
-        fields.clear();
+        fields = new ArrayList<StepField>(q.getFields().size());
         MMBase mmb = MMBase.getMMBase();
         for (StepField field : q.getFields()) {
             Step step = field.getStep();
@@ -202,7 +206,7 @@
         //log.info("copied fields " + q.getFields() + " became " + fields);
     }
     protected void copySortOrders(SearchQuery q) {
-        sortOrders.clear();
+        sortOrders = new ArrayList<SortOrder>(q.getSortOrders().size());
         MMBase mmb = MMBase.getMMBase();
         for (SortOrder sortOrder : q.getSortOrders()) {
             StepField field = sortOrder.getField();
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to