SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
Scub-Foundation
Nouveautées de la version 4.0




        http://scub.net         adrien.hautot@scub.net
Plan de la présentation
 ● Framework GWT     ● GrayLog
 ● Hibernate         ● Autres évolutions
 ● Oval              ● Migration
 ● Spring
 ● Jenkins
 ● Selenium
 ● Usine de
   developpement
 ● Jetty
 ● Maven 3
 ● Tests unitaires
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
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
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
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.
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
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();
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>
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;

     ...
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>
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>
Google Web Toolkit
 RegexBox



 final RegexBox regex = new RegexBox("[_A-Za-z0-9-.@]{0,100}");
Google Web Toolkit
 ConteneurErreur
 <icc:IntegrityControlErrorContainer monitoredAttribute="{attributes.civilite}">
        <slb:SuggestListBoxSingle p1:id="civilite" ui:field="slbCivilite" />
 </icc:IntegrityControlErrorContainer>
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.
Google Web Toolkit
Nouvelle gestion des popups
                                     SingleLoadingPop
                  LoadingPresenter
                                        upViewImpl



                                     SingleErrorPopup
                   ErrorPresenter
                                         ViewImpl
  AppController
                                     MultiConfirmPopu
                  ConfirmPresenter
                                        pViewImpl



                                     SingleAlertTypeP
                   AlertPresenter
                                      opupViewImpl
Présentation du projet
      exemple
Hibernate
● Montée en version
● Nouvelle classe de base
  ○ Gestion automatiques de dates de
    création et de modification des
    enregistrements
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
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…
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
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.
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
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
Oval
AsyncCallback spécifique
  ● Gestion      automatique des  controles
    d'intégrités
  ● Mise à jour automatique des conteneurs
    d'erreurs dans la vue.
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;

     ...
Controle d'intégrités
Valider les DTO



    public ContactDto ajouterOuModifierContact(ContactDto contactDto) {
       final ReportDto report = integrityValidator.validate(contactDto);
}
Controle d'intégrités
    Presenter: sauvegarde
private void saveContact() {
    fireEventGlobalBus(new LoadingEvent(true));
    contactService.createOrUpdateContact(getContact(), new IntegrityControlAsyncCallback<ContactModel>(view){
          @Override
          public void onFail(Throwable caught) {
            fireEventGlobalBus(new LoadingEvent(false));
            fireEventGlobalBus(new ErrorEvent(caught));
          }

          @Override
          public void onSuccess(ContactModel result) {
            fireEventGlobalBus(new SaveContactSuccessEvent(result, currentContact.getId() == null));
            fireEventGlobalBus(new LoadingEvent(false));
          }
    });
}
Spring
●   Montée en version
●   Spring security
●   Spring web service
●   Spring Batch
Spring
Montée en version
  ● version 3.1.2
  ● Adaptation des fichiers de configuration
  ● Compatibilité avec hibernate
Spring
Spring security
  ● Montée en version
  ● Adaptation des fichiers de configuration
  ● Préconisation de JasyPt pour le cryptage
Spring
Spring Web Service
  ● Exposer et consommer les web services
  ● Création de deux archetypes pour les projets
    web services clients et noyaux
Spring
Spring Web Service
Spring
Spring Web Service
Spring
Spring Web Service Server
Spring
Spring Web Service Server
Spring
Spring Web Service Server
Spring
Spring Web Service Server
Spring
Spring Web Service Server
Spring
Spring Web Service Client
Spring
Spring Web Service Client
Spring
Spring Web Service Client
Spring
Spring Batch
  ● Gestion :
    ○ du Scheduling
    ○ du multi threading
    ○ du chainage
  ● Supervision via JMX
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
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
Jenkins
Jenkins
Selenium
● Mise en place en environnement de
  développement
● Goals maven
● Automatisation lors de l'intégration continue
● Evolution des composants du socle
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
Usine de développement
Nouveaux plugins
  ● Dozer
  ● GWT Designer
  ● Hibernate Synchronizer
Jetty
● Jetty remplace Jonas comme serveur
  d'applications par défaut dans Scub
  foundation.
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
Tests unitaires
● Gestion de plusieurs datasets au sein d'un
  même test unitaire
