Articles

Affichage des articles associés au libellé developpement

Mettre en place le plugin OWASP dependency check dans les projets SONAR

Image
Problématique Comment mesurer les potentielles failles de sécurité induites par les dépendances présentes dans le projet Java que je développe ?  Solution  Utilisation du plugin maven dependency check et du plugin sonar associé  afin d'avoir un indicateur dans sonarqube : Cette solution a été sur les version de composants suivants :  Sonarqube 1.1 Maven 3.3.9 dependency-check-maven 3.2.1 sonar-maven-plugin 3.2 sonar-dependency-check-plugin 1.1.0 Mise en place dans Maven Dans le pom du projet ajouter les plugin suivants ainsi que les propriétés :  < properties > ... < sonar.dependencyCheck.reportPath > ${dependency.check.report.dir}/dependency-check-report.xml </ sonar.dependencyCheck.reportPath > < sonar.dependencyCheck.htmlReportPath > ${dependency.check.report.dir}/dependency-check-report.html </ sonar.dependencyCheck.htmlReportPath > </ properties > < bui...

Stubber des classes dans une chaine d'appel pour cloisonner les test d'intégration

Problème Dans le code applicatif une classe qui faisait un appel web service vers une autre application.  Je voulais tester ma méthode a travers un test d'intégration sans pour autant faire l'appel réel vers le web service afin de ne pas créer de couplage pendant l’exécution de mon test. J'ai voulu utiliser Mockito et PowerMock afin de stubber la classe mais cette classe était utilisée très loin dans la chaine d'appel (Le TI que je faisait était de haut niveau).  Mon test était donc dépendant du service distant. Solution Exclure les classes gênantes J'ai exclu dans ShrinkWrap les classes gênantes dans la construction de l'archive java pour Arquillian :  package fr.ftravaglia; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.Filters; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkw...

Postgresql 8 GRANT ALL PRIVILEGE sur tables et séquences

Problème Sur Postgresql 8 il n'existe pas de moyen d'accorder des droits sur toutes les tables et séquences facilement. Solution {user} > Utilisateur pour lequel on veut donner les droits Ci-dessous les commandes SQL permettant de générer les commandes nécessaires pour donner les droits. Exécuter les commandes générés pour donner les droits sur l'utilisateur. Pour les tables SELECT 'GRANT ALL PRIVILEGES ON ' || quote_ident(schemaname) || '.' || quote_ident(tablename) || ' TO {user};' FROM pg_tables WHERE schemaname = 'public'; Pour les séquences SELECT 'GRANT ALL PRIVILEGES ON ' || quote_ident(sequence_name) || ' TO {user};' FROM information_schema.sequences WHERE sequence_schema = 'public';

@Any ou comment utiliser CDI pour récupérer les implémentations d'une interface

Problème Itérer sur des implémentation d'interface afin d'appeler une méthode commune a toutes les implémentations car partagé par l'interface. (Implémentations différentes pour chaque classe) Imaginons l'interface AnimalIfc ayant une méthode getType() : public interface AnimalIfc { String getType(); } Et des implémentations : @ChienQualifier public class Chien extends AnimalIfc{ public Chien(){ super(); } @Qualifier @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @Target({ java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.FIELD }) public @interface ChienQualifier { } @Override public String getType() { return this.getClass().getSimpleName(); } } @ChatQualifier public class Chat extends AnimalIfc{ public Chat(){ super(); } @Qualifier @Retention(java.lang.annotation.RetentionPolicy....

Utilisation d'attribut injecté avec CDI dans le constructeur d'un objet injecté lui même avec CDI avec @PostConstruct

Problème Lors d'un test d'intégration je me suis retrouvé avec un nullpointer lors de l'exécution de celui-ci. Le nullpointer venait du fait que CDI n'avais pas achevé son injection dans l'attribut que j'utilisais et qui était donc null lors de son utilisation. Imaginons une classe 'Developpeur' et dans cette classe un attribut qui serait une classe 'LieuDeTravail'. La classe LieuDeTravail: public class LieuDeTravail { private String ville; public Travail(){ super(); } public String getVille(){ return ville; } public String setVille(String ville){ this.ville = ville; } } La classe Developpeur: public class Developpeur { @Inject private transient LieuDeTravail lieu; private String ville; public Developpeur(){ super(); ville = lieu.getVille(); } ... ...

Debug a distance sur une application déployée sur Glassfish

Image
Prérequis Le projet correspondant a l'application déployée doit être dans le workspace actif d'éclipse Glassfish doit être installé et lancé Avoir le droit d'écouter le port de débug sur le glassfish (Sera décris plus bas) Avoir des notions d'utilisation de glassfish (opérations standard de stop/start domain) Configurer Glassfish Se connecter à l'interface d'administration de glassfish Aller dans Configurations> server-config> JVM Settings (Sur cette page se trouve le port écouté dans 'Debug Options', il faut que ce port ne soit pas bloqué par un éventuel pare-feu) Cocher la case 'Enabled' Voici ce que vous devez avoir puis il faut redémarrer le domaine glassfish afin qu'il soit en mode débug: Stopper le domaine glassfish Lancer le domaine glassfish Configurer Eclipse Cliquez sur Run --> Debug Configurations ... Aller dans la partie 'Remote Java Application Faire clic droit puis 'New' ...