package org.anodyneos.xp.tagext; import javax.servlet.jsp.el.ELException; import org.anodyneos.xp.XpContext; import org.anodyneos.xp.XpException; import org.anodyneos.xp.XpOutput; import org.xml.sax.SAXException; /** * @author jvas * */ public abstract class XpTagSupport implements XpTag { private XpTag parent; private XpFragment xpBody; private XpContext xpContext; public XpTagSupport() { super(); } /* public void doTag(XpContentHandler out) throws XpException, ELException, SAXException { // by default, do nothing; } */ public abstract void doTag(XpOutput out) throws XpException, ELException, SAXException; public static final XpTag findAncestorWithClass(XpTag fromTag, Class theClass) { /* if (null == fromTag || null == theClass) { return null; } else { boolean isInterface = theClass.isInterface(); Class fromTagClass = fromTag.getClass(); fromTag = fromTag.getParent(); while( fromTag != null && (isInterface && ! theClass.isInstance(fromTag)) || ! theClass.isAssignableFrom(fromTagClass)) { fromTag = fromTag.getParent(); } return fromTag; } */ while (fromTag != null) { if (theClass.isInstance(fromTag)) { return fromTag; } fromTag = fromTag.getParent(); } return null; } public final XpTag getParent() { return parent; } public final XpFragment getXpBody() { return xpBody; } public final XpContext getXpContext() { return xpContext; } public final void setParent(XpTag parent) { this.parent = parent; } public final void setXpBody(XpFragment xpBody) { this.xpBody = xpBody; } public final void setXpContext(XpContext xpc) { this.xpContext = xpc; } }