XML Update

La mise à jour d'un fichier JAVA source consiste à :

  • à ajouter une méthode (générée) dans le fichier Java source.
  • à ajouter un champs (généré) dans le fichier Java source.

    Il existe des example dans le répertoire Components/CodeUpdater/Java du catalogue usecases-catalog.

Ceci nécéssite de :

  • définir un modèle de type java dans le component. Cette définition permet d'indiquer au component le fichier JAVA source à modifier. La défintion de ce modèle forcera ensuite l'utilisateur qui ouvre ce component à selectionner le fichier JAVA à modifier :
      <models>
            <model key="javaClass" type="java" />
      </models>
  • définir à travers la défintion file le code de la method/field à insérer dans le fichier JAVA source qui a été définit dans le modèle de type java :
    • le template à utiliser pour la génération du code de la method/field.

    Voici un exemple qui permet d'ajouter un contenu field dans le fichier source JAVA :

      <output>
        <file key="javaClass" >
                    <insert path="field" >
                    <template uri="/ftl/CodeUpdater/Java/AddJavaField.ftl" />
            </insert>          
        </file>
        </file>
      </output>

    Pour indiquer le fichier JAVA source à modifier (qui a été définit dans le modèle), l'attribut key de l'élement file doit faire référence à l'attribut key de l'élement model.

  • écrire le template qui retourne le code du field :
    private String ${fieldName}; 

model

La définition d'un modèle de type java et de key javaClass qui permet d'indiquer le fichier JAVA à mettre à jour s'effectue comme ceci :

...
<models>
  <model type="java" key="javaClass"  />
  ...
</models>
...

file

L'élement file est contenu dans l'élement output. Il permet de décrire la mise à jour à effectuer sur le fichier JAVA source qui a été définit dans le modèle. La mise à jour du fichier JAVA définit dans le modèle de key javaClass s'effectue comme ceci :

...
<output>
    <file key="javaClass" >
        ...
    </file>
  </output>
...

insert

L'élement insert est contenu dans l'élement file. Il permet d'insérer le code method/field à l'aide de l'attribut path :

  • path="method" permet d'indiquer qu'une méthode JAVA doit être insérée.
  • path="field" permet d'indiquer qu'un champs JAVA doit être inséré.
...
  <file key="javaClass" >
    <insert path="method|field" >
      <template uri="..." />
    </insert>
  </file>
...

template

Le code method/field à insérer est généré. Cette génération de code s'effectue à partir d'un template (Freemarker, velocity, XSL,...).

Pour générer un le contenu de method/field à l'aide du template path_of_myTemplate, insert doit contenir :

...
<insert path="method|field" >
  <template uri="path_of_myTemplate" />
</insert>
...