Bonsoir,
J’ai un objet BCSISpecBusnDomain (hérité) et un autre objet BCSIWKFSpecBusnDomain (héritier) tous deux implémentés en Java.
Il semble que lors de l’instanciation du modèle,
- L’objet BCSIWKFSpecBusnDomain (héritier de BCSISpecBusnDomain) est instancié en tant que BCSIWKFSpecBusnDomain et exécute son propre code (cf. traces WARN postLoad de 18:43:53,458; jusque là, pas de pb)
- L’objet BCSISpecBusnDomain est instancié en tant que lui-même et exécute son propre code (cf. traces INFO postLoad de 18:43:52,941; toujours pas de problème)
MAIS
- L’objet BCSIWKFSpecBusnDomain (héritier de BCSISpecBusnDomain) est instancié en tant que BCSISpecBusnDomain mais exécute le code BCSIWKFSpecBusnDomain (cf. traces INFO/WARN postLoad de 18:43:51,331)
Ce comportement est observé sur tous nos objets hérités/héritiers / tous les hooks et provoque des erreurs liées au fait que le code héritier opère des champs spécifiques à l’héritier (et donc inconnus de l’hérité) et que l’exécution du code héritier sur une instance configurée telle que getName=hérité mais getClass=héritier plante car c’est le modèle hérité qui est chargé…
Je n’arrive pas à comprendre d’où cela peut venir. Nous sommes en full Java, plus aucun code Rhino.
Nous reproduisons ce comportement également avec des héritages d’objets socle (objet User par exemple, dont le code avait été implémenté avant l’avènement du nouvel objet SimpleUser).
Je sèche complètement
public class BCSISpecBusnDomain extends ObjectDB {
private static final long serialVersionUID = 1L;
@Override
public void postLoad() {
log("postLoad", "BCSISpecBusnDomain.postLoad getName() before = " + getName(), this,0);
...
public class BCSIWKFSpecBusnDomain extends com.simplicite.objects.BCSIModule_BusnObject.BCSISpecBusnDomain {
private static final long serialVersionUID = 1L;
@Override
public void postLoad() {
if (!getName().startsWith("BCSIWKF")) {
warn("postLoad", "DEBT/UNEXPECTED CALL to WKF overriden hook from non WKF inherited object ("+getName()+","+getClass().getName()+")", this);
super.postLoad();
return;
} else {
warn("postLoad", "DEBT/EXPECTED CALL to WKF overriden hook from WKF inherited object ("+getName()+","+getClass().getName()+")", this);
}
...
2021-11-10 18:43:53,458|SIMPLICITE|WARN||http://renault.simplicite.io:10028||WARN|a068181|com.simplicite.objects.BCSIModule_BusnObject.BCSIWKFSpecBusnDomain|postLoad||Evénement: DEBT/EXPECTED CALL to WKF overriden hook from WKF inherited object (BCSIWKFSpecBusnDomain,com.simplicite.objects.BCSIModule_BusnObject.BCSIWKFSpecBusnDomain)
...
2021-11-10 18:43:52,941|SIMPLICITE|INFO||http://renault.simplicite.io:10028||INFO|a068181|com.simplicite.objects.BCSIModule_BusnObject.BCSISpecBusnDomain|postLoad||Evénement: BCSISpecBusnDomain.postLoad getName() getName=BCSISpecBusnDomain getClass=com.simplicite.objects.BCSIModule_BusnObject.BCSISpecBusnDomain
...
2021-11-10 18:43:51,331|SIMPLICITE|INFO||http://renault.simplicite.io:10028||INFO|system|com.simplicite.objects.BCSIModule_BusnObject.BCSIWKFSpecBusnDomain|postLoad||Event: BCSISpecBusnDomain.postLoad getName() getName=BCSISpecBusnDomain getClass=com.simplicite.objects.BCSIModule_BusnObject.BCSIWKFSpecBusnDomain
...
2021-11-10 18:43:51,331|SIMPLICITE|WARN||http://renault.simplicite.io:10028||WARN|system|com.simplicite.objects.BCSIModule_BusnObject.BCSIWKFSpecBusnDomain|postLoad||Event: DEBT/UNEXPECTED CALL to WKF overriden hook from non WKF inherited object (BCSISpecBusnDomain,com.simplicite.objects.BCSIModule_BusnObject.BCSIWKFSpecBusnDomain)