[Axis2] Fixed value causes Exception for non fixed values in ADB generated code

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[Axis2] Fixed value causes Exception for non fixed values in ADB generated code

Frederik Hansen

Hi

I'm using Axis 1.7.1 and found an issue using fixed values in WDSL and the ADB Codegenerator.

Basically when one fixed value/attribute exists, all attributes are treated as fixed attributes. This means, when setting the value on a non-fixed attribute, it set be seen as null (but set) and causing an exception.

I've attached a simplified WSDL, the generate java files, one with the fixed value in place, and one without, and also a diff showing the issue (the missing line with "this.localPersonId = param;").

I've looked in the ADB Codegen code, and IMHO the issue seems to be in SchemaCompiler where the code says:

            // register the fixed value if present
            if (xsElt.getFixedValue() != null) {
                metainf.registerDefaultValue(xsElt.getQName(), xsElt.getFixedValue());
                metainf.setFixed(true);
            }

The setFixed seems to be too broad, and maybe it can be changed into something following the registerNillableQName-flow, e.g. registerFixedQName(xsElt.getQName()).

Just to test, I've also tried version 1.7.0 and 1.6.4, there the same issue exists.

Hope this make sense.

Regards,
Frederik Hansen



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

With-FixedValueSampleServiceStub.java (179K) Download Attachment
Without-FixedValueSampleServiceStub.java (179K) Download Attachment
Diff.txt (1K) Download Attachment
FixedValueSample.wsdl (9K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [Axis2] Fixed value causes Exception for non fixed values in ADB generated code

Andreas Veithen-2
Could you create a JIRA issue and attach a patch?

Andreas

On Thu, Mar 17, 2016 at 1:30 PM, Frederik Hansen <[hidden email]> wrote:

Hi

I'm using Axis 1.7.1 and found an issue using fixed values in WDSL and the ADB Codegenerator.

Basically when one fixed value/attribute exists, all attributes are treated as fixed attributes. This means, when setting the value on a non-fixed attribute, it set be seen as null (but set) and causing an exception.

I've attached a simplified WSDL, the generate java files, one with the fixed value in place, and one without, and also a diff showing the issue (the missing line with "this.localPersonId = param;").

I've looked in the ADB Codegen code, and IMHO the issue seems to be in SchemaCompiler where the code says:

            // register the fixed value if present
            if (xsElt.getFixedValue() != null) {
                metainf.registerDefaultValue(xsElt.getQName(), xsElt.getFixedValue());
                metainf.setFixed(true);
            }

The setFixed seems to be too broad, and maybe it can be changed into something following the registerNillableQName-flow, e.g. registerFixedQName(xsElt.getQName()).

Just to test, I've also tried version 1.7.0 and 1.6.4, there the same issue exists.

Hope this make sense.

Regards,
Frederik Hansen



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]