使用具有枚举类型的groovy ws?

时间:2010-03-12 17:43:54

标签: wcf groovy web-services

我正在尝试使用groovy ws来调用web服务。生成的类的一个属性是它是一个具有枚举类型的类。虽然调试消息显示在读取WSDL时在运行时创建了com.test.FinalActionType但我无法使用像

之类的代码创建它的实例
proxy.create("com.test.FinalActionType")

当我尝试将一个字符串分配给我的类时,在一个FinalActionType实例的地方,groovy无法进行转换。如何在Web服务调用中获取此类的实例?我在下面粘贴了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 个答案:

答案 0 :(得分:1)

我不认为它可以轻松完成,不使用可用的WSClient API。

有人建议在WSClient类中添加“createEnum”方法(请参阅测试用例patch并发出GMOD-82)。根据Guillaume Alleon在问题GMOD-4下的评论来判断,应该有一种方法可以在WSClient 0.5.1发布时创建一个枚举实例。

<强>更新

从GroovyWS 0.5.2开始(至少我没有尝试过0.5.1),enums可以和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
...