1 9 10 package org.jboss.portal.format.parser.chars; 11 12 import java.io.IOException ; 13 import java.io.Reader ; 14 import java.io.Writer ; 15 16 20 public class StackFilter implements Filter 21 { 22 23 private Filter[] stack = new Filter[0]; 24 25 public StackFilter() 26 { 27 } 28 29 public void add(Filter filter) 30 { 31 Filter[] tmp = new Filter[1 + stack.length]; 32 System.arraycopy(stack, 0, tmp, 1, stack.length); 33 tmp[0] = filter; 34 stack = tmp; 35 } 36 37 public void filter(Reader in, Writer out) throws IOException 38 { 39 int n = stack.length - 1; 40 if (n > 1) 41 { 42 MutableChars chars1 = new MutableChars(); 43 stack[n].filter(in, chars1.getWriter()); 44 MutableChars chars2 = new MutableChars(); 45 while (n > 0) 46 { 47 stack[n].filter(chars1.getReader(), chars2.getWriter()); 49 MutableChars tmp = chars1; 51 chars1 = chars2; 52 chars2 = tmp; 53 chars2.reset(); 54 n--; 55 } 56 stack[0].filter(chars1.getReader(), out); 57 } 58 else if (n == 1) 59 { 60 MutableChars chars = new MutableChars(); 61 stack[1].filter(in, chars.getWriter()); 62 stack[0].filter(chars.getReader(), out); 63 } 64 else if (n == 0) 65 { 66 stack[0].filter(in, out); 67 } 68 } 69 70 } 71 | Popular Tags |