2010-07-24 30 views
3

Dans le wsdl j'ai 2 types, même nom, différents cas: LoginResponse et LOGINRESPONSE.wsdl java class la sensibilité à la casse

Si j'utilise xfire pour générer les classes Java, il génère uniquement une classe, LoginResponse, en ignorant LOGINRESPONSE.

Comment puis-je contourner ce problème?

<s:element name="LoginResponse"> 
    <s:complexType> 
     <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="LoginResult" type="tns:LOGINRESPONSE" /> 
     </s:sequence> 
    </s:complexType> 
    </s:element> 

    <s:complexType name="LOGINRESPONSE"> 
    <s:attribute name="Message" type="s:string" /> 
    <s:attribute name="Token" type="s:string" /> 
    <s:attribute name="DataFormat" type="s:string" /> 
    <s:attribute name="Header" type="s:boolean" use="required" /> 
    <s:attribute name="Suffix" type="s:boolean" use="required" /> 
    </s:complexType> 
+0

Cela peut être un défaut avec "xfire". Mais vous pouvez l'éviter en ayant des noms complètement différents. – YoK

Répondre

1

noms déclarés dans WSDL sont en effet sensibles à la casse, et il est juridique d'utiliser des noms qui ne diffèrent que dans leur cas. Cependant, il doit être une mauvaise idée:

  • Sûrement, c'est une mauvaise idée du point de vue de la lisibilité. (Je veux dire, si vous écriviez un programme Java, vous ne déclarerait pas les variables acat et aCat dans le même espace. Vous?)

  • Bien que WSDL est sensible à la casse, les liaisons de langage de programmation devront mapper les noms WSDL à des identifiants de programme insensibles à la casse (par exemple, dans Visual Basic je crois), ou ils peuvent les écraser pour que les identifiants générés se conforment aux conventions de style du langage de programmation. Dans les deux cas, les noms WSDL qui ne diffèrent que dans la casse des lettres peuvent entraîner des problèmes.

OMI la meilleure solution à long terme pour votre problème est de changer le WSDL afin que vous ne disposez pas d'éléments, types, etc dont les noms ne diffèrent que par cas.

+1

Le wsdl est hors de mon contrôle. Cependant, je peux sauvegarder le fichier wsdl en tant que fichier local, le modifier manuellement, puis en générer des classes Java. Ce n'est pas idéal, mais c'est suffisant pour le moment. – portoalet