Articles

@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(); } ... ...

Injection de configuration avec CDI

Il suffit de créer une factory pour CDI et une annotation (tiré du blog http://codebias.blogspot.fr/2013/04/environment-configuration-property.html) . Création de l'annotation import java.lang.annotation.Retention; import java.lang.annotation.Target; import javax.enterprise.util.Nonbinding; import javax.inject.Qualifier; @Qualifier @Retention(RUNTIME) @Target({METHOD, FIELD, PARAMETER, TYPE}) public @interface Configuration { @Nonbinding String value() default ""; } Création de la factory import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.InjectionPoint; @ApplicationScoped public class ConfigurationFactory { private static final String ENVIRONMENT_NAME_KEY = "environment.name"; private static fi...

Edition video simple sur Linux avec pitivi et contournement du problème de blocage sur l'estimation.

Choix de l'outil J'ai cherché sur Ubuntu un logiciel simple permettant de faire de l'édition. Je me suis d'abord penché sur  avidemux mais il plantait dès que je voulait faire un traitement. Je suis tombé ensuite sur pitivi et ce logiciel a parfaitement fonctionné. Voici l'url du site : http://www.pitivi.org/ Avec celui ci j'ai pu assembler facilement des morceaux de vidéo en coupant les morceaux qui m’intéressaient pas et exporter le tout afin de créer une vidéo dans l'encodage désiré. Contournement du problème de blocage sur l'estimation de rendu Une fois mes traitements fait je voulais exporter la vidéo.  J'ai donc cliqué sur rendering puis là une fenêtre s'ouvre. Cette fenêtre restait bloquée avec le message 'estimation' (de mémoire). Afin de contourner ce problème j'ai :  Installé les paquets pour les transformations et effets manquant Mis le pointeur dans la timeline de la vidéo au début de la time...

Installation de VirtualBox sur Fedora

Ayant galéré sur Fédora pour installer VirtualBox, voici la procédure simplifiée que j'ai suivi afin que celui-ci fonctionne. Tiré du site http://doc.fedora-fr.org/wiki/VirtualBox_:_installation,_configuration,_utilisation Prérequis Mettre a jour le système $ su - # yum update Outils de compilation et bibliothèques $ su - # yum groupinstall "Development Tools" # yum install kernel-devel Ou si noyau PAE $ su - # yum groupinstall "Development Tools" # yum install kernel-PAE-devel Savoir si on a un noyau PAE $ uname -r Installation # cd /etc/yum.repos.d/ # urlgrabber http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo # yum install VirtualBox Ne bien mettre que VirtualBox et non un nom du genre VirtualBox-{version} Attention: Si le noyeau système de Fédora est mis a jour VirtualBox ne fonctionnera plus. Si cela arrive il faut désinstaller VirtualBox avec sudo yum remove VirtualBox.{version achi} puis sudo yum install V...

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' ...

Assembler des fichiers .xtm simplement sous Linux

Aller dans le répertoire contenant les xtm a assembler cd {chemin du répertoire contenant les fichiers} Puis : cat * > {nomdufichiersouhaité} Simple et efficace :) Enjoy!