Search the FirstSpirit Knowledge Base
Hallo Community,
ich habe eine Executable-Klasse und möchte das Ergebnis in einem Script auswerten.
Beispiel:
public class ExampleExecutable implements Executable {
@Override
public Object execute(Map<String, Object> context) throws ExecutionException {
return execute(context, new PrintWriter(System.out), new PrintWriter(System.err));
}
@Override
public Object execute(Map<String, Object> param, Writer out, Writer err)
throws ExecutionException {
return Arrays.asList("Hallo", "Welt", "!");
}
}
Aufgerufen wird das Script folgendermaßen:
#! executable-class
de.example.script.executable.ExampleExecutable
Wie kann ich nun mit dem Ergebnis im Script weiterarbeiten?
Vielen Dank und Grüße
Philipp Bender
Hi,
ich verstehe die Frage leider nicht
Wenn das Skript so definiert ist, dass eine Executable genutzt wird, dann ist dies das einzige, was hier passiert. Weiteres Scripting ist hier nicht möglich.
Wieso muss es überhaupt eine Executable sein? Klingt mir eher danach, als würde hier eine Utility-Klasse in einem Modul definiert, die in Beanshell-Skripten genutzt werden soll.
Gruß
Stefan
Philipp Bender schrieb:
Aufgerufen wird das Script folgendermaßen:
#! executable-class
de.example.script.executable.ExampleExecutable
Wie kann ich nun mit dem Ergebnis im Script weiterarbeiten?
Gar nicht, denn das "Script" wurde auf eine ausführbare Klasse als "Scriptsprache" gesetzt, sprich, es wird die angegebene Klasse ausgeführt.
Warum soll die Auswertung nicht innerhalb des Executable stattfinden?
Gruß
Stefan
Hallo Stefan,
danke für die Antwort.
Das ganze dient als Refactoring von altem Beanshell-Scripten. Architekturbedingt muss ich auf das Ergebnis zugreifen, um nicht die kompletten Beanshell-Scripte auf einen Schlag auszulagern. Dies würde sehr viel Aufwand verursachen.
Kann ich über context.setProperty den entsprechenden Rückgabewert bereitstellen und darauf zugreifen?
Viele Grüße
Philipp Bender
Hi,
ich verstehe die Frage leider nicht
Wenn das Skript so definiert ist, dass eine Executable genutzt wird, dann ist dies das einzige, was hier passiert. Weiteres Scripting ist hier nicht möglich.
Wieso muss es überhaupt eine Executable sein? Klingt mir eher danach, als würde hier eine Utility-Klasse in einem Modul definiert, die in Beanshell-Skripten genutzt werden soll.
Gruß
Stefan
Hallo Stefan,
eine Utility Klasse trifft wohl eher zu. Habe ich die Möglichkeit in einer Utility Klasse auf den Context zuzugreifen?
Viele Grüße
Philipp
Die Implementierung liegt ja bei dir, und somit auch die Parameterisierung von Methoden
Gruß
Stefan
Oha :smileygrin:, da stand ich aber auf einem dicken Schlauch.
Danke für den Hinweis.