Bug #384
ferméMauvais cast generique dans la déclaration de NodeHome.findByFatherPrimaryKey(NodePK fatherPK)
100%
Description
Dans l'interface d'EJB Entity com.stratelia.webactiv.util.node.ejb.NodeHome, la méthode findByFatherPrimaryKey(NodePK fatherPK) retourne une collection. L'ajout de "generics" depuis la version 3 de Silverpeas est ici erronée : il est fait mention de collection de clés de type NodePK, alors qu'il s'agit de collections d'entités de type Node.
En effet, la spécification EJB est très claire : pour toute méthode "finder" sur la home d'un EJB Entity, le conteneur retourne une collection de handles (en fait des proxies) d'instances Entity, donc ici des instances de Node.
Il se trouve que cette erreur de déclaration n'a pas eu d'impacts jusqu'à présent car :
1) Partout où la méthode est utilisée, en héritage du code de la V4, il y a des cast (Node) explicites
2) En Java et contrairement à C++, les "generics" ne sont que déclaratifs et automatisent les cast, sans modifier les types (donc le typage de Collection<NodePK> est le même que Collection<Node> et ne contiennent que des Object).
En revanche, dès que du code nouveau exploite cette écriture Java5, il ne compile plus. C'est le cas notamment du code du module de synchronisation inter-Silverpeas.