Uploaded image for project: 'Runtime'
  1. Runtime
  2. RUNTIME-172

Fournir une console Groovy dans la partie admin

    • Icon: New Feature New Feature
    • Resolution: Won't Fix
    • Icon: Major Major
    • 4.0M5
    • 1.1.0
    • Workspace admin
    • None

      En production, il est souvent regrettable de ne pouvoir :

      • accéder à un état donné d'un composant ;
      • connaître le contenu d'une table en base de données ;
      • exécuter une commande système.

      Le besoin étant très variable et dépendant des composants de chaque projet, l'utilisation d'un langage de script de haut niveau me paraît judicieuse.

      Une console permettrait de :

      1. saisir des instructions ;
      2. exécuter ces instructions ;
      3. afficher le résultat de cette exécution.

      Le langage Groovy me paraît tout à fait approprié à cet usage car :

      • le code est interprété (pas besoin de compilation) ;
      • il est basé sur Java (pas besoin d'apprendre un langage totalement différent) ;
      • il tourne dans une JVM (intégration simple) ;
      • il est concis mais puissant (pas besoin de 4 lignes pour créer, remplir et itérer sur une Map) ;
      • il permet d'exposer des fonctions (helper).

      Cette console doit fournir les helpers suivants :

      • récupérer facilement un composant Avalon ;
      • connaître les résultats d'une requête SQL ;
      • connaître les résultats d'une requête JCR ;
      • exécuter une commande système.

      La console doit également venir avec une documentation ou des exemples de code souvent utilisé pour faciliter l'écriture du code.

      Exemple d'un code Groovy issue de l'outil de migration JCR utilisé dans Goojet :

      selectNodes(session, "//blog:post") { node ->
        println node.getProperty("viewCount")
      }
      

      Autre exemple :

      import groovy.sql.Sql
      sql = Sql.newInstance("jdbc:mysql://serverName/db", "user", "password", "com.mysql.jdbc.Driver")
      sql.eachRow("select * from tableName") {
        println it.id + " => ${it.firstName}"
      }
      

      Références :

          [RUNTIME-172] Fournir une console Groovy dans la partie admin

          Ouep c'est du bon ça .

          Sébastien Launay (Inactive) added a comment - Ouep c'est du bon ça .

          Jérôme Wrédé (Inactive) added a comment - - edited

          worspace_console.tar.bz2 contient un portage de la console groovy pour le google app engine ci-dessus vers un workspace ametys. Les modifications effectuées sont :

          • utilisation d'un reader pour la génération mixant la GroovyServlet et l'AbstractHttpServlet
          • ajout d'un mécanisme de snippets basique + snippets pour jcr/sql
          • une tab de résultats xml pour avoir des liens clickables vers le jcrExplorer
          • des bindings pour le manager, repository, sql, ... (pour ajouter des bindings : ExecutorReader.registerBindings() et executor.groovy à modifiés)

          Voilà, c'est pas tout à fait propre, mais si ça peut vous intéresser ...

          Jérôme Wrédé (Inactive) added a comment - - edited worspace_console.tar.bz2 contient un portage de la console groovy pour le google app engine ci-dessus vers un workspace ametys. Les modifications effectuées sont : utilisation d'un reader pour la génération mixant la GroovyServlet et l'AbstractHttpServlet ajout d'un mécanisme de snippets basique + snippets pour jcr/sql une tab de résultats xml pour avoir des liens clickables vers le jcrExplorer des bindings pour le manager, repository, sql, ... (pour ajouter des bindings : ExecutorReader.registerBindings() et executor.groovy à modifiés) Voilà, c'est pas tout à fait propre, mais si ça peut vous intéresser ...

          Une implémentation existante :
          http://groovyconsole.appspot.com/

          Source : Jérôme Wrédé

          Sébastien Launay (Inactive) added a comment - Une implémentation existante : http://groovyconsole.appspot.com/ Source : Jérôme Wrédé

          Effectivement à voir avec les impacts suivants :

          • possibilité de configurer le ScriptEngine de façon aussi fine qu'avec le langage directement ;
          • documenter/afficher des morceaux de code pour le runtime/cms dans chacun des langages supportés.

          Sébastien Launay (Inactive) added a comment - Effectivement à voir avec les impacts suivants : possibilité de configurer le ScriptEngine de façon aussi fine qu'avec le langage directement ; documenter/afficher des morceaux de code pour le runtime/cms dans chacun des langages supportés.

          on pourrait meme se demander si on passe pas en Java 6 pour bénéficier du javax.scripting

          Cédric Damioli added a comment - on pourrait meme se demander si on passe pas en Java 6 pour bénéficier du javax.scripting

            Unassigned Unassigned
            yabon Sébastien Launay (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: