From 5c6ccfca16a421860cd57d11e41d94d8a70cda76 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Wed, 14 Apr 2010 20:52:52 +0200 Subject: Make handlers instances instead of using static methods. --- org/madore/damlengine/TodoElement.java | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) (limited to 'org/madore/damlengine/TodoElement.java') diff --git a/org/madore/damlengine/TodoElement.java b/org/madore/damlengine/TodoElement.java index f8eaeec..c3dbf0b 100644 --- a/org/madore/damlengine/TodoElement.java +++ b/org/madore/damlengine/TodoElement.java @@ -1,25 +1,17 @@ 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; public class TodoElement extends TodoItem { - protected static Map damlHandlers; - protected static Method defaultHandler; + protected static Map damlHandlers; + protected static ElementHandler defaultHandler; { - Class[] handlerArgTypes = new Class[]{ TodoElement.class }; - damlHandlers = new HashMap(); - try { - defaultHandler = DefaultHandler.class.getMethod("handle", handlerArgTypes); - } catch (NoSuchMethodException e) { - // FIXME: this isn't good... - throw new Error("this is impossible"); - } + damlHandlers = new HashMap(); + defaultHandler = new DefaultHandler(); } Element node; @@ -33,7 +25,7 @@ public class TodoElement extends TodoItem { } public void dispatch() { - Method handler; + ElementHandler handler; String nsuri = node.getNamespaceURI(); if ( nsuri != null && nsuri.equals(DamlEngine.DAML_NS) ) { handler = damlHandlers.get(node.getLocalName()); @@ -41,15 +33,7 @@ public class TodoElement extends TodoItem { handler = defaultHandler; } else handler = defaultHandler; - try { - 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"); - } + handler.handle(this); } } -- cgit v1.2.3