[IDL]Deux signatures pour une méthode

Deux signatures pour une méthode [IDL] - Divers - Programmation

Marsh Posté le 05-01-2005 à 15:05:04    

J'utilise  la commande 'idl2java' de Jacorb sous un linux ES 3.0 a partir d'un idl. Je modifie l'existant du serveur.
On a la partie suivante de l'idl:
 

Code :
  1. typedef sequence <flux> FluxXML;
  2. typedef string Reseau;
  3. struct RequeteDeserte {
  4.        Reseau   nomDuReseau;
  5.       };
  6. FluxXML arretsMission(in RequeteDeserte requete)
  7.       raises(SSOTRException,
  8.               ServiceAuthorisationException);


Le client nous demande de modifier RequeteDeserte en RequeteDesserte (faute d'orthographe...). Or pour des raisons de compatibiltés avec les anciens clients, il faut toutde même conserver RequeteDeserte.
 
J'ai donc ajouté  

Code :
  1. struct RequeteDesserte {
  2.        Reseau   nomDuReseau;
  3.       };
  4. FluxXML arretsMission(in RequeteDesserte requete)
  5.       raises(SSOTRException,
  6.               ServiceAuthorisationException);


 
quand je genere le .java, j'ai l'erreur
-sstockageotr.idl: 565:duplicate definition of arretsMission (previously defined on line 561)
1 error
 
Il me semble que la plupart des langages autorisent des signatures différentes pour un même nom de méthodes, non?
Y'a t'il un moyen de passer outre sans toucher non plus a l'orthographe de la méthode arretsMssion()?
 
Merci.

Reply

Marsh Posté le 05-01-2005 à 15:05:04   

Reply

Marsh Posté le 05-01-2005 à 15:30:33    

Théoriquement CORBA autorise plusieurs méthodes avec le même nom mais avec des signatures différentes.
En pratique idl2java ne veux pas  :(  
Ta seule solution est de nommer différement ta deuxième méthode.

Reply

Marsh Posté le 05-01-2005 à 15:35:46    

Pourquoi pas mettre un bête  

Code :
  1. typedef RequeteDeserte RequeteDesserte

 
 

Reply

Marsh Posté le 06-01-2005 à 09:42:07    

Ba il fautdrait tout de même créer deux méthodes arretsMission(RequeteDesserte) et arretsMission(RequeteDeserte).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed