/** * */ package org.radeox.filter; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.radeox.api.engine.context.InitialRenderContext; import org.radeox.filter.balance.Balancer; import org.radeox.filter.context.FilterContext; /** * @author andrew * */ public class BalanceFilter implements Filter, CacheFilter { private InitialRenderContext initialContext; public static final String matcherString = "(<([^ />]+)(?: [^>]*?[^/])?>)|(</([^ />]+)>)"; /* (non-Javadoc) * @see org.radeox.filter.Filter#before() */ public String[] before() { return FilterPipe.EMPTY_BEFORE; } /* (non-Javadoc) * @see org.radeox.filter.Filter#filter(java.lang.String, org.radeox.filter.context.FilterContext) */ public String filter(String input, FilterContext context) { Pattern p = Pattern.compile(matcherString); Matcher m = p.matcher(input); if (m.find()) { return actuallyFilter(m); } else { return input; } } private String actuallyFilter(Matcher m) { Balancer b = new Balancer(); b.setMatcher(m); return b.filter(); } /* (non-Javadoc) * @see org.radeox.filter.Filter#getDescription() */ public String getDescription() { return "Balancing XML Fil" + "ter"; } /* (non-Javadoc) * @see org.radeox.filter.Filter#replaces() */ public String[] replaces() { return FilterPipe.NO_REPLACES; } /* (non-Javadoc) * @see org.radeox.filter.Filter#setInitialContext(org.radeox.api.engine.context.InitialRenderContext) */ public void setInitialContext(InitialRenderContext context) { initialContext = context; } }