2010-12-09 27 views
1

Puis-je représenter cette énumération XSDSchema/restriction String dans un protobuf enum?Restriction de chaîne dans protobuf

<s:element maxOccurs="1" minOccurs="1" name="Condition"> 
    <s:simpleType> 
    <s:restriction base="s:string"> 
     <s:enumeration value="EQ" /> 
     <s:enumeration value="NE" /> 
     <s:enumeration value="GT" /> 
     <s:enumeration value="LT" /> 
     <s:enumeration value="GE" /> 
     <s:enumeration value="LE" /> 
     <s:enumeration value="LK" /> 
     <s:enumeration value="=" /> 
     <s:enumeration value="!=" /> 
     <s:enumeration value="&gt;" /> 
     <s:enumeration value="&lt;" /> 
     <s:enumeration value="=&gt;" /> 
    </s:restriction> 
    </s:simpleType> 
</s:element> 

Répondre

2

Les enos sont nommés entiers, mais notez que les derniers noms apparaîtront. Vous auriez besoin de modifier les noms dans votre couche .proto/DTO, mais ce serait une douleur d'avoir à lever l'ambiguïté entre "EQ" et "=", "LE" et "<"

Mais vous pouvez mapper quelque chose similaire dans .proto, bien sûr.

Si vous stockez une chaîne qui fonctionnerait, mais plus d'octets. Non plusieurs plus (1 octet pour la longueur de la chaîne plus 1-4 octets pour les données char, contre 1 octet pour les énumérations).

+0

ok, je le pensais. Cela fait partie d'un en-tête "standard" dans le protocole que je remplace, donc je pense qu'il est facile de faire abstraction et de créer un wrapper qui l'encode pour le client. – oluies