Frederik Hansen
2016-03-17 13:30:19 UTC
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
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