net.eduvax.util
public class ScriptRunner extends java.lang.Object implements java.lang.Runnable
Pour le moment, seul le langage python est pris en charge via l'interpréteur IronPython. Cependant ce dernier est basé sur le moteur Microsoft.Scripting qui est conçu pour accepter plusieurs langage (ruby est déjà disponible avec IronRuby).
La mise en oeuvre proposée ici est un peu particulière pour que les interpréteurs soient intégré au logiciel utilisateur et éviter toute installation fastidieuse d'un produit tiers. En outre, par ce choix on permet une installation identique du logiciel aussi bien sur .Net Windows, que sur Mono Linux (on évite l'enregistrement du composant via gacutil).
Par contre, on court circuite les services automatique de séléction du bon interpréteur en fonction de la nature script soumis. Il est donc nécessaire de gérer l'instanciation explicite de chaque moteur pour chaque langage de script. C'est pourquoi le final staticructeur est restreint et la création accessible par la méthode Factory getScriptRunner. Cela facilitera l'ajout de la prise en charge d'autres langages par héritage de la présente classe.
Des objets peuvent être transmis au script grâce à la méthode ExportVar. Cet export doit être fait avant le début de l'execution. Le singleton CApp.App est exporté sous le nom _app.
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
_args
Arguments à transmettre au script
|
private javax.script.Bindings |
_bindings
Envuronnement d'execution du script.
|
private javax.script.ScriptEngine |
_engine
Moteur de l'interpréteur.
|
private ErrorHandler |
_errHandler
Gestionnaire d'erreur
|
private java.lang.String |
_scriptPath
Chemin de script à executer.
|
Modifier | Constructor and Description |
---|---|
protected |
ScriptRunner(java.lang.String scriptPath,
java.lang.String engineName)
Création d'un nouveau gestionnaire d'execution de script.
|
Modifier and Type | Method and Description |
---|---|
void |
AddArg(java.lang.String arg)
Ajouter un argument à transmettre au script
|
void |
exportVar(java.lang.String name,
java.lang.Object obj)
Exporter un objet dans l'environnement du script .
|
static ScriptRunner |
getScriptRunner(java.lang.String scriptPath)
Demander la création d'un nouveau gestionnaire d'execution
de script.
|
void |
run()
Démarrer l'exécution du script
Mise en oeuvre IRunnable.
|
void |
setErrHandler(ErrorHandler handler)
Definir le gestionnaire d'erreur.
|
private javax.script.ScriptEngine _engine
private java.lang.String _args
private java.lang.String _scriptPath
private javax.script.Bindings _bindings
private ErrorHandler _errHandler
protected ScriptRunner(java.lang.String scriptPath, java.lang.String engineName)
scriptPath
- Chemin du script à executerpublic void AddArg(java.lang.String arg)
public void setErrHandler(ErrorHandler handler)
Toute erreur d'execution non gérée dans le script lui-même "remonte" dans ce gestionnaire sous forme d'exception. Lors de l'exécution, toutes les exceptions sont capturée pour être encapsulée dans un CError qui sera confié au gestionnaire d'erreur.
handler
- Gestionnaire d'erreur chargé de traiter
les erreurs d'execution du script.public void exportVar(java.lang.String name, java.lang.Object obj)
name
- Nom de la variable qui sera allouée pour
l'objet.obj
- Object à exporterpublic void run()
Mise en oeuvre IRunnable.
run
in interface java.lang.Runnable
public static ScriptRunner getScriptRunner(java.lang.String scriptPath)
script
- file path