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 :

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

              Created:
              Updated:
              Resolved: