代码之家  ›  专栏  ›  技术社区  ›  Jared

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

  •  2
  • Jared  · 技术社区  · 15 年前

    我正在尝试使用groovy-ws来调用WebService。生成的类的一个属性是它本身是一个具有枚举类型的类。尽管调试消息显示,当读取WSDL时,com.test.finalActionType是在运行时创建的,但我无法使用类似代码创建它的实例。

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

    当我尝试为类uin分配一个字符串时,finalActionType的实例的位置groovy无法进行转换。如何获取此类的实例以在WebService调用中使用?我已经将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 回复  |  直到 14 年前
        1
  •  1
  •   Tomislav Nakic-Alfirevic    14 年前

    我认为还不容易做到,不使用可用的wsclient api。

    有人建议将“createenum”方法添加到wsclient类(请参见测试用例 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
    ...