KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > framework > Service


1 /*
2  * (c) Rob Gordon 2005
3  */

4 package org.oddjob.framework;
5
6 import java.lang.reflect.Method JavaDoc;
7
8 public class Service {
9
10     private final Method JavaDoc startMethod;
11     private final Method JavaDoc stopMethod;
12     private final Object JavaDoc component;
13     
14     private Service(Object JavaDoc component, Method JavaDoc startMethod, Method JavaDoc stopMethod) {
15         this.component = component;
16         this.startMethod = startMethod;
17         this.stopMethod = stopMethod;
18     }
19     
20     public void start() throws Exception JavaDoc {
21         startMethod.invoke(component, new Object JavaDoc[0]);
22     }
23     
24     public void stop() throws Exception JavaDoc {
25         stopMethod.invoke(component, new Object JavaDoc[0]);
26     }
27
28     public Object JavaDoc getComponent() {
29         return component;
30     }
31     
32     public static Service serviceFor(Object JavaDoc component) {
33         Class JavaDoc cl = component.getClass();
34         try {
35             Method JavaDoc startMethod = cl.getDeclaredMethod("start", new Class JavaDoc[0]);
36             if (startMethod.getReturnType() != Void.TYPE) {
37                 return null;
38             }
39             Method JavaDoc stopMethod = cl.getDeclaredMethod("stop", new Class JavaDoc[0]);
40             if (startMethod.getReturnType() != Void.TYPE) {
41                 return null;
42             }
43             return new Service(component, startMethod, stopMethod);
44         } catch (Exception JavaDoc e) {
45             return null;
46         }
47     }
48 }
49
Popular Tags