package org.anodyneos.xpImpl.tld;
import org.anodyneos.commons.xml.sax.CDATAProcessor;
import org.anodyneos.commons.xml.sax.ElementProcessor;
import org.anodyneos.xp.tagext.FunctionInfo;
import org.xml.sax.SAXException;
class ProcessorFunction extends TLDProcessor {
private FunctionInfo functionInfo;
private CDATAProcessor nameProcessor;
private CDATAProcessor functionClassProcessor;
private CDATAProcessor functionSignatureProcessor;
public static final String E_NAME = "name";
public static final String E_FUNCTION_CLASS = "function-class";
public static final String E_FUNCTION_SIGNATURE = "function-signature";
public ProcessorFunction(TLDContext ctx) {
super(ctx);
nameProcessor = new CDATAProcessor(ctx);
functionClassProcessor = new CDATAProcessor(ctx);
functionSignatureProcessor = new CDATAProcessor(ctx);
}
public ElementProcessor getProcessorFor(String uri, String localName, String qName)
throws SAXException {
if (E_NAME.equals(localName)) {
return nameProcessor;
} else if (E_FUNCTION_CLASS.equals(localName)) {
return functionClassProcessor;
} else if (E_FUNCTION_SIGNATURE.equals(localName)) {
return functionSignatureProcessor;
} else {
return new CDATAProcessor(getContext());
//return super.getProcessorFor(uri, localName, qName);
}
}
public void endElement(String uri, String localName, String qName) throws SAXException {
functionInfo = new FunctionInfo(nameProcessor.getCDATA(), functionClassProcessor.getCDATA(),
functionSignatureProcessor.getCDATA());
nameProcessor = null;
functionClassProcessor = null;
functionSignatureProcessor = null;
}
public FunctionInfo getFunctionInfo() {
return functionInfo;
}
}