From 65429f1502e16a2b51ccd3751059e11723bf8891 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Wed, 2 Feb 2011 21:02:21 +0000 Subject: [PATCH] Nu wordt de methode dynamisch geladen via de enum met een beetje reflectie. Als de methode niet bestaat, worden exceptions gegooid. --- java/src/pm/action/Action.java | 15 ++++++++++++++- java/src/pm/applicatie/voorbeeld/Voorbeeld.java | 16 +++++++++++++++- java/src/pm/application/Application.java | 10 +++++----- java/src/pm/device/Device.java | 1 - 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/java/src/pm/action/Action.java b/java/src/pm/action/Action.java index a4abf8f..0f7dfe6 100644 --- a/java/src/pm/action/Action.java +++ b/java/src/pm/action/Action.java @@ -1,5 +1,18 @@ package pm.action; +import java.lang.reflect.Method; + public enum Action { - START + START ("start"), + TEST ("test"); + + protected String action; + + Action(String action) { + this.action = action; + } + + public Method getMethod(Object object) throws Exception { + return object.getClass().getMethod(action); + } } diff --git a/java/src/pm/applicatie/voorbeeld/Voorbeeld.java b/java/src/pm/applicatie/voorbeeld/Voorbeeld.java index ac60819..c322fd7 100644 --- a/java/src/pm/applicatie/voorbeeld/Voorbeeld.java +++ b/java/src/pm/applicatie/voorbeeld/Voorbeeld.java @@ -1,9 +1,23 @@ package pm.applicatie.voorbeeld; +import pm.action.Action; import pm.application.Application; public class Voorbeeld extends Application { - protected void start() { + public Voorbeeld() { + try { + invoke(Action.TEST); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public void start() { System.out.println("jeheee!"); } + + public void test() { + System.out.println("neheee!"); + } } diff --git a/java/src/pm/application/Application.java b/java/src/pm/application/Application.java index 6c11eac..f248e94 100644 --- a/java/src/pm/application/Application.java +++ b/java/src/pm/application/Application.java @@ -3,11 +3,11 @@ package pm.application; import pm.action.Action; public abstract class Application { - public void invoke(Action action) { - switch (action) { - case START: - start(); - break; + public void invoke(Action action) throws Exception { + try { + action.getMethod(this).invoke(this); + } catch (Exception e) { + throw new Exception("Failed to invoke action"); } } diff --git a/java/src/pm/device/Device.java b/java/src/pm/device/Device.java index 0bf3ca6..1e3bcbb 100644 --- a/java/src/pm/device/Device.java +++ b/java/src/pm/device/Device.java @@ -1,6 +1,5 @@ package pm.device; -import java.util.ArrayList; import java.util.Queue; import pm.event.Event;