summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/TodoAttr.java
diff options
context:
space:
mode:
authorDavid A. Madore <david@procyon.(none)>2010-04-13 15:21:41 +0200
committerDavid A. Madore <david@procyon.(none)>2010-04-13 15:21:41 +0200
commite3b7a9c657a6a5f5a7a8f3c7ee4fdff1aee6410f (patch)
tree9a7f411ce9333aa6c67cd66522f4aaf60c35d194 /org/madore/damlengine/TodoAttr.java
parent734a0b78ea5508f243caf18a50e36ac8918e11db (diff)
downloaddamlengine-e3b7a9c657a6a5f5a7a8f3c7ee4fdff1aee6410f.tar.gz
damlengine-e3b7a9c657a6a5f5a7a8f3c7ee4fdff1aee6410f.tar.bz2
damlengine-e3b7a9c657a6a5f5a7a8f3c7ee4fdff1aee6410f.zip
Framework for handling attributes.
Diffstat (limited to 'org/madore/damlengine/TodoAttr.java')
-rw-r--r--org/madore/damlengine/TodoAttr.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/org/madore/damlengine/TodoAttr.java b/org/madore/damlengine/TodoAttr.java
new file mode 100644
index 0000000..d4d877e
--- /dev/null
+++ b/org/madore/damlengine/TodoAttr.java
@@ -0,0 +1,57 @@
+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<String,Method> damlHandlers;
+
+ {
+ Class[] handlerArgTypes = new Class[]{ TodoAttr.class };
+ damlHandlers = new HashMap<String,Method>();
+ // try {
+ // ;
+ // } catch (NoSuchMethodException e) {
+ // // FIXME: this isn't good...
+ // throw new Error("this is impossible");
+ // }
+ }
+
+ Attr attr;
+ Element owner;
+ Map<String,Object> context;
+ Map<String,Object> options;
+
+ public TodoAttr(Attr attr, Element owner,
+ Map<String,Object> context, Map<String,Object> 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");
+ }
+ }
+
+}