package org.anodyneos.xpImpl.tld; import org.anodyneos.commons.xml.sax.CDATAProcessor; import org.anodyneos.commons.xml.sax.ElementProcessor; import org.anodyneos.xp.tagext.TagVariableInfo; import org.xml.sax.SAXException; class ProcessorVariable extends TLDProcessor { private TagVariableInfo variableInfo; private CDATAProcessor descriptionProcessor; private CDATAProcessor nameFromAttributeProcessor; private CDATAProcessor aliasProcessor; private CDATAProcessor scopeProcessor; public static final String E_DESCRIPTION = "description"; public static final String E_NAME_FROM_ATTRIBUTE = "name-from-attribute"; public static final String E_ALIAS = "alias"; public static final String E_SCOPE = "scope"; public static final String S_NESTED = "NESTED"; public static final String S_AT_BEGIN = "AT_BEGIN"; public static final String S_AT_END = "AT_END"; public ProcessorVariable(TLDContext ctx) { super(ctx); descriptionProcessor = new CDATAProcessor(ctx); nameFromAttributeProcessor = new CDATAProcessor(ctx); aliasProcessor = new CDATAProcessor(ctx); scopeProcessor = new CDATAProcessor(ctx); } public ElementProcessor getProcessorFor(String uri, String localName, String qName) throws SAXException { if (E_DESCRIPTION.equals(localName)) { return descriptionProcessor; } else if(E_NAME_FROM_ATTRIBUTE.equals(localName)) { return nameFromAttributeProcessor; } else if (E_ALIAS.equals(localName)) { return aliasProcessor; } else if(E_SCOPE.equals(localName)) { return scopeProcessor; } else { return super.getProcessorFor(uri, localName, qName); } } public void endElement(String uri, String localName, String qName) throws SAXException { int iScope; String sScope = null == scopeProcessor.getCDATA() ? null : scopeProcessor.getCDATA().trim(); if (S_AT_BEGIN.equals(sScope)) { iScope = TagVariableInfo.SCOPE_AT_BEGIN; } else if (S_AT_END.equals(sScope)) { iScope = TagVariableInfo.SCOPE_AT_END; } else if (S_NESTED.equals(sScope)) { iScope = TagVariableInfo.SCOPE_NESTED; } else { iScope = TagVariableInfo.SCOPE_NESTED; } variableInfo = new TagVariableInfo( descriptionProcessor.getCDATA(), nameFromAttributeProcessor.getCDATA(), aliasProcessor.getCDATA(), iScope); descriptionProcessor = null; nameFromAttributeProcessor = null; aliasProcessor = null; scopeProcessor = null; } public TagVariableInfo getTagVariableInfo() { return variableInfo; } }