Bonjour,
Depuis quelques jours, je suis face à un problème que je ne peux pas résoudre. En effet, dans mon appli (sous Java avec jacORB), je souhaite utiliser des IDL d'entrée pouvant contenir des unions, dont les valeurs ne sont pas toutes renseignées. Exemple :
enum myEnum {
State0,
State1,
State2
};
union UnionPartial switch(::myEnum) {
case ::State0 : string value0;
case ::State2 : string value2;
};
Je souhaite récupérer la valeur de l'union dans un Any dans le cas où elle est dans l'etat "State1", donc dans le cas où le DynUnion n'a pas de membre actif (j'utilise la fonction set_to_no_active_member()) . Je met donc les valeurs de mon DynUnion comme il faut. Pour récupérer les valeurs lorsqu'on est en "State0" ou "State2", aucun problème ne se présente. Mais dans le cas de State1, lorsque je manipule mon DynUnion, j'essaie de récupérer sa valeur via la fonction to_any(), qui bien sur me jette sur une NullPointerException.
En regardant dans les sources de to_any() du DynUnion, j'ai remarqué que jacORB ne semble pas gérer le cas où il n'y a pas de membre actif. En effet, il fait appel au champ "member" du DynUnion, mais dans le cas du no_active_member "member" est censé être nul. Donc je m'y perds un poil.
Donc j'imagine qu'il me manque une manipulation, et j'ai beau éplucher tout le net, je ne trouve pas de solution. Sauf peut être de redéfinir un to_any dans ce cas bien précis ?
Si quelqu'un a un idée ou une simple piste, je suis preneuse,
Merci beaucoup,
Partager