I've been playing with the BigBank sample and have added a fault to the
AccountService's withdraw operation. After changing the
AccountService.wsdl (attached), the Tuscany WSDL2Java no longer works.
(Exception from the build is below.)
When I took a quick look at the code, it seemed that the Tuscany code
does some configuration of the axis2 code generation and then delegates
the majority of the work to it.
Does anyone have any ideas of what's going on here? The axis code is
looking in a map of QName to Name but the only map that's been populated
is a map of QName to SDODataBindingTypeMappingEntry objects. The
WSDL2Java from axis2 seems to work okay with the same WSDL.
On a somewhat related note, what is the intended relationship between
the Tuscany WSDL2Java and Java2WSDL tools to the tools provided by axis2?
Thanks!
[INFO] Generating Java service interfaces from
/home/sykesm/oss-code/tuscany/sca-java-M2/samples/applications/bigbank/account/src/main/resources/wsdl/AccountService.wsdl
[INFO]
------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO]
------------------------------------------------------------------------
[INFO] org.apache.axis2.wsdl.codegen.CodeGenerationException:
org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was
mapped to the name insufficientFundsFault with namespace
http://www.bigbank.com/account
[INFO]
------------------------------------------------------------------------
[INFO] Trace
java.lang.IllegalArgumentException:
org.apache.axis2.wsdl.codegen.CodeGenerationException:
org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was
mapped to the name insufficientFundsFault with namespace
http://www.bigbank.com/account
at
org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator.generateFromWSDL(WSDL2JavaGenerator.java:244)
at
org.apache.tuscany.tools.wsdl2java.plugin.WSDL2JavaGeneratorMojo.execute(WSDL2JavaGeneratorMojo.java:134)
at
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:412)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:534)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:475)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:454)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:306)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:256)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at
org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at
org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.axis2.wsdl.codegen.CodeGenerationException:
org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was
mapped to the name insufficientFundsFault with namespace
http://www.bigbank.com/account
at
org.apache.tuscany.tools.wsdl2java.generate.JavaInterfaceGenerator.generate(JavaInterfaceGenerator.java:178)
at
org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator.generateFromWSDL(WSDL2JavaGenerator.java:242)
... 19 more
Caused by: org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No
type was mapped to the name insufficientFundsFault with namespace
http://www.bigbank.com/account
at
org.apache.axis2.wsdl.databinding.TypeMappingAdapter.getTypeMappingName(TypeMappingAdapter.java:73)
at
org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultParamElements(AxisServiceBasedMultiLanguageEmitter.java:1958)
at
org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultElement(AxisServiceBasedMultiLanguageEmitter.java:1867)
at
org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.generateMethodElement(AxisServiceBasedMultiLanguageEmitter.java:1618)
at
org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.loadOperations(AxisServiceBasedMultiLanguageEmitter.java:1533)
at
org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.createDOMDocumentForInterface(AxisServiceBasedMultiLanguageEmitter.java:740)
at
org.apache.tuscany.tools.wsdl2java.generate.JavaInterfaceEmitter.writeInterface(JavaInterfaceEmitter.java:196)
at
org.apache.tuscany.tools.wsdl2java.generate.JavaInterfaceGenerator.generate(JavaInterfaceGenerator.java:174)
... 20 more
--
Matthew Sykes
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
-->
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:account="http://www.bigbank.com/account"
targetNamespace="http://www.bigbank.com/account"
name="AccountService">
<wsdl:types>
<xsd:schema targetNamespace="http://www.bigbank.com/account"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:account="http://www.bigbank.com/account"
> <!-- xmlns:sdojava="commonj.sdo/java" sdojava:package="org.apache.tuscany.samples.bigbank.account" -->
<!-- <xsd:complexType name="DataGraphRoot">
<xsd:sequence>
<xsd:element name="customerProfileData" type="account:CustomerProfileData" maxOccurs="unbounded" minOccurs="0" />
<xsd:element name="StockSummaries" type="account:StockSummary" maxOccurs="unbounded" minOccurs="0" />
<xsd:element name="AccountSummaries" type="account:AccountSummary" maxOccurs="unbounded" minOccurs="0" />
<xsd:element name="StockLogEntries" type="account:StockLogEntry" maxOccurs="unbounded" minOccurs="0" />
<xsd:element name="AccountLogEntries" type="account:AccountLogEntry" maxOccurs="unbounded" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>-->
<xsd:element name="getAccountReport">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="customerID"
type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getAccountReportResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="accountReport"
type="account:AccountReport" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="AccountReport">
<xsd:sequence>
<xsd:element name="accountSummaries"
type="account:AccountSummary" maxOccurs="unbounded" />
<xsd:element name="stockSummaries"
type="account:StockSummary" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AccountSummary">
<xsd:attribute name="accountNumber" type="xsd:string" />
<xsd:attribute name="accountType" type="xsd:string" />
<xsd:attribute name="balance" type="xsd:float" />
</xsd:complexType>
<xsd:complexType name="StockSummary">
<!-- xsd:attribute name="id" type="xsd:int" / -->
<xsd:attribute name="purchaseLotNumber" type="xsd:int" />
<!-- unique id for this purchase -->
<xsd:attribute name="symbol" type="xsd:string" />
<xsd:attribute name="quantity" type="xsd:int" />
<xsd:attribute name="purchaseDate" type="xsd:dateTime" />
<xsd:attribute name="purchasePrice" type="xsd:float" />
<xsd:attribute name="currentPrice" type="xsd:float" />
<xsd:attribute name="company" type="xsd:string" />
<xsd:attribute name="highPrice" type="xsd:float" />
<xsd:attribute name="lowPrice" type="xsd:float" />
</xsd:complexType>
<!-- Profile in data base -->
<xsd:element name="getCustomerProfile">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="loginID" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="CustomerProfileData">
<xsd:sequence>
<xsd:element name="firstName" type="xsd:string" />
<xsd:element name="lastName" type="xsd:string" />
<xsd:element name="address" type="xsd:string" />
<xsd:element name="email" type="xsd:string" />
<xsd:element name="loginID" type="xsd:string" />
<xsd:element name="password" type="xsd:string" />
<xsd:element name="id" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="getCustomerProfileResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="customerProfile"
type="account:CustomerProfileData" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="withdraw">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="accountNumber"
type="xsd:string" />
<xsd:element name="amount" type="xsd:float" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="withdrawResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="balance" type="xsd:float" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- @start added fault -->
<xsd:element name="insufficientFundsFault">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="message" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- @end added fault -->
<xsd:element name="deposit">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="accountNumber"
type="xsd:string" />
<xsd:element name="amount" type="xsd:float" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="depositResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="balance" type="xsd:float" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="purchaseStock">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:int" />
<xsd:element name="stock" type="account:StockSummary" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="purchaseStockResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="purchaseSummary"
type="account:StockSummary" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sellStock">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="purchaseLotNumber"
type="xsd:int" /><!-- unique id for this purchase -->
<xsd:element name="quantity" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="createAccount">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="customerProfile"
type="account:CustomerProfileData" />
<xsd:element name="createSavings"
type="xsd:boolean" />
<xsd:element name="createCheckings"
type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="createAccountResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="customerProfile"
type="account:CustomerProfileData" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getAccountLog">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="customerID"
type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getAccountLogResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="accountLog"
type="account:AccountLog" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="AccountLog">
<xsd:sequence>
<xsd:element name="accountLogEntries"
type="account:AccountLogEntry" maxOccurs="unbounded" />
<xsd:element name="stockLogEntries"
type="account:StockLogEntry" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AccountLogEntry">
<xsd:attribute name="logSeqNo" type="xsd:int" />
<xsd:attribute name="id" type="xsd:int" />
<xsd:attribute name="accountNumber" type="xsd:string" />
<xsd:attribute name="actionType" type="xsd:string" />
<xsd:attribute name="amount" type="xsd:float" />
</xsd:complexType>
<xsd:complexType name="StockLogEntry">
<xsd:attribute name="logSeqNo" type="xsd:int" />
<xsd:attribute name="id" type="xsd:int" />
<xsd:attribute name="symbol" type="xsd:string" />
<xsd:attribute name="quantity" type="xsd:int" />
<xsd:attribute name="actionType" type="xsd:string" />
<xsd:attribute name="purchaseLotNumber" type="xsd:int" />
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getAccountReportRequest">
<wsdl:part element="account:getAccountReport"
name="getAccountReportRequest" />
</wsdl:message>
<wsdl:message name="getAccountReportResponse">
<wsdl:part element="account:getAccountReportResponse"
name="getAccountReportResponse" />
</wsdl:message>
<wsdl:message name="getCustomerProfileRequest">
<wsdl:part element="account:getCustomerProfile"
name="getCustomerProfile" />
</wsdl:message>
<wsdl:message name="getCustomerProfileResponse">
<wsdl:part element="account:getCustomerProfileResponse"
name="getCustomerProfileResponse" />
</wsdl:message>
<wsdl:message name="withdrawRequest">
<wsdl:part element="account:withdraw" name="withdrawRequest" />
</wsdl:message>
<wsdl:message name="withdrawResponse">
<wsdl:part element="account:withdrawResponse"
name="withdrawResponse" />
</wsdl:message>
<!-- @start added fault -->
<wsdl:message name="insufficientFundsFault">
<wsdl:part element="account:insufficientFundsFault" name="insufficientFundsFault" />
</wsdl:message>
<!-- @end added fault -->
<wsdl:message name="depositRequest">
<wsdl:part element="account:deposit" name="depositRequest" />
</wsdl:message>
<wsdl:message name="depositResponse">
<wsdl:part element="account:depositResponse"
name="depositResponse" />
</wsdl:message>
<wsdl:message name="purchaseStockRequest">
<wsdl:part element="account:purchaseStock"
name="purchaseStockRequest" />
</wsdl:message>
<wsdl:message name="purchaseStockResponse">
<wsdl:part element="account:purchaseStockResponse"
name="purchaseStockResponse" />
</wsdl:message>
<wsdl:message name="sellStockRequest">
<wsdl:part element="account:sellStock" name="sellStockRequest" />
</wsdl:message>
<wsdl:message name="createAccountRequest">
<wsdl:part element="account:createAccount" name="createAccountRequest" />
</wsdl:message>
<wsdl:message name="createAccountResponse">
<wsdl:part element="account:createAccountResponse" name="createAccountResponse" />
</wsdl:message>
<wsdl:message name="getAccountLogRequest">
<wsdl:part element="account:getAccountLog"
name="getAccountLogRequest" />
</wsdl:message>
<wsdl:message name="getAccountLogResponse">
<wsdl:part element="account:getAccountLogResponse"
name="getAccountLogResponse" />
</wsdl:message>
<wsdl:portType name="AccountService">
<wsdl:operation name="getAccountReport">
<wsdl:input message="account:getAccountReportRequest" />
<wsdl:output message="account:getAccountReportResponse" />
</wsdl:operation>
<wsdl:operation name="getCustomerProfile">
<wsdl:input message="account:getCustomerProfileRequest" />
<wsdl:output message="account:getCustomerProfileResponse" />
</wsdl:operation>
<wsdl:operation name="withdraw">
<wsdl:input message="account:withdrawRequest" />
<wsdl:output message="account:withdrawResponse" />
<!-- @start added fault -->
<wsdl:fault message="account:insufficientFundsFault" />
<!-- @end added fault -->
</wsdl:operation>
<wsdl:operation name="deposit">
<wsdl:input message="account:depositRequest" />
<wsdl:output message="account:depositResponse" />
</wsdl:operation>
<wsdl:operation name="purchaseStock">
<wsdl:input message="account:purchaseStockRequest" />
<wsdl:output message="account:purchaseStockResponse" />
</wsdl:operation>
<wsdl:operation name="sellStock">
<wsdl:input message="account:sellStockRequest" />
<wsdl:output message="account:purchaseStockResponse" />
</wsdl:operation>
<wsdl:operation name="createAccount">
<wsdl:input message="account:createAccountRequest" />
<wsdl:output message="account:createAccountResponse" />
</wsdl:operation>
<wsdl:operation name="getAccountLog">
<wsdl:input message="account:getAccountLogRequest" />
<wsdl:output message="account:getAccountLogResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AccountServiceSOAP" type="account:AccountService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="getAccountReport">
<soap:operation
soapAction="http://www.bigbank.com/account/getAccountReport" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getCustomerProfile">
<soap:operation
soapAction="http://www.bigbank.com/account/getCustomerProfile" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="withdraw">
<soap:operation
soapAction="http://www.bigbank.com/account/withdraw" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
<!-- @start added fault -->
<wsdl:fault>
<soap:fault name="insufficientFundsFault" use="literal"/>
</wsdl:fault>
<!-- @end added fault -->
</wsdl:operation>
<wsdl:operation name="deposit">
<soap:operation
soapAction="http://www.bigbank.com/account/deposit" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="purchaseStock">
<soap:operation
soapAction="http://www.bigbank.com/account/purchaseStock" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sellStock">
<soap:operation
soapAction="http://www.bigbank.com/account/sellStock" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="createAccount">
<soap:operation
soapAction="http://www.bigbank.com/account/createAccount" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getAccountLog">
<soap:operation
soapAction="http://www.bigbank.com/account/getAccountLog" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AccountService">
<wsdl:port binding="account:AccountServiceSOAP"
name="AccountServiceSOAP">
<soap:address
location="http://localhost:8080/sample-bigbank-account/services/AccountService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]