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