2010-03-12 100 views
2

我想使用groovy ws来调用web服务。生成的类的其中一个属性是它自己是一个枚举类型的类。尽管调试消息表明com.test.FinalActionType在运行时创建的时候WSDL读我不能像使用groovy ws与枚举类型?

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

我不认为它可以很容易地完成,而不是使用可用的WSClient API。

有人建议为WSClient类添加“createEnum”方法(请参阅测试用例patch和问题GMOD-82)。根据Guillaume Alleon在问题GMOD-4中的评论,应该有一种方法来在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 
...