1 package com.instantbank.collections.main.web; 2 3 import java.io.ByteArrayInputStream; 4 import javax.servlet.jsp.PageContext; 5 import javax.servlet.jsp.JspException; 6 import javax.servlet.jsp.tagext.TagSupport; 7 import oracle.xml.parser.v2.DOMParser; 8 import oracle.xml.parser.v2.XMLDocument; 9 10 public class DomParserTag extends TagSupport { 11 private String xml; 12 private boolean force = false; 13 14 15 public void setXml(String xml) { 16 this.xml = xml; 17 } 18 19 20 public void setId(String id) { 21 this.id = id; 22 } 23 24 25 public void setForce(boolean force) { 26 this.force = force; 27 } 28 29 30 public int doStartTag() throws JspException { 31 XMLDocument doc = (XMLDocument)pageContext.getServletContext().getAttribute(id); 32 if(doc == null || force) { 33 parse(); 34 } 35 return SKIP_BODY; 36 } 37 38 39 private void parse() throws JspException { 40 XMLDocument doc; 41 DOMParser docParser = new DOMParser(); 42 ByteArrayInputStream stream; 43 44 try { 45 stream = new ByteArrayInputStream(xml.getBytes()); 46 docParser.setValidationMode(false); 47 docParser.parse(stream); 48 doc = docParser.getDocument(); 49 pageContext.setAttribute(id, doc, PageContext.PAGE_SCOPE); 50 } 51 catch(Exception e) { 52 throw new JspException(e.getMessage()); 53 } 54 } 55 56 57 public void release() { 58 xml = null; 59 force = false; 60 } 61 } 62 63