package railo.runtime.text.xml.struct; import java.lang.reflect.Method; import org.w3c.dom.CDATASection; import org.w3c.dom.DOMException; import org.w3c.dom.Node; import org.w3c.dom.Text; import railo.runtime.exp.PageRuntimeException; import railo.runtime.op.Caster; import railo.runtime.type.Collection; import railo.runtime.type.util.ArrayUtil; /** * */ public final class XMLCDATASectionStruct extends XMLNodeStruct implements CDATASection { private CDATASection section; /** * constructor of the class * @param section * @param caseSensitive */ public XMLCDATASectionStruct(CDATASection section, boolean caseSensitive) { super(section,caseSensitive); this.section=section; } @Override public Text splitText(int offset) throws DOMException { return section.splitText(offset); } @Override public int getLength() { return section.getLength(); } @Override public void deleteData(int offset, int count) throws DOMException { section.deleteData(offset,count); } @Override public String getData() throws DOMException { return section.getData(); } @Override public String substringData(int offset, int count) throws DOMException { return section.substringData(offset,count); } @Override public void replaceData(int offset, int count, String arg) throws DOMException { section.replaceData(offset,count,arg); } @Override public void insertData(int offset, String arg) throws DOMException { section.insertData(offset,arg); } @Override public void appendData(String arg) throws DOMException { section.appendData(arg); } @Override public void setData(String data) throws DOMException { section.setData(data); } public String getWholeText() { // dynamic load to support jre 1.4 and 1.5 try { Method m = section.getClass().getMethod("getWholeText", new Class[]{}); return Caster.toString(m.invoke(section, ArrayUtil.OBJECT_EMPTY)); } catch (Exception e) { throw new PageRuntimeException(Caster.toPageException(e)); } } public boolean isElementContentWhitespace() { // dynamic load to support jre 1.4 and 1.5 try { Method m = section.getClass().getMethod("isElementContentWhitespace", new Class[]{}); return Caster.toBooleanValue(m.invoke(section, ArrayUtil.OBJECT_EMPTY)); } catch (Exception e) { throw new PageRuntimeException(Caster.toPageException(e)); } } public Text replaceWholeText(String arg0) throws DOMException { // dynamic load to support jre 1.4 and 1.5 try { Method m = section.getClass().getMethod("replaceWholeText", new Class[]{arg0.getClass()}); return (Text)m.invoke(section, new Object[]{arg0}); } catch (Exception e) { throw new PageRuntimeException(Caster.toPageException(e)); } } @Override public Collection duplicate(boolean deepCopy) { return new XMLCDATASectionStruct((CDATASection)section.cloneNode(deepCopy),caseSensitive); } @Override public Node cloneNode(boolean deep) { return new XMLCDATASectionStruct((CDATASection)section.cloneNode(deep),caseSensitive); } }