Author: jboynes Date: Sat Oct 2 22:02:37 2010 New Revision: 1003898 URL: http://svn.apache.org/viewvc?rev=1003898&view=rev Log: whitespace police
Modified: tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java Modified: tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java?rev=1003898&r1=1003897&r2=1003898&view=diff ============================================================================== --- tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java (original) +++ tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java Sat Oct 2 22:02:37 2010 @@ -13,7 +13,7 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.apache.taglibs.standard.tag.common.xml; @@ -23,7 +23,6 @@ import java.io.Reader; import java.io.StringReader; import java.io.Writer; import java.util.List; - import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspTagException; @@ -66,37 +65,37 @@ public abstract class TransformSupport e //********************************************************************* // Protected state - protected Object xml; // attribute - protected String xmlSystemId; // attribute - protected Object xslt; // attribute - protected String xsltSystemId; // attribute - protected Result result; // attribute + protected Object xml; // attribute + protected String xmlSystemId; // attribute + protected Object xslt; // attribute + protected String xsltSystemId; // attribute + protected Result result; // attribute //********************************************************************* // Private state - private String var; // 'var' attribute - private int scope; // processed 'scope' attr - private Transformer t; // actual Transformer - private TransformerFactory tf; // reusable factory - private DocumentBuilder db; // reusable factory - private DocumentBuilderFactory dbf; // reusable factory + private String var; // 'var' attribute + private int scope; // processed 'scope' attr + private Transformer t; // actual Transformer + private TransformerFactory tf; // reusable factory + private DocumentBuilder db; // reusable factory + private DocumentBuilderFactory dbf; // reusable factory //********************************************************************* // Constructor and initialization public TransformSupport() { - super(); - init(); + super(); + init(); } private void init() { - xml = xslt = null; - xmlSystemId = xsltSystemId = null; - var = null; - result = null; - tf = null; + xml = xslt = null; + xmlSystemId = xsltSystemId = null; + var = null; + result = null; + tf = null; scope = PageContext.PAGE_SCOPE; } @@ -105,121 +104,125 @@ public abstract class TransformSupport e // Tag logic public int doStartTag() throws JspException { - /* - * We can set up our Transformer here, so we do so, and we let - * it receive parameters directly from subtags (instead of - * caching them. - */ - try { - - //************************************ - // Initialize - - // set up our DocumentBuilderFactory if necessary - if (dbf == null) { - dbf = DocumentBuilderFactory.newInstance(); - dbf.setNamespaceAware(true); - dbf.setValidating(false); - } - if (db == null) - db = dbf.newDocumentBuilder(); - - // set up the TransformerFactory if necessary - if (tf == null) - tf = TransformerFactory.newInstance(); - - //************************************ - // Produce transformer - - Source s; - if (xslt != null) { - if (!(xslt instanceof String) && !(xslt instanceof Reader) - && !(xslt instanceof javax.xml.transform.Source)) - throw new JspTagException( - Resources.getMessage("TRANSFORM_XSLT_UNRECOGNIZED")); - s = getSource(xslt, xsltSystemId); - } else { - throw new JspTagException( - Resources.getMessage("TRANSFORM_NO_TRANSFORMER")); - } - tf.setURIResolver(new JstlUriResolver(pageContext)); - t = tf.newTransformer(s); + /* + * We can set up our Transformer here, so we do so, and we let + * it receive parameters directly from subtags (instead of + * caching them. + */ + try { + + //************************************ + // Initialize + + // set up our DocumentBuilderFactory if necessary + if (dbf == null) { + dbf = DocumentBuilderFactory.newInstance(); + dbf.setNamespaceAware(true); + dbf.setValidating(false); + } + if (db == null) + db = dbf.newDocumentBuilder(); - return EVAL_BODY_BUFFERED; + // set up the TransformerFactory if necessary + if (tf == null) + tf = TransformerFactory.newInstance(); + + //************************************ + // Produce transformer + + Source s; + if (xslt != null) { + if (!(xslt instanceof String) && !(xslt instanceof Reader) + && !(xslt instanceof javax.xml.transform.Source)) + throw new JspTagException( + Resources.getMessage("TRANSFORM_XSLT_UNRECOGNIZED")); + s = getSource(xslt, xsltSystemId); + } else { + throw new JspTagException( + Resources.getMessage("TRANSFORM_NO_TRANSFORMER")); + } + tf.setURIResolver(new JstlUriResolver(pageContext)); + t = tf.newTransformer(s); + + return EVAL_BODY_BUFFERED; - } catch (SAXException ex) { - throw new JspException(ex); - } catch (ParserConfigurationException ex) { - throw new JspException(ex); - } catch (IOException ex) { - throw new JspException(ex); - } catch (TransformerConfigurationException ex) { - throw new JspException(ex); - } + } catch (SAXException ex) { + throw new JspException(ex); + } catch (ParserConfigurationException ex) { + throw new JspException(ex); + } catch (IOException ex) { + throw new JspException(ex); + } catch (TransformerConfigurationException ex) { + throw new JspException(ex); + } } // parse 'xml' or body, transform via our Transformer, // and store as 'var' or through 'result' + public int doEndTag() throws JspException { - try { + try { - //************************************ - // Determine source XML + //************************************ + // Determine source XML - // if we haven't gotten a source, use the body (which may be empty) - Object xml = this.xml; - if (xml == null) // still equal - if (bodyContent != null && bodyContent.getString() != null) - xml = bodyContent.getString().trim(); - else - xml = ""; - - // let the Source be with you - Source source = getSource(xml, xmlSystemId); - - //************************************ - // Conduct the transformation - - // we can assume at most one of 'var' or 'result' is specified - if (result != null) - // we can write directly to the Result - t.transform(source, result); - else if (var != null) { - // we need a Document - Document d = db.newDocument(); - Result doc = new DOMResult(d); - t.transform(source, doc); - pageContext.setAttribute(var, d, scope); - } else { - Result page = - new StreamResult(new SafeWriter(pageContext.getOut())); - t.transform(source, page); - } - - return EVAL_PAGE; - } catch (SAXException ex) { - throw new JspException(ex); - } catch (ParserConfigurationException ex) { - throw new JspException(ex); - } catch (IOException ex) { - throw new JspException(ex); - } catch (TransformerException ex) { - throw new JspException(ex); - } + // if we haven't gotten a source, use the body (which may be empty) + Object xml = this.xml; + if (xml == null) // still equal + if (bodyContent != null && bodyContent.getString() != null) + xml = bodyContent.getString().trim(); + else + xml = ""; + + // let the Source be with you + Source source = getSource(xml, xmlSystemId); + + //************************************ + // Conduct the transformation + + // we can assume at most one of 'var' or 'result' is specified + if (result != null) + // we can write directly to the Result + t.transform(source, result); + else if (var != null) { + // we need a Document + Document d = db.newDocument(); + Result doc = new DOMResult(d); + t.transform(source, doc); + pageContext.setAttribute(var, d, scope); + } else { + Result page = + new StreamResult(new SafeWriter(pageContext.getOut())); + t.transform(source, page); + } + + return EVAL_PAGE; + } catch (SAXException ex) { + throw new JspException(ex); + } catch (ParserConfigurationException ex) { + throw new JspException(ex); + } catch (IOException ex) { + throw new JspException(ex); + } catch (TransformerException ex) { + throw new JspException(ex); + } } // Releases any resources we may have (or inherit) + public void release() { - init(); + init(); } //********************************************************************* // Public methods for subtags - /** Sets (adds) a transformation parameter on our transformer. */ + /** + * Sets (adds) a transformation parameter on our transformer. + */ public void addParameter(String name, Object value) { - t.setParameter(name, value); + t.setParameter(name, value); } @@ -232,12 +235,12 @@ public abstract class TransformSupport e * the current directory in the filesystem. */ private static String wrapSystemId(String systemId) { - if (systemId == null) - return "jstl:"; - else if (ImportSupport.isAbsoluteUrl(systemId)) - return systemId; - else - return ("jstl:" + systemId); + if (systemId == null) + return "jstl:"; + else if (ImportSupport.isAbsoluteUrl(systemId)) + return systemId; + else + return ("jstl:" + systemId); } /** @@ -247,41 +250,41 @@ public abstract class TransformSupport e * it as a URL. A null input always results in a null output. */ private Source getSource(Object o, String systemId) - throws SAXException, ParserConfigurationException, IOException { - if (o == null) - return null; + throws SAXException, ParserConfigurationException, IOException { + if (o == null) + return null; else if (o instanceof Source) { - return (Source) o; + return (Source) o; } else if (o instanceof String) { - // if we've got a string, chain to Reader below - return getSource(new StringReader((String) o), systemId); + // if we've got a string, chain to Reader below + return getSource(new StringReader((String) o), systemId); } else if (o instanceof Reader) { - // explicitly go through SAX to maintain control - // over how relative external entities resolve + // explicitly go through SAX to maintain control + // over how relative external entities resolve XMLReader xr = XMLReaderFactory.createXMLReader(); xr.setEntityResolver( - new ParseSupport.JstlEntityResolver(pageContext)); + new ParseSupport.JstlEntityResolver(pageContext)); InputSource s = new InputSource((Reader) o); s.setSystemId(wrapSystemId(systemId)); Source result = new SAXSource(xr, s); result.setSystemId(wrapSystemId(systemId)); - return result; + return result; } else if (o instanceof Node) { - return new DOMSource((Node) o); + return new DOMSource((Node) o); } else if (o instanceof List) { - // support 1-item List because our XPath processor outputs them - List l = (List) o; - if (l.size() == 1) { - return getSource(l.get(0), systemId); // unwrap List - } else { - throw new IllegalArgumentException( - Resources.getMessage("TRANSFORM_SOURCE_INVALID_LIST")); - } + // support 1-item List because our XPath processor outputs them + List l = (List) o; + if (l.size() == 1) { + return getSource(l.get(0), systemId); // unwrap List + } else { + throw new IllegalArgumentException( + Resources.getMessage("TRANSFORM_SOURCE_INVALID_LIST")); + } } else { - throw new IllegalArgumentException( - Resources.getMessage("TRANSFORM_SOURCE_UNRECOGNIZED") - + o.getClass()); - } + throw new IllegalArgumentException( + Resources.getMessage("TRANSFORM_SOURCE_UNRECOGNIZED") + + o.getClass()); + } } @@ -289,7 +292,7 @@ public abstract class TransformSupport e // Tag attributes public void setVar(String var) { - this.var = var; + this.var = var; } public void setScope(String scope) { @@ -306,52 +309,64 @@ public abstract class TransformSupport e * toilet in my office similarly...) */ private static class SafeWriter extends Writer { - private Writer w; - public SafeWriter(Writer w) { this.w = w; } - public void close() { } - public void flush() { } - public void write(char[] cbuf, int off, int len) throws IOException { - w.write(cbuf, off, len); - } - } + private Writer w; + + public SafeWriter(Writer w) { + this.w = w; + } + + public void close() { + } + + public void flush() { + } + + public void write(char[] cbuf, int off, int len) throws IOException { + w.write(cbuf, off, len); + } + } //********************************************************************* // JSTL-specific URIResolver class - /** Lets us resolve relative external entities. */ + /** + * Lets us resolve relative external entities. + */ private static class JstlUriResolver implements URIResolver { private final PageContext ctx; + public JstlUriResolver(PageContext ctx) { this.ctx = ctx; } + public Source resolve(String href, String base) - throws TransformerException { + throws TransformerException { // pass if we don't have a systemId if (href == null) return null; - // remove "jstl" marker from 'base' + // remove "jstl" marker from 'base' // NOTE: how 'base' is determined varies among different Xalan // xsltc implementations int index; if (base != null && (index = base.indexOf("jstl:")) != -1) { base = base.substring(index + 5); - } + } // we're only concerned with relative URLs if (ImportSupport.isAbsoluteUrl(href) - || (base != null && ImportSupport.isAbsoluteUrl(base))) + || (base != null && ImportSupport.isAbsoluteUrl(base))) return null; - // base is relative; remove everything after trailing '/' - if (base == null || base.lastIndexOf("/") == -1) - base = ""; - else - base = base.substring(0, base.lastIndexOf("/") + 1); + // base is relative; remove everything after trailing '/' + if (base == null || base.lastIndexOf("/") == -1) + base = ""; + else + base = base.substring(0, base.lastIndexOf("/") + 1); - // concatenate to produce the real URL we're interested in - String target = base + href; + // concatenate to produce the real URL we're interested in + String target = base + href; // for relative URLs, load and wrap the resource. // don't bother checking for 'null' since we specifically want @@ -361,19 +376,19 @@ public abstract class TransformSupport e s = ctx.getServletContext().getResourceAsStream(target); if (s == null) throw new TransformerException( - Resources.getMessage("UNABLE_TO_RESOLVE_ENTITY", - href)); + Resources.getMessage("UNABLE_TO_RESOLVE_ENTITY", + href)); } else { String pagePath = - ((HttpServletRequest) ctx.getRequest()).getServletPath(); + ((HttpServletRequest) ctx.getRequest()).getServletPath(); String basePath = - pagePath.substring(0, pagePath.lastIndexOf("/")); + pagePath.substring(0, pagePath.lastIndexOf("/")); s = ctx.getServletContext().getResourceAsStream( - basePath + "/" + target); - if (s == null) - throw new TransformerException( - Resources.getMessage("UNABLE_TO_RESOLVE_ENTITY", - href)); + basePath + "/" + target); + if (s == null) + throw new TransformerException( + Resources.getMessage("UNABLE_TO_RESOLVE_ENTITY", + href)); } return new StreamSource(s); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org