On Mon, Nov 21, 2011 at 17:18, Aleksander Slominski <[email protected]> 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 > <[email protected]> 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 >> <[email protected]> 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 >>> <[email protected]> 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 >>>> <[email protected]> wrote: >>>>> >>>>> Axiom never produces malformed XML. Who said that?? >>>>> >>>>> Andreas >>>>> >>>>> On Sun, Nov 20, 2011 at 17:59, Sanjiva Weerawarana >>>>> <[email protected]> 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 >>>>> > <[email protected]> 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 >>>>> >> <[email protected]> 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 >>>>> >> > <[email protected]> >>>>> >> > 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 >>>>> >> >> <[email protected]> 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: [email protected] >>>>> >> >> For additional commands, e-mail: [email protected] >>>>> >> >> >>>>> >> > >>>>> >> > >>>>> >> > >>>>> >> > -- >>>>> >> > Charith Dhanushka Wickramarachchi >>>>> >> > http://charithwiki.blogspot.com/ >>>>> >> > >>>>> >> > >>>>> >> >>>>> >> >>>>> >> --------------------------------------------------------------------- >>>>> >> To unsubscribe, e-mail: [email protected] >>>>> >> For additional commands, e-mail: [email protected] >>>>> >> >>>>> > >>>>> > >>>>> > >>>>> > -- >>>>> > 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: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>>> >>>> >>>> >>>> >>>> -- >>>> 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: [email protected] For additional commands, e-mail: [email protected]
