Bonjour,

je cherche en GWT comment convertir, à la compilation, un fichier type JSON en un bean java.
Ma problématique est le suivante:

j'ai un set d'icônes, défini par leur nom. A chaque icone est associé un "style CSS" sous forme brute, une ou plusieurs classes CSS, etc.

J'ai plusieurs sets utilisés par plusieurs sections de l'api. C'est en partie hardcodé, en partie géré par Constants & getString() de I18N (alors que ce n'est pas destiné à être traduit mais bon)

j'aimerais avoir quelque chose de propre. Genre pouvoir dire à GWT:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public interface IconSet {
  String[] iconFiles;
  String[] cellHighlightCss;
  String[] textCss;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public interface MonSet extends IconSet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
MonSet setIcones = GWT.create(MonSet.class);

MonSet.json:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
{
 iconFile: [
    'wait.gif','ready.png','blocked.png'
    ],
  cellHighlightCss: [
    'background-color:#4040ff',
    'background-color:#ffffff; color: #007000',
    'background-color:#ff0000;font-weight:bold'
    ],
//etc..
}
Les options suivantes ont été déjà écartées:
* créer des classes CSS: les apis utilisées demande des fragment CSS et les variables css ne sont supportées que par firefox
* utiliser Constants: on n'a pas besoin de "traduire" ce style et les fichiers properties, pour mapper des tableau de près de 50 entrées, c'est illisible
* désérialization json (at autobean): a moins que je rate quelque chose, cette désérialisation n'ayant pas lieu à la compilation, il faut télécahrger le json, donc un appel async, hors je veut que les données soient dispo en synchrone.

Des idées? A la rigueur une désérialisation json ou un jsonoverlay est envisageable si on me pointe un moyen de dire au compilo GWT de mettre le texte du JSON dans une variable à la compilation ou en tout cas de l'injecter dans la page.