2. Plan de la présentation
● Framework GWT ● GrayLog
● Hibernate ● Autres évolutions
● Oval ● Migration
● Spring
● Jenkins
● Selenium
● Usine de
developpement
● Jetty
● Maven 3
● Tests unitaires
3. Google Web Toolkit
● Montée en version
● Refonte de l'architecture et conventions de
codage
● Intégration de GWT-Bootstrap
● Généralisation de l'UI-Binding
● Mise à jour des composants
● Création de nouveaux composants
● Nouvel archetype
● Nouvelle gestion des popups
4. Google Web Toolkit
Montée en version: 2.5
● Optimisation de la compilation
● Apparition du Super Dev Mode
● API HTML5
● Amélioration des performances en dev
mode
● Multiples corrections et amélioration du
framework.
● Compilation multi thread
● Support de java.util.logging
5. Google Web Toolkit
Refonte de l'architecture et préconisations
● Un seul fichier de langue par application
● Mise en place d'une factory
● Apparition du package shared
6. Google Web Toolkit
Bootstrap et UI-Binding
● Intégration de boostrap
● Généralisation de l'UI-binding
● Aide à la création d'interface avec GWT
Designer.
7. Google Web Toolkit
Mise à jour des composants
● Internationalisation
● SuggestListBox: possibilités de gérer les
CRUD
● Certains composants sont devenus
obsolètes
● Corrections de bugs
● Adaptation aux styles de Bootstrap
● Réécriture du RemotePaggingTable
8. Google Web Toolkit
EmailBox
<p1:ControlGroup>
<p1:ControlLabel>
<g:Label text="{i18n.email}" />
</p1:ControlLabel>
<p1:Controls>
<box:EmailBox ui:field="email"/>
</p1:Controls>
</p1:ControlGroup>
final EmailBox tbEmail = new EmailBox();
9. Google Web Toolkit
PhoneBox
final PhoneBox Phone = new PhoneBox();
<p1:ControlGroup>
<p1:ControlLabel>
<g:Label text="{i18n.phone}" />
</p1:ControlLabel>
<p1:Controls>
<box:PhoneBox ui:field="phone"/>
</p1:Controls>
</p1:ControlGroup>
10. Google Web Toolkit
PhoneBox: HasValue
public class PhoneAsValueModel implements Serializable {
private String numero;
private String libellePays;
private String format;
private String validationFormat;
private String indicatif;
private String tag;
...
11. Google Web Toolkit
TimeBox
final TimeBox Phone = new TimeBox();
<p1:ControlGroup>
<p1:ControlLabel>
<g:Label text="{i18n.heure}" />
</p1:ControlLabel>
<p1:Controls>
<box:TimeBox ui:field="heure"/>
</p1:Controls>
</p1:ControlGroup>
12. Google Web Toolkit
DateTimeBox
final DateTimeBox Phone = new DateTimeBox();
<p1:ControlGroup>
<p1:ControlLabel>
<g:Label text="{i18n.dateTime}" />
</p1:ControlLabel>
<p1:Controls>
<box:DateTimeBox ui:field="dateTime"/>
</p1:Controls>
</p1:ControlGroup>
13. Google Web Toolkit
RegexBox
final RegexBox regex = new RegexBox("[_A-Za-z0-9-.@]{0,100}");
14. Google Web Toolkit
ConteneurErreur
<icc:IntegrityControlErrorContainer monitoredAttribute="{attributes.civilite}">
<slb:SuggestListBoxSingle p1:id="civilite" ui:field="slbCivilite" />
</icc:IntegrityControlErrorContainer>
15. Google Web Toolkit
Nouvelle gestion des popups
● Les popups d'erreurs, de chargements,
d'alertes et d'informations sont maintenant
gérées de manière unique dans l'application.
16. Google Web Toolkit
Nouvelle gestion des popups
SingleLoadingPop
LoadingPresenter
upViewImpl
SingleErrorPopup
ErrorPresenter
ViewImpl
AppController
MultiConfirmPopu
ConfirmPresenter
pViewImpl
SingleAlertTypeP
AlertPresenter
opupViewImpl
18. Hibernate
● Montée en version
● Nouvelle classe de base
○ Gestion automatiques de dates de
création et de modification des
enregistrements
19. Oval
● Intégration du framework
● Création de validateurs
● Mise en place des contrôles d'intégrités
● Gestion des tests unitaires
● Créations d'un composant pour afficher les
erreurs (partie GWT)
● AsyncCallback spécifique
20. Oval
Présentation
Oval est un framework Java ayant pour but de
valider n’importe quel type d’objet:
● Validation des objets à la demande en
faisant appel à des validateurs.
● Utilisation d'annotations: @NotNull,
@MaxLength…
21. Oval
Création de validateurs
● BusinessValidator: lève une
BusinessException à la première erreur
detectée
● IntegrityValidator: rassemble toutes les
erreurs dans un rapport et lève une
ControleIntegrityException
22. Oval
Mise en place des contrôles d'intégrités
● Création des rapports: contient la listes des
erreurs associées à un champ
● ControleIntegrityException: transporte le
rapport jusqu'au client pour l'en informer
des erreurs.
23. Oval
Gestion des tests unitaires
● Création de méthodes facilitant les tests
unitaires avec les controles d'intégrités:
○ assertErrorCountEquals au niveau rapport et au
niveau attribut
○ assertHasMessage
24. Oval
Créations d'un composant d'erreurs
● 3 types d'affichages: Tooltip, Inline, Icon
● 2 positions: gauche et droite
● Gestion de l'UI-Binding
● Gestion des styles d'erreurs des composants
● Ecoute les changements d'état des
composants pour se mettre à jour
● Gère plusieurs attributs
25. Oval
AsyncCallback spécifique
● Gestion automatique des controles
d'intégrités
● Mise à jour automatique des conteneurs
d'erreurs dans la vue.
26. Controle d'intégrités
Annotation dans les DTO
public class ContactDto extends AbstractDto {
private Long id;
@NotNull
@NotBlank
private String nom;
@NotNull
@NotBlank
private String prenom;
private Date dateNaissance;
@NotNull.List(value = {@NotNull, @NotNull(target = "id") })
private IdLabelDto civilite;
...
27. Controle d'intégrités
Valider les DTO
public ContactDto ajouterOuModifierContact(ContactDto contactDto) {
final ReportDto report = integrityValidator.validate(contactDto);
}
43. Spring
Spring Batch
● Gestion :
○ du Scheduling
○ du multi threading
○ du chainage
● Supervision via JMX
44. Jenkins
● Présentation de l'intégration continue
● Information reporting
● Gestion du versioning
● Génération de modules reactor
● Lignes d'intégration continue sur les phases
de développement
45. Jenkins
Présentation de l'intégration continue
Ensemble de pratiques consistant à vérifier à chaque modification
de code source qu'il n'y a pas de regression dans l'application.
Les principaux avantages d'une telle technique de
développement sont :
● le test immédiat des unités modifiées
● la prévention rapide en cas de code incompatible
ou manquant
● les problèmes d'intégration sont détectés et
réparés de façon continue, évitant les problèmes
de dernière minute
● une version est toujours disponible pour un test,
une démonstration ou une distribution
48. Selenium
● Mise en place en environnement de
développement
● Goals maven
● Automatisation lors de l'intégration continue
● Evolution des composants du socle
49. Usine de développement
● Nouvelle version d'éclipse: Juno
● JDK 1.7
● Montées en versions des plugins
● Nouveaux plugins
● Nouvel installeur
● Support Mac OS X
● Montée en version de postgresql (9.2)
● Stabilisation
● Intégration de Jetty
51. Jetty
● Jetty remplace Jonas comme serveur
d'applications par défaut dans Scub
foundation.
52. Maven 3
● Migration de maven 2 vers maven 3
● Nouveaux goals
○ Create database from dataset
○ Launch Selenium Tests
○ Deploy to Jetty
○ Clean Jetty
○ Extract XSD and generate POJO
53. Tests unitaires
● Gestion de plusieurs datasets au sein d'un
même test unitaire
● Auto-completion dans les datasets
54. Communauté
● Nouveau site internet http://www.scub-
foundation.org
● Blog
● Réécriture de la documentation et des
tutoriaux
● Google group
○ Bug tracker public
○ Forum
○ Téléchargements d'exemples
55. GrayLog
● Application permettant de faire des
recherches sur les logs.
● Création d'index et requetage avec
ElasticSearch
● Interface Web pour accéder aux logs.
● Tous les logs sont centralisés sur une seule
interface même si les applications tournent
sur plusieurs serveurs.
57. Autres évolutions
● Le code source est développé en français et
peut être internationnalisé.
● Nouvelle préconisation pour la structure
SVN
● Renommage des archetypes core et core-
model
58. 3.X 4.0
Migration
Niveau 1 Niveau 2 Niveau 3
● Utiliser les projets ● Modifier les ● Remplacer le code
existant par les
existants avec la configurations nouvelles technologies
nouvelle usine, pour utiliser la du socle et les
quelques version 4.0 nouveaux composants
configurations ● Supprimer les
necessaires composants du
● Développer les socle créés dans
nouveaux projet les projets
sur la version 4.0
59. Fin de la présentation
Merci de votre
attention