Version sans base de données, utilisation de @Priority

La rentrée, l’occasion de relancer ma série d’articles sur Sakilapp. Aujourd’hui, un point sur une idée: l’utilisation du mécanisme de priorité dans les services pour proposer une version sans base de données de sakilapp.

C’est un cas un petit peu particulier: je voulais pouvoir utiliser (pour des tests, pour des démonstrations) mon application sans sa base de données. Il ne s’agit pas d’une version hors ligne, car il n’y a pas de sauvegarde des modifications, ni de synchronisation par la suite.

Comment cela marche ?

C’est assez simple: j’ai implémenté une deuxième version de mon OutlineService pour le catalogue (DBMockOutlineService classe qui implémente ICatalogOutlineService). Le service est déclaré dans mon fichier plugin.xml

<plugin>
  <extension point="org.eclipse.scout.service.services">
    <!-- ... -->
    <service class="net.sakilapp.server.services.outline.DBMockCatalogOutlineService" session="net.sakilapp.server.ServerSession" factory="org.eclipse.scout.rt.server.services.ServerServiceFactory"/>
  </extension>
<!-- ... -->
</plugin>

Pour donner la priorité à mon service (version DBMock) il suffit d’ajouter l’annotation @Priority avec une valeur supérieure aux autres implémentations du service.

@Priority(100)
public class DBMockCatalogOutlineService extends AbstractService implements ICatalogOutlineService {
  //...
}

Il s’agit enfin d’ajouter quelques valeurs fixes dans les fonctions qui alimentent les tables pages de l’outline catalogue.

public Object[][] loadActors(SearchFilter filter) throws ProcessingException {
 
  Object[][] result = new Object[][]{
      new Object[]{18, "DAN", "TORN", DateUtility.parse("2006-02-01", "yyy-MM-dd")},
      new Object[]{26, "RIP", "CRAWFORD", DateUtility.parse("2006-02-25", "yyy-MM-dd")}
 
  };
  return result;
}

Il me reste encore un petit peu de travail: ajouter ces services dans un plug-in séparé. De cette manière, je pourrais me créer un lanceur avec ces services. Cela me permettra de fonctionner sans la base de données.

PS: J’ai passé une partie de l’été à rédiger un article de référence sur Eclipse Scout en Français… Plus de nouvelles très bientôt.

Laisser un commentaire