Update of /var/cvs/src/org/mmbase/util/transformers
In directory james.mmbase.org:/tmp/cvs-serv6905/src/org/mmbase/util/transformers

Modified Files:
        ChunkedTransformer.java BufferedReaderTransformer.java 
        SpaceReducer.java 
Log Message:
bugfix: SpaceReducer was not stateless


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/util/transformers


Index: ChunkedTransformer.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/util/transformers/ChunkedTransformer.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- ChunkedTransformer.java     11 Dec 2007 12:23:34 -0000      1.10
+++ ChunkedTransformer.java     7 Mar 2008 17:31:50 -0000       1.11
@@ -371,7 +371,8 @@
                 }
             };
         CharTransformer trans2 = new BufferedReaderTransformer() {
-                protected boolean transform(PrintWriter bw, String line) {
+                @Override
+                protected boolean transform(PrintWriter bw, String line, 
Map<String,Object>context) {
                     bw.println(line);
                     return true;
                 }


Index: BufferedReaderTransformer.java
===================================================================
RCS file: 
/var/cvs/src/org/mmbase/util/transformers/BufferedReaderTransformer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- BufferedReaderTransformer.java      11 Dec 2007 12:23:34 -0000      1.4
+++ BufferedReaderTransformer.java      7 Mar 2008 17:31:50 -0000       1.5
@@ -10,6 +10,8 @@
 package org.mmbase.util.transformers;
 
 import java.io.*;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.mmbase.util.logging.*;
 
@@ -17,7 +19,7 @@
 
  * @author Michiel Meeuwissen
  * @since MMBase-1.9
- * @version $Id: BufferedReaderTransformer.java,v 1.4 2007/12/11 12:23:34 
michiel Exp $
+ * @version $Id: BufferedReaderTransformer.java,v 1.5 2008/03/07 17:31:50 
ernst Exp $
  */
 
 public abstract class BufferedReaderTransformer extends ReaderTransformer 
implements CharTransformer {
@@ -33,8 +35,9 @@
             PrintWriter bw = new PrintWriter(new BufferedWriter(w));
 
             String line = br.readLine();
+            Map<String, Object> context = new HashMap<String, Object>();
             while (line != null) {
-                boolean nl = transform(bw, line);
+                boolean nl = transform(bw, line, context);
                 line = br.readLine();
                 if (nl && line != null) bw.write('\n');
             }
@@ -46,6 +49,13 @@
         return w;
     }
 
-    protected abstract boolean transform(PrintWriter bw, String line);
+    /**
+     * @param bw the writer to direct the output to
+     * @param line the input
+     * @param context in this map you can store the state of of the trasformer 
between invocations. At the start of the docuement it's a new Map 
+     * 
+     * @return
+     */
+    protected abstract boolean transform(PrintWriter bw, String line, 
Map<String,Object> context);
 
 }


Index: SpaceReducer.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/util/transformers/SpaceReducer.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- SpaceReducer.java   5 Mar 2008 12:53:59 -0000       1.18
+++ SpaceReducer.java   7 Mar 2008 17:31:50 -0000       1.19
@@ -10,8 +10,7 @@
 package org.mmbase.util.transformers;
 
 import java.io.*;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -28,31 +27,29 @@
  * @author Michiel Meeuwissen
  * @author Ernst Bunders
  * @since MMBase-1.7
- * @version $Id: SpaceReducer.java,v 1.18 2008/03/05 12:53:59 ernst Exp $
+ * @version $Id: SpaceReducer.java,v 1.19 2008/03/07 17:31:50 ernst Exp $
  */
 
 public class SpaceReducer extends BufferedReaderTransformer implements 
CharTransformer {
 
     private static Logger log = Logging.getLoggerInstance(SpaceReducer.class);
-    /**
-     * This is a list of tags, of who's body the empty lines should not be 
filtered.
-     */
-    private static List<Tag> tagsToPass = new ArrayList<Tag>();
-    static{
+    protected static final String CONTEXT_TAGSTOPASS = "tagstopass";
+    protected static final String CONTEXT_CURRENTLYOPENED = "currentlyopen";
+
+    @Override
+    protected boolean transform(PrintWriter bw, String line, 
Map<String,Object> context) {
+        List<Tag> tagsToPass;
+        if(context.get(SpaceReducer.CONTEXT_TAGSTOPASS) == null){
+            tagsToPass = new ArrayList<Tag>();
         tagsToPass.add(new Tag("pre"));
         tagsToPass.add(new Tag("textarea"));
+            context.put(SpaceReducer.CONTEXT_TAGSTOPASS, tagsToPass);
+        }else{
+            tagsToPass = 
(List<Tag>)context.get(SpaceReducer.CONTEXT_TAGSTOPASS);
     }
-    protected Tag currentlyOpened = null;
 
+        Tag currentlyOpened = (Tag) 
context.get(SpaceReducer.CONTEXT_CURRENTLYOPENED);
 
-    protected boolean transform(PrintWriter bw, String line) {
-//        if (!line.trim().equals("")  {
-//            bw.write(line);
-//            
-//            return true;
-//        } else {
-//            return false;
-//        }
         boolean result = false;
         if(!line.trim().equals("") || currentlyOpened != null){
             bw.write(line);
@@ -69,12 +66,11 @@
             for (Tag tag : tagsToPass) {
                 tag.setLine(line);
                 if(tag.hasOpened()){
-                    currentlyOpened = tag;
+                    context.put(SpaceReducer.CONTEXT_CURRENTLYOPENED, tag);
                 }
             }
         }
         return result;
-        
     }
 
     /**
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to