2010-03-12 98 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 
...