vendredi 2 septembre 2011

Getters et Setters avec Java

Vous aussi vous en avez assez de tout ce code généré automatiquement par votre Eclipse ou Netbeans ? Lombok peut peut-être vous aidez.

Au passage, je n'utilise pas encore ce projet dans des cas professionnels mais plutôt sur certains projets personnels.

Je vais montrer ici son utilisation dans un projet Maven. Dans un premier temps, il faut ajouter la dépendance Lombok dans votre POM :

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.10.0</version>
</dependency>




Classe de test : Book.class
Ensuite créons une classe (Book) pour la démonstration : 






@Data
Lombok nous propose une annotation @Data qui permet d'avoir les getters, setters, equals, toString... :






un petit test pour voir le résultat :








Lombok propose bien d'autres annotations. Si vous ne voulez que des getters, il suffit de préfixer les variables concernées avec l'annotation @Getter.


Les annotations disponibles :

  • @Log,
  • @Getter,
  • @Setter,
  • @Log,
  • @ToString,
  • ...
La liste complète est disponible ici : http://projectlombok.org/features/index.html


J’espère que ce genre de mécanisme sera intégré dans les prochaines versions de Java.


PS : petite boulette au niveau du nom du package. Pas encore fini de prendre en main le Netbeans on dirait!

mardi 16 août 2011

Hibernate : WrappedMaterializedBlobType overrides final method

Après migration de Hibernate 3.5.3-Final vers 3.6.6.Final, je me suis retrouvé dans l'impossibilité de lancer notre projet avec pour erreur :

Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/......xml]: Invocation of init method failed; nested exception is java.lang.VerifyError: class org.hibernate.type.WrappedMaterializedBlobType overrides final method

Après quelques recherches, le coupable est Hibernate annotation 3.5.6-Final. Une des librairies de notre projet avait cette dépendance dans son fichier POM or annotation semble maintenant inclus dans les version 3.6.X
Solution dans mon cas : enlever Hibernate annotation des dépendances et tout semble rouler pour le moment.


English version :
After upgrading Hibernate 3.5.3-Final to 3.6.6.Final, i encoutered this error. I was unable to launch our project.

After few research in the code, my problem was related to my dependency with Hibernate annotation 3.5.6-Final. This dependecy was listed in one of our child module. It seems that annotation has been included into the main Hibernate jar (3.6.6.Final). So, in my case, the solution was to remove the dependency to Hibernate annotation 3.5.6-Final and now, our project seems to go back on track.

mercredi 26 janvier 2011

Installer LibreOffice sur Ubuntu 10.10

add-apt-repository ppa:libreoffice/ppa
apt-get update
apt-get install libreoffice libreoffice-gnome libreoffice-l10n-fr libreoffice-help-fr libreoffice-hyphenation-fr

NO_PUBKEY


Ce qui suit peut endommager gravement votre système! N’ajouter pas de dépôts douteux!
Lors de l’ajout d’un PPA, il est possible que l’import de la clé de signature des paquets échoue. Vous vous trouvez alors nez à nez avec un message du type :
W: Erreur de GPG : http://ppa.launchpad.net maverick Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 61E091672E206FF0

Pour résoudre ce problème, il faut entrer la commande suivante dans un terminal :

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 61E091672E206FF0

Clé GPG, PPA et firewall


Derrière un pare-feu ? Impossible de télécharger les clés associées aux PPA ?
Le coupable est le port 11371. Pour contourner ce problème, opter pour le port 80.
Par exemple, la commande pour récupérer la clé liée au PPA de Wine est :
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F9CB8DB0
Faite plutôt :
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F9CB8DB0