XML Component

Un composant Akrogen XML Component est un fichier XML stocké dans le répertoire Components d'un catalogue.

Il décrit le Wizard page Eclipse en XML/XUL du composant (Service, DAO, JSP, HTML...) que vous souhaitez générer. Cette description doit suivre une certaine grammaire XML.

Un composant Akrogen permet de générer ou mettre à jour un fichier. Il est associé à un template (Freemarker, Velocity, XSLT)

Voici le XML component du Wizard page helloWord :

Le bouton Finish du Wizard page permet de lancer la génération de code en fusionnant le template ftl/HelloWord/helloWord.ftl du répertoire Templates avec la valeur de la textbox d'id user. Le template utilisé attend un paramètre user.

Voici le template Freemarker utilisé :

  Hello ${user}!

La description XML d'un composant consite à définir les 3 grandes sections :

  • Input : cette section décrit les paramètres d'entrées, attendus par le template. Ces paramètres sont décrits en XUL (textbox, checkbox,...) qui sont ensuite interprétés par Akrogen pour les afficher dans une Wizard page Eclipse. Akrogen utilise Wazaabi pour interpréter la description XUL en SWT (Wizard page Eclispe).
  • Output : cette section le template component/output/file à utiliser lorsque l'utilisateur clique sur le bouton Finish du Wizard Page affiché. Akrogen fusionne les paramètres du Wizard page avec le template pour générer ou mettre à jour un fichier.
  • Model définir le modèle du composant component/model (non obligatoire) dans le cas :
    • où le Wizard page Eclispe doit se générer dynamiquement en fonction de fichiers (Classe java, XML, properties).
    • où le template utilisé attend un contexte XML, Java.

Grammaire XML

Un XML component suit la grammaire suivante :

<?xml version="1.0" encoding="UTF-8"?>
<component>
  
  <!-- Component model -->
  <models>
    <model ...
    ....
  </models>
  
  <!-- Input page -->
  <input>
    <page title="..." >
        <description>...</description>
        
        .... XUL content
        
    </page>
  </input>
  
  <!-- Output page -->
  <output>
    ...
  </output>
  
</component>

Voici l'exemple HelloWord :

<?xml version="1.0" encoding="UTF-8"?>
<component>
  <input>
    <page title="Akrogen Hello Word" >
        <description>HelloWord Akrogen component to generate file with content "Hello $user!".</description>
        <box flex="1" id="" orient="vertical"
             xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
          <hbox>
            <label value="User: ($user)" />
            <textbox id="user" flex="1" />
          </hbox>
          <hbox>
            <label value="Output base dir:" />
            <textbox id="outputBaseDir" flex="1" />
            <button type="folder" target="outputBaseDir" label="Browse..." />
          </hbox>
          <hbox>
            <label value="Output file name:" />
            <textbox id="outputFileName" flex="1" />
          </hbox>       
          <hbox>
            <button type="preview" label="Preview..." />
          </hbox>                       
        </box>                  
    </page>
  </input>
  <output>
    <file>
      <template uri="/ftl/HelloWord/helloWord.ftl" />
    </file>
  </output>
</component>