/*
|
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();
|
}
|