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