Использование groovy ws с типами enum? - PullRequest
2 голосов
/ 12 марта 2010

Я пытаюсь использовать groovy ws для вызова веб-службы. Одним из свойств сгенерированного класса является сам класс с типом enum. Хотя сообщения отладки показывают, что com.test.FinalActionType создается во время выполнения при чтении WSDL, я не могу создать его экземпляр, используя код, подобный

proxy.create("com.test.FinalActionType")

Когда я пытаюсь присвоить строку моему классу вместо экземпляра FinalActionType, groovy не может выполнить преобразование. Как я могу получить экземпляр этого класса для использования в вызове веб-службы? Я вставил важную часть WSDL ниже.

        <xsd:simpleType name="FinalActionType">
            <xsd:restriction base="xsd:string">
                <xsd:enumeration value="stop"/>
                <xsd:enumeration value="quit"/>
                <xsd:enumeration value="continue"/>
                <xsd:whiteSpace value="collapse"/>
            </xsd:restriction>
        </xsd:simpleType>

1 Ответ

1 голос
/ 07 октября 2010

Я не думаю, что это легко сделать, не используя доступный WSClient API.

Было предложено добавить метод "createEnum" в класс WSClient (см. Контрольный пример patch и выпуск GMOD-82 ). Судя по комментариям Гийома Аллеона под вопросом GMOD-4 , должен быть способ создания экземпляра enum после выпуска WSClient 0.5.1.

UPDATE:

Начиная с GroovyWS 0.5.2 (по крайней мере, я не пробовал 0.5.1), перечисления могут использоваться с GroovyWS следующим образом:

...
wsProxy = new WSClient(wsdlUrl, this.class.classLoader)
wsProxy.initialize()
def anObject = wsProxy.create("some.package.AServiceInterface")
def anEnum = wsProxy.create("some.package.AnEnum")
anObject.anEnumProperty = anEnum.AN_ENUM_VALUE
...
...