● Auto-completion dans les datasets
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
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.
GrayLog
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
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
Fin de la présentation


Merci de votre
  attention

Mais conteúdo relacionado

Mais procurados

What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudsonxmacina
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsRossi Oddet
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads France
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 
Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Gabriele Santini
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Celinio Fernandes
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & TechniquesRachid NID SAID
 

Mais procurados (20)

What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
SWTBot
SWTBotSWTBot
SWTBot
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
Catalogue PFE 2019
Catalogue PFE 2019Catalogue PFE 2019
Catalogue PFE 2019
 
Présentation1
Présentation1Présentation1
Présentation1
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - Epitez
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 

Destaque

Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Improve Foundations (FR)
Improve Foundations (FR)Improve Foundations (FR)
Improve Foundations (FR)dduquenne
 
BroadVision Clearvale - Réseau Social d'Entreprise
BroadVision Clearvale - Réseau Social d'EntrepriseBroadVision Clearvale - Réseau Social d'Entreprise
BroadVision Clearvale - Réseau Social d'Entrepriseedrouynot
 
Inspection générales des affaires sociales RAPPORT sur LES COÛTS DE GESTION ...
 Inspection générales des affaires sociales RAPPORT sur LES COÛTS DE GESTION ... Inspection générales des affaires sociales RAPPORT sur LES COÛTS DE GESTION ...
Inspection générales des affaires sociales RAPPORT sur LES COÛTS DE GESTION ...Jean-Michel Boudon
 
Au Coeur des Saveurs - N°5 - Journal du Marché de Gros Lyon-Corbas
Au Coeur des Saveurs - N°5 - Journal du Marché de Gros Lyon-CorbasAu Coeur des Saveurs - N°5 - Journal du Marché de Gros Lyon-Corbas
Au Coeur des Saveurs - N°5 - Journal du Marché de Gros Lyon-CorbasMarché de Gros Lyon Corbas
 
Resacloud ITAC
Resacloud ITACResacloud ITAC
Resacloud ITACITAC
 
Fourvière en photos
Fourvière en photosFourvière en photos
Fourvière en photosCamadgrange
 
C micro c_1_
C micro c_1_C micro c_1_
C micro c_1_laidens
 
Presentation sante positive
Presentation sante positivePresentation sante positive
Presentation sante positivekounani
 
Le couteau sarde2
Le couteau sarde2Le couteau sarde2
Le couteau sarde2nivolasy
 

Destaque (20)

Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Improve Foundations (FR)
Improve Foundations (FR)Improve Foundations (FR)
Improve Foundations (FR)
 
Zidane
Zidane Zidane
Zidane
 
ediificaciones sustentables Panamá
ediificaciones sustentables Panamáediificaciones sustentables Panamá
ediificaciones sustentables Panamá
 
BroadVision Clearvale - Réseau Social d'Entreprise
BroadVision Clearvale - Réseau Social d'EntrepriseBroadVision Clearvale - Réseau Social d'Entreprise
BroadVision Clearvale - Réseau Social d'Entreprise
 
Inspection générales des affaires sociales RAPPORT sur LES COÛTS DE GESTION ...
 Inspection générales des affaires sociales RAPPORT sur LES COÛTS DE GESTION ... Inspection générales des affaires sociales RAPPORT sur LES COÛTS DE GESTION ...
Inspection générales des affaires sociales RAPPORT sur LES COÛTS DE GESTION ...
 
Au Coeur des Saveurs - N°5 - Journal du Marché de Gros Lyon-Corbas
Au Coeur des Saveurs - N°5 - Journal du Marché de Gros Lyon-CorbasAu Coeur des Saveurs - N°5 - Journal du Marché de Gros Lyon-Corbas
Au Coeur des Saveurs - N°5 - Journal du Marché de Gros Lyon-Corbas
 
Conceptos Clave (Apoyo Para Certificacion)
Conceptos Clave (Apoyo Para Certificacion)Conceptos Clave (Apoyo Para Certificacion)
Conceptos Clave (Apoyo Para Certificacion)
 
Peinture sur route
Peinture sur routePeinture sur route
Peinture sur route
 
