Java Web Services via REST bereitstellen
ulrich
2014-11-18 3f6c852e740be30d9f25848f6385596c097d0b5d
commit | author | age
ca8e1e 1 /*
U 2     Transit - Remote procedure calls made simple
3     Copyright (c) 2012  Ulrich Hilger
4
5     This program is free software: you can redistribute it and/or modify
6     it under the terms of the GNU Affero General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU Affero General Public License for more details.
14
15     You should have received a copy of the GNU Affero General Public License
16     along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 package de.uhilger.transit;
20
21 import java.lang.reflect.Method;
22
23 /**
24  * Klassen, die Java-Klassen und deren Methoden zur Ausfuehrung 
25  * bereitstellen, muessen diese Schnittstelle implementieren 
26  * 
27  * @author Copyright (c) Ulrich Hilger, http://uhilger.de
28  * @author Published under the terms and conditions of
29  * the <a href="http://www.gnu.org/licenses/agpl-3.0" target="_blank">GNU Affero General Public License</a>
30  * 
31  * @version 1, September 16, 2012
32  */
33 public interface JavaDienst {
34     /**
35      * Eine Klasse heraussuchen
36      * 
37      * @param klassenName  voller Name der gesuchten Klasse, z.B. java.lang.String
38      * @return  die Klasse oder null, wenn keine Klasse mit diesem Namen gefunden wurde
39      */
40     @SuppressWarnings("rawtypes")
41     public Class klasseFinden(String klassenName) throws Exception;
42     
43     /**
44      * Eine Methode heraussuchen
45      * 
46      * Diese Methode sieht vor, dass ein Methodenname nur einmal in einer 
47      * Klasse vorkommt. In Faellen, wo mehrere Methoden einer Klasse den 
48      * selben Namen haben, wird die erste Methode dieses Namens geliefert. 
49      * 
50      * @param klassenName  Name der Klasse
51      * @param methodenName Name der gesuchten Mthode
52      * @return  die Methode oder null, wenn keine Methode mit diesem Namen
53      * in der angegebenen Klasse gefunden wurde
54      */
55     public Method methodeFinden(String klassenName, String methodenName) throws Exception;
56     
57     /**
58      * Eine Methode ausfuehren
59      * 
60      * Diese Methode sieht vor, dass ein Methodenname nur einmal in einer 
61      * Klasse vorkommt. In Faellen, wo mehrere Methoden einer Klasse den 
62      * selben Namen haben, wird die erste Methode dieses Namens verwendet. 
63      * 
64      * @param klassenName  Name der Klasse
65      * @param methodenName  Name der Methode
66      * @param format  das Format, das Parameter und Rueckgabewert haben, z.B. "JSON"
67      * @param parameter  die Parameter der Methode
68      * @return  der Rueckgabewert der Methode nach der Ausfuehrung
69      */
70     public Object methodeAusfuehren(String klassenName, String methodenName, String format, Object... parameter) throws Exception;
71     
72     /**
73      * Eine Methode ausfuehren
74      * 
75      * Diese Methode sieht vor, dass ein Methodenname nur einmal in einer 
76      * Klasse vorkommt. In Faellen, wo mehrere Methoden einer Klasse den 
77      * selben Namen haben, wird die erste Methode dieses Namens verwendet. 
78      * 
79      * @param o  ein Objekt der Klasse, die die auszufuehrende Methode enthaelt
80      * @param methodenName  Name der Methode
81      * @param format  das Format, das Parameter und Rueckgabewert haben, z.B. "JSON"
82      * @param parameter  die Parameter der Methode
83      * @return  der Rueckgabewert der Methode nach der Ausfuehrung
84      */
85     public Object methodeAusfuehren(Object o, String methodenName, String format, Object... parameter) throws Exception;
86     
87     /**
88      * Eine Methode ausfuehren
89      * 
90      * @param o  ein Objekt der Klasse, die die auszufuehrende Methode enthaelt
91      * @param methode  das Methodenobjekt, das ausgefuehrt werden soll
92      * @param format  das Format, das Parameter und Rueckgabewert haben, z.B. "JSON"
93      * @param parameter  die Parameter der Methode
94      * @return  der Rueckgabewert der Methode nach der Ausfuehrung
95      */
96     public Object methodeAusfuehren(Object o, Method methode, String format, Object... parameter) throws Exception;
97     
98   /**
99    * Einen Wandler hinzufuegen
100    * 
101    * @param wandler  der Wandler, der hinzugefuegt werden soll
102    */
103     public void wandlerHinzufuegen(Wandler wandler);
104     
105   /**
106    * Einen Wandler entfernen
107    * 
108    * @param wandler  der Wandler, der entfernt werden soll
109    */
110     public void wandlerEntfernen(Wandler wandler);
111   
112   /**
113    * Diesen Dienst aufloesen
114    */
115     public void aufloesen();
116 }