ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andreas Veithen <andreas.veit...@gmail.com>
Subject Re: Redundant names space removal when Serializing - AXIOM
Date Mon, 21 Nov 2011 16:59:57 GMT
On Mon, Nov 21, 2011 at 17:18, Aleksander Slominski
<aslom@cs.indiana.edu> wrote:
> Hi,
> from what I remember of XML and Namespaces: when you detach any child
> element such as saml:Assertion then all in-scope namespace declared prefixes
> should be copied.

There is no spec that defines a general rule for this. Specs such as
XML C14N define specific rules for this applicable in specific
contexts.

> The serializer should recognize if it is serializing a standalone or
> embedded XML. Is there any API for it? For standalone it should print all
> in-scope declared namesapce prefixes.

What the serializer does is to generate additional namespace
declarations if it encounters information items (elements or
attributes) that have a prefix/namespace URI combination for which no
namespace declaration is in scope. That covers the case of serializing
a part of an XML document. This in general gives the expected result,
except for cases where a namespace declaration is not visibly used,
e.g. in an attribute value. BTW, it's the same behavior as in DOM.

Anyway, this is not a relevant question because it is not related to
the problem.

> HTH,
> Alek
>
> On Sun, Nov 20, 2011 at 11:31 PM, Charith Wickramarachchi
> <charith.dhanushka@gmail.com> wrote:
>>
>> Hi ,
>>
>> Looked more in to the details of whats happening. So here the problem is
>> the element that have this redundant names space is the <saml:Assertion ...
>> element which is a signed one.
>>
>>
>> The incoming message to synapse looks like this.
>>
>> <soapenv:Envelope
>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>> xmlns:oas="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>    <soapenv:Header>
>>       <oas:Security>
>> <saml:Assertion ....
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ...
>> </saml:Assertion>
>> </oas:Security>
>>    </soapenv:Header>
>> ...........................
>> </soapenv:Envelope>
>>
>>
>> and output is like
>>
>> <soapenv:Envelope
>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>> xmlns:oas="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>    <soapenv:Header>
>>       <oas:Security>
>> <saml:Assertion ...> ... </saml:Assertion>
>> </oas:Security>
>>    </soapenv:Header>
>>
>>
>> So in this case isn't it wrong to do this kind of optimizations ?
>>
>> thanks,
>> Charith
>>
>>
>>
>>
>>
>> On Mon, Nov 21, 2011 at 8:50 AM, Charith Wickramarachchi
>> <charith.dhanushka@gmail.com> wrote:
>>>
>>> Hi ,
>>>
>>> This is an issue with the BE service. When the message comes to synapse
>>> from the client. In its SOAP Message it has same name space declared at two
>>> levels.
>>>
>>> At Envelope level and and inside a header. So as a result when message go
>>> through synapse  it will omit this redundant names space declaration.
>>> But BE service will fail to process this header due to  missing
>>> namesspace. So its due to BEs xml phaser assumes that headers are self
>>> contained and they do not see the namesspace defined at Envelope level.
>>>
>>> thanks,
>>> Charith
>>>
>>> On Sun, Nov 20, 2011 at 11:12 PM, Sanjiva Weerawarana
>>> <sanjiva@opensource.lk> wrote:
>>>>
>>>> "So when synapse forward them  to the BE service they get omitted as
>>>> they are defined at SOAP Envelope level."
>>>> Maybe Synapse is not serializing the headers properly?
>>>> Sanjiva.
>>>>
>>>> On Sun, Nov 20, 2011 at 10:55 PM, Andreas Veithen
>>>> <andreas.veithen@gmail.com> wrote:
>>>>>
>>>>> Axiom never produces malformed XML. Who said that??
>>>>>
>>>>> Andreas
>>>>>
>>>>> On Sun, Nov 20, 2011 at 17:59, Sanjiva Weerawarana
>>>>> <sanjiva@opensource.lk> wrote:
>>>>> > Isn't that a bug?
>>>>> > If I declare an NS at the Envelope node then that cannot be removed
>>>>> > if
>>>>> > anyone inside uses it. If I'm serializing only the Header element(s)
>>>>> > then
>>>>> > any in scope namespaces must be available and worst case every
>>>>> > element will
>>>>> > re-serialize them. However under no condition is it correct to
>>>>> > serialize a
>>>>> > child element and end up with malformed XML!
>>>>> >
>>>>> > Sanjiva.
>>>>> >
>>>>> > On Sat, Nov 19, 2011 at 10:28 PM, Andreas Veithen
>>>>> > <andreas.veithen@gmail.com> wrote:
>>>>> >>
>>>>> >> Assuming that the namespace in question is not the SOAP envelope
>>>>> >> namespace, instead of hacking Axiom, wouldn't it be easier to
remove
>>>>> >> the namespace declaration from the SOAP envelope (so that it
will be
>>>>> >> serialized in the SOAP header block)?
>>>>> >>
>>>>> >> Andreas
>>>>> >>
>>>>> >> On Sat, Nov 19, 2011 at 06:11, Charith Wickramarachchi
>>>>> >> <charith.dhanushka@gmail.com> wrote:
>>>>> >> > Hi Andreas,
>>>>> >> >
>>>>> >> > Issue was this causes an Error in a 3rd party web-service
engine
>>>>> >> > when
>>>>> >> > processing some soap headers.
>>>>> >> >
>>>>> >> > Scenario is this. Synapse get a soap request which contains
some
>>>>> >> > redundant
>>>>> >> > namespace declarations at header level which are internally
used
>>>>> >> > inside
>>>>> >> > the
>>>>> >> > headers. So when synapse forward them  to the BE service
they get
>>>>> >> > omitted as
>>>>> >> > they are defined at SOAP Envelope level.
>>>>> >> >
>>>>> >> > BE services header processor incorrectly assumes that headers
are
>>>>> >> > self
>>>>> >> > contained so this causes an error.
>>>>> >> >
>>>>> >> > I was wondering it may make scene to make it configurable 
as if
>>>>> >> > we
>>>>> >> > think
>>>>> >> > of  synapse point of view omitting redundant namespaces
may not be
>>>>> >> > a
>>>>> >> > good
>>>>> >> > idea sometimes. Specially integrating with legacies like
this.
>>>>> >> > WDYT ? (
>>>>> >> > I do
>>>>> >> > agree that this in pure AXIOM point of view its the correct
thing
>>>>> >> > to do
>>>>> >> > as
>>>>> >> > it will reduce the data content that is written to the
wire etc..
>>>>> >> > )
>>>>> >> >
>>>>> >> > Can please you point me to a place where this is done ?
So that i
>>>>> >> > can
>>>>> >> > hack
>>>>> >> > the code for the time being for my self and later provide
a patch
>>>>> >> > if
>>>>> >> > devs
>>>>> >> > are ok with my above idea.
>>>>> >> >
>>>>> >> > thanks,
>>>>> >> > Charith
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> > On Fri, Nov 18, 2011 at 3:55 PM, Andreas Veithen
>>>>> >> > <andreas.veithen@gmail.com>
>>>>> >> > wrote:
>>>>> >> >>
>>>>> >> >> No, the namespace repairing performed by the serialize
and
>>>>> >> >> serializeAndConsume methods is not configurable.
>>>>> >> >>
>>>>> >> >> What is the use case for preserving a redundant namespace
>>>>> >> >> declaration
>>>>> >> >> on a SOAP header?
>>>>> >> >>
>>>>> >> >> Andreas
>>>>> >> >>
>>>>> >> >> On Fri, Nov 18, 2011 at 03:23, Charith Wickramarachchi
>>>>> >> >> <charith.dhanushka@gmail.com> wrote:
>>>>> >> >> > Hi devs ,
>>>>> >> >> >
>>>>> >> >> > When we serialize a OMElement axiom will omit
redundant
>>>>> >> >> > namesspace
>>>>> >> >> > declarations by default. Is it possible to disable
this
>>>>> >> >> > behavior ?
>>>>> >> >> > In my case i want to keep the redundant namesspace
declarations
>>>>> >> >> > in
>>>>> >> >> > SOAP
>>>>> >> >> > headers.
>>>>> >> >> >
>>>>> >> >> >
>>>>> >> >> > thanks,
>>>>> >> >> > Charith
>>>>> >> >> >
>>>>> >> >> > --
>>>>> >> >> > Charith Dhanushka Wickramarachchi
>>>>> >> >> > http://charithwiki.blogspot.com/
>>>>> >> >> >
>>>>> >> >> >
>>>>> >> >>
>>>>> >> >>
>>>>> >> >> ---------------------------------------------------------------------
>>>>> >> >> To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
>>>>> >> >> For additional commands, e-mail: dev-help@ws.apache.org
>>>>> >> >>
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> > --
>>>>> >> > Charith Dhanushka Wickramarachchi
>>>>> >> > http://charithwiki.blogspot.com/
>>>>> >> >
>>>>> >> >
>>>>> >>
>>>>> >>
>>>>> >> ---------------------------------------------------------------------
>>>>> >> To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
>>>>> >> For additional commands, e-mail: dev-help@ws.apache.org
>>>>> >>
>>>>> >
>>>>> >
>>>>> >
>>>>> > --
>>>>> > Sanjiva Weerawarana, Ph.D.
>>>>> > Founder, Director & Chief Scientist; Lanka Software Foundation;
>>>>> > http://www.opensource.lk/
>>>>> > Founder, Chairman & CEO; WSO2; http://wso2.com/
>>>>> > Founder & Director; Thinkcube Systems; http://www.thinkcube.com/
>>>>> > Member; Apache Software Foundation; http://www.apache.org/
>>>>> > Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/
>>>>> >
>>>>> > Blog: http://sanjiva.weerawarana.org/
>>>>> >
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
>>>>> For additional commands, e-mail: dev-help@ws.apache.org
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Sanjiva Weerawarana, Ph.D.
>>>> Founder, Director & Chief Scientist; Lanka Software Foundation;
>>>> http://www.opensource.lk/
>>>> Founder, Chairman & CEO; WSO2; http://wso2.com/
>>>> Founder & Director; Thinkcube Systems; http://www.thinkcube.com/
>>>> Member; Apache Software Foundation; http://www.apache.org/
>>>> Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/
>>>>
>>>> Blog: http://sanjiva.weerawarana.org/
>>>
>>>
>>>
>>> --
>>> Charith Dhanushka Wickramarachchi
>>> http://charithwiki.blogspot.com/
>>>
>>
>>
>>
>> --
>> Charith Dhanushka Wickramarachchi
>> http://charithwiki.blogspot.com/
>>
>
>
>
> --
> The best way to predict the future is to invent it - Alan Kay
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org


Mime
View raw message