Vr de luxe
Vr de luxeVr de luxe
Vr de luxe
 
Por Que Invertir En Panamá
Por Que Invertir En PanamáPor Que Invertir En Panamá
Por Que Invertir En Panamá
 
Resacloud ITAC
Resacloud ITACResacloud ITAC
Resacloud ITAC
 
Fourvière en photos
Fourvière en photosFourvière en photos
Fourvière en photos
 
Mapas Mentaleso2009
Mapas Mentaleso2009Mapas Mentaleso2009
Mapas Mentaleso2009
 
C micro c_1_
C micro c_1_C micro c_1_
C micro c_1_
 
softwares Sociales
softwares Socialessoftwares Sociales
softwares Sociales
 
Presentation sante positive
Presentation sante positivePresentation sante positive
Presentation sante positive
 
Le couteau sarde2
Le couteau sarde2Le couteau sarde2
Le couteau sarde2
 
Refrigerantes que afectan
Refrigerantes que afectanRefrigerantes que afectan
Refrigerantes que afectan
 
COPD NICE guidelines 2004
COPD NICE guidelines 2004COPD NICE guidelines 2004
COPD NICE guidelines 2004
 

Semelhante a Evolutions scub foundation 3.0 = 4.0

Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Gwt fast overview_v1
Gwt fast overview_v1Gwt fast overview_v1
Gwt fast overview_v1David Herviou
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterGuillaume Deshayes
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptxIdrissaDembl
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursHoracio Gonzalez
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineInterface ULg, LIEGE science park
 
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016Tarik Zakaria Benmerar
 
PAUG - Intégration Continue - Décembre 2013
PAUG - Intégration Continue - Décembre 2013PAUG - Intégration Continue - Décembre 2013
PAUG - Intégration Continue - Décembre 2013Aurélien Guillard
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIRomain Cambien
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineGeeks Anonymes
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
react-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basicreact-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basiczineblahib2
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en pythongburet
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hoodsvuillet
 

Semelhante a Evolutions scub foundation 3.0 = 4.0 (20)

Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Gwt fast overview_v1
Gwt fast overview_v1Gwt fast overview_v1
Gwt fast overview_v1
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
react-fr.pdf
react-fr.pdfreact-fr.pdf
react-fr.pdf
 
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
 
PAUG - Intégration Continue - Décembre 2013
PAUG - Intégration Continue - Décembre 2013PAUG - Intégration Continue - Décembre 2013
PAUG - Intégration Continue - Décembre 2013
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
react-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basicreact-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basic
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en python
 
Angular 11
Angular 11Angular 11
Angular 11
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Cours 2 les composants
Cours 2 les composantsCours 2 les composants
Cours 2 les composants
 

Evolutions scub foundation 3.0 = 4.0

  • 1. Scub-Foundation Nouveautées de la version 4.0 http://scub.net adrien.hautot@scub.net
  • 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); }
  • 28. Controle d'intégrités Presenter: sauvegarde private void saveContact() { fireEventGlobalBus(new LoadingEvent(true)); contactService.createOrUpdateContact(getContact(), new IntegrityControlAsyncCallback<ContactModel>(view){ @Override public void onFail(Throwable caught) { fireEventGlobalBus(new LoadingEvent(false)); fireEventGlobalBus(new ErrorEvent(caught)); } @Override public void onSuccess(ContactModel result) { fireEventGlobalBus(new SaveContactSuccessEvent(result, currentContact.getId() == null)); fireEventGlobalBus(new LoadingEvent(false)); } }); }
  • 29. Spring ● Montée en version ● Spring security ● Spring web service ● Spring Batch
  • 30. Spring Montée en version ● version 3.1.2 ● Adaptation des fichiers de configuration ● Compatibilité avec hibernate
  • 31. Spring Spring security ● Montée en version ● Adaptation des fichiers de configuration ● Préconisation de JasyPt pour le cryptage
  • 32. Spring Spring Web Service ● Exposer et consommer les web services ● Création de deux archetypes pour les projets web services clients et noyaux
  • 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
  • 50. Usine de développement Nouveaux plugins ● Dozer ● GWT Designer ● Hibernate Synchronizer
  • 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