[
https://issues.apache.org/jira/browse/AXIS2-6049?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan May updated AXIS2-6049:
------------------------------
Description:
*Description:*
The Java files which are generated by the AntCodegenTask for Exceptions differ
each generation in the serialVersionUID.
This is especially bothering if the gradle cache should be used, wich requires
a fixed input. Also, the objects may not be deserialized again if the
SerialVersionUID changes each time.
*Steps to reproduce:*
Create a WSDL with a wsdl:fault element, e.g:
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.example.org/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ExampleModule"
targetNamespace="http://www.example.org/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/">
<xsd:element name="getSolutionById">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="in" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getSolutionByIdResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getSolutionByIdFault">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="getSolutionByIdFault"
type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getSolutionByIdRequest">
<wsdl:part element="tns:getSolutionById" name="parameters"/>
</wsdl:message>
<wsdl:message name="getSolutionByIdResponse">
<wsdl:part element="tns:getSolutionByIdResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="getSolutionByIdFault">
<wsdl:part name="parameters"
element="tns:getSolutionByIdFault"></wsdl:part>
</wsdl:message>
<wsdl:portType name="ExampleModule">
<wsdl:operation name="getSolutionById">
<wsdl:input message="tns:getSolutionByIdRequest"/>
<wsdl:output message="tns:getSolutionByIdResponse"/>
<wsdl:fault name="fault"
message="tns:getSolutionByIdFault"></wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ExampleModuleSOAP" type="tns:ExampleModule">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getSolutionById">
<soap:operation
soapAction="http://www.example.org/ExampleModule/getSolutionById"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="fault">
<soap:fault use="literal" name="fault" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ExampleModule">
<wsdl:port binding="tns:ExampleModuleSOAP" name="ExampleModuleSOAP">
<soap:address location="http://www.example.org/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>{code}
Generate it again, the serialVersionUID changes
*More info*
I've checked and found the corresponding issue in the file
[https://github.com/apache/axis-axis2-java-core/blob/master/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java|https://github.com/wso2/wso2-axis2/blob/28a2220ba3a5547315347ecb97b512059070d15d/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java]
in line 1055, where the {{System.currentTimeMillis()}} is used for the
serialVersionUID.
A hash based on the className and the parameters would probably be better.
was:
*Description:*
The Java files which are generated by the AntCodegenTask for Exceptions differ
each generation in the serialVersionUID.
This is especially bothering if the gradle cache should be used, wich requires
a fixed input. Also, the objects may not be deserialized again if the
SerialVersionUID changes each time.
*Steps to reproduce:*
Create a WSDL with a wsdl:fault element, e.g:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.example.org/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ExampleModule"
targetNamespace="http://www.example.org/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/">
<xsd:element name="getSolutionById">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="in" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getSolutionByIdResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getSolutionByIdFault">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="getSolutionByIdFault"
type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getSolutionByIdRequest">
<wsdl:part element="tns:getSolutionById" name="parameters"/>
</wsdl:message>
<wsdl:message name="getSolutionByIdResponse">
<wsdl:part element="tns:getSolutionByIdResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="getSolutionByIdFault">
<wsdl:part name="parameters"
element="tns:getSolutionByIdFault"></wsdl:part>
</wsdl:message>
<wsdl:portType name="ExampleModule">
<wsdl:operation name="getSolutionById">
<wsdl:input message="tns:getSolutionByIdRequest"/>
<wsdl:output message="tns:getSolutionByIdResponse"/>
<wsdl:fault name="fault"
message="tns:getSolutionByIdFault"></wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ExampleModuleSOAP" type="tns:ExampleModule">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getSolutionById">
<soap:operation
soapAction="http://www.example.org/ExampleModule/getSolutionById"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="fault">
<soap:fault use="literal" name="fault" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ExampleModule">
<wsdl:port binding="tns:ExampleModuleSOAP" name="ExampleModuleSOAP">
<soap:address location="http://www.example.org/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>Generate it again, the serialVersionUID changes
*More info*
I've checked and found the corresponding issue in the file
[https://github.com/apache/axis-axis2-java-core/blob/master/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java|https://github.com/wso2/wso2-axis2/blob/28a2220ba3a5547315347ecb97b512059070d15d/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java]
in line 1055, where the {{System.currentTimeMillis()}} is used for the
serialVersionUID.
A hash based on the className and the parameters would probably be better.
> Generated Exceptions differ each generation
> -------------------------------------------
>
> Key: AXIS2-6049
> URL: https://issues.apache.org/jira/browse/AXIS2-6049
> Project: Axis2
> Issue Type: Improvement
> Components: codegen
> Affects Versions: 1.8.0
> Reporter: Stefan May
> Priority: Minor
>
> *Description:*
> The Java files which are generated by the AntCodegenTask for Exceptions
> differ each generation in the serialVersionUID.
> This is especially bothering if the gradle cache should be used, wich
> requires a fixed input. Also, the objects may not be deserialized again if
> the SerialVersionUID changes each time.
> *Steps to reproduce:*
> Create a WSDL with a wsdl:fault element, e.g:
> {code:java}
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://www.example.org/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ExampleModule"
> targetNamespace="http://www.example.org/">
> <wsdl:types>
> <xsd:schema targetNamespace="http://www.example.org/">
> <xsd:element name="getSolutionById">
> <xsd:complexType>
> <xsd:sequence>
> <xsd:element name="in" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
> </xsd:element>
> <xsd:element name="getSolutionByIdResponse">
> <xsd:complexType>
> <xsd:sequence>
> <xsd:element name="out" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
> </xsd:element>
> <xsd:element name="getSolutionByIdFault">
> <xsd:complexType>
> <xsd:sequence>
> <xsd:element name="getSolutionByIdFault"
> type="xsd:string">
> </xsd:element>
> </xsd:sequence>
> </xsd:complexType>
> </xsd:element>
> </xsd:schema>
> </wsdl:types>
> <wsdl:message name="getSolutionByIdRequest">
> <wsdl:part element="tns:getSolutionById" name="parameters"/>
> </wsdl:message>
> <wsdl:message name="getSolutionByIdResponse">
> <wsdl:part element="tns:getSolutionByIdResponse" name="parameters"/>
> </wsdl:message>
> <wsdl:message name="getSolutionByIdFault">
> <wsdl:part name="parameters"
> element="tns:getSolutionByIdFault"></wsdl:part>
> </wsdl:message>
> <wsdl:portType name="ExampleModule">
> <wsdl:operation name="getSolutionById">
> <wsdl:input message="tns:getSolutionByIdRequest"/>
> <wsdl:output message="tns:getSolutionByIdResponse"/>
> <wsdl:fault name="fault"
> message="tns:getSolutionByIdFault"></wsdl:fault>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="ExampleModuleSOAP" type="tns:ExampleModule">
> <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="getSolutionById">
> <soap:operation
> soapAction="http://www.example.org/ExampleModule/getSolutionById"/>
> <wsdl:input>
> <soap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal"/>
> </wsdl:output>
> <wsdl:fault name="fault">
> <soap:fault use="literal" name="fault" />
> </wsdl:fault>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="ExampleModule">
> <wsdl:port binding="tns:ExampleModuleSOAP" name="ExampleModuleSOAP">
> <soap:address location="http://www.example.org/"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>{code}
> Generate it again, the serialVersionUID changes
> *More info*
> I've checked and found the corresponding issue in the file
> [https://github.com/apache/axis-axis2-java-core/blob/master/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java|https://github.com/wso2/wso2-axis2/blob/28a2220ba3a5547315347ecb97b512059070d15d/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java]
> in line 1055, where the {{System.currentTimeMillis()}} is used for the
> serialVersionUID.
> A hash based on the className and the parameters would probably be better.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]