--- /dev/null
+/*
+ * Dispatcher
+ */
+
+package mir.servlet;
+
+import java.lang.reflect.*;
+import javax.servlet.http.*;
+import mir.servlet.ServletModuleException;
+import mir.misc.*;
+
+
+/**
+ * Dispatcher, der in einer ServletModule-Klasse, die Methode, die per Http-Post oder Get
+ * Parameter "do" angegeben wurde, ausruft.
+ */
+public final class ServletModuleDispatch {
+
+ static Logfile theLog;
+
+ static {
+ theLog = Logfile.getInstance("/tmp/smod.dispatch");
+ }
+
+ /**
+ * privater Konstruktor, um versehentliche Instantiierung zu verhindern
+ */
+ private ServletModuleDispatch () {
+ }
+
+ /**
+ * Die Dispatch-Routine ruft das von dem Hauptservlet kommende ServletModule
+ * mit dem per HttpServletRequest angegebenen Paramter <code>do</code> auf.
+ * Ist kein Parameter angegeben, so wird versucht, in die <code>defaultAction</code>
+ * des ServletModules zu springen.
+ *
+ * @param req Http-Request, das vom Dispatcher an die Methode des
+ * ServletModules durchgereicht wird
+ * @param res Http-Response, die vom Dispatcher an die Methode des
+ * ServletModules durchgereicht wird
+ * @param sMod ServletModule, an das dispatched wird.
+ * @param mod Name des Modules als String (für Logfile)
+ */
+
+ public static void dispatch(ServletModule sMod, HttpServletRequest req,
+ HttpServletResponse res) throws ServletModuleException
+ {
+ //sMod.predeliver(req,res);
+
+ String doParam = req.getParameter("do");
+ //theLog.printInfo("SerletModuleDispatch: " + sMod.toString() + " with method " + doParam);
+ if (doParam == null) {
+ if (sMod.defaultAction() != null) doParam = sMod.defaultAction();
+ else throw new ServletModuleException("Parameter do nicht angegeben!");
+ }
+
+ Class[] params= { HttpServletRequest.class, HttpServletResponse.class};
+
+ try {
+ Method method = sMod.getClass().getMethod(doParam,params);
+ if (method != null) {
+ method.invoke(sMod,new Object[] {req,res} );
+ return;
+ }
+ else theLog.printDebugInfo("method lookup unsuccesful");
+ }
+ catch ( NoSuchMethodException e) { throw new ServletModuleException("no such method!" + e.toString());}
+ catch ( SecurityException e) { throw new ServletModuleException("method not allowed!" + e.toString());}
+ catch ( InvocationTargetException e) {throw new ServletModuleException("target method exception!" + e.getTargetException().toString());}
+ catch ( IllegalAccessException e) { throw new ServletModuleException("illegal method not allowed!" + e.toString());}
+// catch ( Exception e ) { throw new ServletModuleException(e.toString()); }
+
+ throw new ServletModuleException("delivery failed! -- ");
+ }
+}
\ No newline at end of file