package org.madore.damlengine; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; import java.util.Map; import java.util.HashMap; import org.w3c.dom.Element; import org.w3c.dom.Attr; public class TodoAttr extends TodoItem { protected static Map damlHandlers; { Class[] handlerArgTypes = new Class[]{ TodoAttr.class }; damlHandlers = new HashMap(); try { damlHandlers.put("xempty", XemptyAttrHandler.class.getMethod("handle", handlerArgTypes)); } catch (NoSuchMethodException e) { // FIXME: this isn't good... throw new Error("this is impossible"); } } Attr attr; Element owner; Map context; Map options; public TodoAttr(Attr attr, Element owner, Map context, Map options) { this.attr = attr; this.owner = owner; this.context = context; this.options = options; } public void dispatch() { Method handler; String nsuri = attr.getNamespaceURI(); if ( nsuri != null && nsuri.equals(DamlEngine.DAML_NS) ) { handler = damlHandlers.get(attr.getLocalName()); } else handler = null; try { if ( handler != null ) handler.invoke(null, new Object[]{this}); } catch (IllegalAccessException e) { // FIXME: this isn't good... throw new Error("this is impossible"); } catch (InvocationTargetException e) { // FIXME: this isn't good... throw new Error("this is impossible"); } } }