From e72f145db006c09ceab583f091e3f750189077bc Mon Sep 17 00:00:00 2001 From: ulrich@undisclosed <ulrich@ulrich-vaio> Date: Sat, 02 May 2020 16:04:04 +0000 Subject: [PATCH] Kleinere Anpassungen --- src/de/uhilger/transit/JavaServer.java | 68 ++++++++++++++++++++++----------- 1 files changed, 45 insertions(+), 23 deletions(-) diff --git a/src/de/uhilger/transit/JavaServer.java b/src/de/uhilger/transit/JavaServer.java index 5b993dd..9ef6931 100644 --- a/src/de/uhilger/transit/JavaServer.java +++ b/src/de/uhilger/transit/JavaServer.java @@ -56,8 +56,10 @@ * * @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 + * @throws java.lang.Exception */ @SuppressWarnings("rawtypes") + @Override public Class klasseFinden(String klassenName) throws Exception { Class c = null; c = Class.forName(klassenName); @@ -68,16 +70,18 @@ * 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. + * 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 * @param parameter die Parameter der Methode * @return der Rueckgabewert der Methode nach der Ausfuehrung + * @throws java.lang.Exception */ @SuppressWarnings("rawtypes") + @Override public Object methodeAusfuehren(String klassenName, String methodenName, String format, Object... parameter) throws Exception { Object resultat = null; Class c = klasseFinden(klassenName); @@ -91,22 +95,24 @@ * 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. + * 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 * @param parameter die Parameter der Methode * @return der Rueckgabewert der Methode nach der Ausfuehrung + * @throws java.lang.Exception */ @SuppressWarnings("rawtypes") + @Override public Object methodeAusfuehren(Object o, String methodenName, String format, Object... parameter) throws Exception { Object resultat = null; if(o != null) { Class c = o.getClass(); Method m = findeMethode(c.getDeclaredMethods(), methodenName); - resultat = methodeAusfuehren(o, m, format, parameter); + resultat = methodeAusfuehren(o, m, format, parameter); } return resultat; } @@ -119,28 +125,35 @@ * @param format das Format, das Parameter und Rueckgabewert haben * @param parameter die Parameter der Methode * @return der Rueckgabewert der Methode nach der Ausfuehrung + * @throws java.lang.Exception */ @SuppressWarnings("rawtypes") + @Override public Object methodeAusfuehren(Object o, Method methode, String format, Object... parameter) throws Exception { Object resultat = null; if(methode != null) { - resultat = methode.invoke(o, parameterKonvertieren(methode, parameter, format)); - Class returnType = methode.getReturnType(); - /* - * Wenn der Rueckgabewert der Methode nicht vom Typ String ist, - * wird das Objekt in das Format verwandelt, das der Standardwandler - * liefert, z.B. JSON - */ - if(!returnType.getName().equals("java.lang.String")) { - //resultat = new JsonWandler().vonJava(resultat, returnType); - Wandler w = wandler.get(format); - if(w != null) { - resultat = w.vonJava(resultat, returnType); + Access access = methode.getAnnotation(Access.class); + if(access == null || access.type().equals(Access.Type.ALLOW)) { + resultat = methode.invoke(o, parameterKonvertieren(methode, parameter, format)); + Class returnType = methode.getReturnType(); + /* + * Wenn der Rueckgabewert der Methode nicht vom Typ String ist, + * wird das Objekt in das Format verwandelt, das der Standardwandler + * liefert, z.B. JSON + */ + if(!returnType.getName().equals("java.lang.String")) { + //resultat = new JsonWandler().vonJava(resultat, returnType); + Wandler w = wandler.get(format); + if(w != null) { + resultat = w.vonJava(resultat, returnType); + } + /*if(format == Wandler.JSON) { + resultat = new JsonWandler().vonJava(resultat, returnType); + }*/ } - /*if(format == Wandler.JSON) { - resultat = new JsonWandler().vonJava(resultat, returnType); - }*/ - } + } else { + // nicht zum Zugriff vorgesehen + } } return resultat; } @@ -150,7 +163,9 @@ * * @param m * @param parameter + * @param format * @return + * @throws java.lang.Exception */ @SuppressWarnings("rawtypes") protected Object[] parameterKonvertieren(Method m, Object[] parameter, String format) throws Exception { @@ -170,8 +185,10 @@ * * @param c die Klasse, in deren Typ umgewandelt werden soll * @param parameter der Wert, der umgewandelt werden soll + * @param format * @return der Parameter umgewandelt in den gewuenschten Typ oder null, falls * die Umwandlung nicht gelang + * @throws java.lang.Exception */ @SuppressWarnings("rawtypes") protected Object toType(Class c, String parameter, String format) throws Exception { @@ -232,15 +249,17 @@ * 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. + * 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 + * @throws java.lang.Exception */ @SuppressWarnings("rawtypes") + @Override public Method methodeFinden(String klassenName, String methodenName) throws Exception { Method m = null; Class klasse = Class.forName(klassenName); @@ -255,6 +274,7 @@ * * @param wandler der Wandler, der entfernt werden soll */ + @Override public void wandlerEntfernen(Wandler wandler) { this.wandler.remove(wandler.getFormat()); } @@ -264,6 +284,7 @@ * * @param wandler der Wandler, der hinzugefuegt werden soll */ + @Override public void wandlerHinzufuegen(Wandler wandler) { this.wandler.put(wandler.getFormat(), wandler); } @@ -271,6 +292,7 @@ /** * Diese Instanz aufloesen, also alle Ressourcen frei geben */ + @Override public void aufloesen() { Set keySet = wandler.keySet(); Iterator i = keySet.iterator(); -- Gitblit v1.9.3