You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Fabio Insaccanebbia <fi...@gmail.com> on 2005/05/02 11:13:24 UTC

Axis and "canonical representation"

Hi everybody,

is there someone who can explain me if Axis manages in an explicit way 
if the SOAP message you sent is in lexical representation or in a 
canonical representation?

 From what I've read, the canonical representation should guarantee a 
better interoperability between different SOAP implementations.

It is my responsability to write software that, for every field, create 
a "canonical" representation or there's an Axis configuration that makes 
every field converted to "canonical representation".

An example: I've a "decimal" field that in my software is a BigDecimal. 
This data arrives to us form two different sources.
The first source send us a BigDecimal always with scale 3, the second 
adapts the scale to the number of meaningful decimals.
This means that if we have the number 130, the first source will send 
"130.000" and the second "130".
If I've to send this data via SOAP to another software, the 
representation will be different in the two case (even though the value 
is the same). Now, the mantainers of the other software are complaining 
about incoherence of the representation (???).

I haven't yet understood clearly why the different representation should 
bother them, but reading the specs I found out that using "canonical 
representation" there wouldn't be different ways to express the same 
value, thus eliminating the incoherence(???).

How can I obtain "canonical representation"? I've to "normalize" all the 
data in my application (setting the scale for all the BigDecimal I 
pass)? Or is there a switch in Axis to say "canonize all the data I'm 
passing"? Or is something else I'm missing (some "adapter" classes to 
implement)?

The "decimal representation" specs:
http://www.w3.org/TR/xmlschema-2/#decimal-lexical-representation
http://www.w3.org/TR/xmlschema-2/#decimal-canonical-representation

Thanks in advance,
Fabio

P.S.: I searched the mailing list, the docs, the FAQ, google, jira and 
couldn't find a clear answer.. if it turns out it is a beginner question 
(quite likely, since I'm a beginner :-), could you point out a resource 
where I can find the requested info?

 


Re: Axis and "canonical representation"

Posted by Anne Thomas Manes <at...@gmail.com>.
I suspect in this situation you will have to use a custom serializer
to force the mapping of the second source to the appropriate scale.

Anne

On 5/2/05, Fabio Insaccanebbia <fi...@gmail.com> wrote:
> Hi everybody,
> 
> is there someone who can explain me if Axis manages in an explicit way
> if the SOAP message you sent is in lexical representation or in a
> canonical representation?
> 
>  From what I've read, the canonical representation should guarantee a
> better interoperability between different SOAP implementations.
> 
> It is my responsability to write software that, for every field, create
> a "canonical" representation or there's an Axis configuration that makes
> every field converted to "canonical representation".
> 
> An example: I've a "decimal" field that in my software is a BigDecimal.
> This data arrives to us form two different sources.
> The first source send us a BigDecimal always with scale 3, the second
> adapts the scale to the number of meaningful decimals.
> This means that if we have the number 130, the first source will send
> "130.000" and the second "130".
> If I've to send this data via SOAP to another software, the
> representation will be different in the two case (even though the value
> is the same). Now, the mantainers of the other software are complaining
> about incoherence of the representation (???).
> 
> I haven't yet understood clearly why the different representation should
> bother them, but reading the specs I found out that using "canonical
> representation" there wouldn't be different ways to express the same
> value, thus eliminating the incoherence(???).
> 
> How can I obtain "canonical representation"? I've to "normalize" all the
> data in my application (setting the scale for all the BigDecimal I
> pass)? Or is there a switch in Axis to say "canonize all the data I'm
> passing"? Or is something else I'm missing (some "adapter" classes to
> implement)?
> 
> The "decimal representation" specs:
> http://www.w3.org/TR/xmlschema-2/#decimal-lexical-representation
> http://www.w3.org/TR/xmlschema-2/#decimal-canonical-representation
> 
> Thanks in advance,
> Fabio
> 
> P.S.: I searched the mailing list, the docs, the FAQ, google, jira and
> couldn't find a clear answer.. if it turns out it is a beginner question
> (quite likely, since I'm a beginner :-), could you point out a resource
> where I can find the requested info?
> 
>