I think that I have a solution here, a moficiation to the
HttpSoapClientMarshaller.toNMS(), but I haven't tested it yet.
public void toNMS(NormalizedMessage normalizedMessage, HttpMethod
method)
throws Exception {
addNmsProperties(normalizedMessage, method);
String response = method.getResponseBodyAsString();
Node node = sourceTransformer.toDOMNode(new StringSource(response));
CachedXPathAPI cachedXPathAPI = new CachedXPathAPI();
NodeIterator iterator = cachedXPathAPI.selectNodeIterator(node,
"/*/*[local-name()='Body']/*");
Node root = iterator.nextNode();
/* Copy embedded namespaces from the envelope into the body,
similarly
* to the SaajMarshaller.toNMS() method.
*/
for(Node parent = root.getParentNode(); parent != null; parent =
parent.getParentNode()) {
for(int i=0; i<parent.getAttributes().getLength(); i++) {
Attr att = (Attr)parent.getAttributes().item(i);
if(att.getName().startsWith("xmlns:") &&
root.getAttributes().getNamedItemNS(att.getNamespaceURI(),
att.getLocalName()) == null) {
if(root.getNodeType() == Node.ELEMENT_NODE) {
((Element)root).setAttributeNS(att.getNamespaceURI(), att.getName(),
att.getValue());
}
}
}
}
normalizedMessage.setContent(new DOMSource(root));
}
> -----Original Message-----
> From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, January 03, 2006 12:29 PM
> To: [email protected]
> Subject: Re: [servicemix-user] Problems with JSM flow and
> SOAP messages
>
>
> Sorry i have not had time to try that yet.
> Will do it asap.
>
> Guillaume Nodet
>
> [EMAIL PROTECTED] wrote:
>
> >Guillaume,
> >
> >Any luck with reproducing the error that I had described (using the
> >different versions of the SaajMarshaller and HttpInOutBinding)?
> >
> >Also, have you taken a look at the potential namespace issue
> in the HttpSoap
> >layer (where incoming SOAP messages have partial namespace
> reproduction)?
> >
> >/jonathan
> >
> >
> >
> >>-----Original Message-----
> >>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> >>Sent: Friday, December 30, 2005 12:02 PM
> >>To: [email protected]
> >>Subject: RE: [servicemix-user] Problems with JSM flow and
> >>SOAP messages
> >>
> >>
> >>Guillaume,
> >>
> >>One more thing: Can you verify that the HttpInOutBinding
> (and related
> >>components) is properly capturing all of the namespaces when
> >>stripping the
> >>SOAP-ENV? It seems like the inbound request messages are
> >>missing the "d"
> >>namespace. The SaajMarshaller is ok.
> >>
> >>/jonathan
> >>
> >>
> >>
> >>>-----Original Message-----
> >>>From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> >>>Sent: Friday, December 30, 2005 1:42 AM
> >>>To: [email protected]
> >>>Subject: Re: [servicemix-user] Problems with JSM flow and
> >>>SOAP messages
> >>>
> >>>
> >>>This seems strange, as my test case fails with the old
> >>>
> >>>
> >>SaajMarshaler
> >>
> >>
> >>>code, and works with the new one.
> >>>I changed, but i was quite sure it was working before, as you said.
> >>>It may be related to class loader issues, if the library
> >>>
> >>>
> >>used are not
> >>
> >>
> >>>the same : we recently changed
> >>>to maven 2, so that the order of included jars ma be
> >>>
> >>>
> >>different. I'll
> >>
> >>
> >>>try to investigate it.
> >>>
> >>>Guillaume
> >>>
> >>>[EMAIL PROTECTED] wrote:
> >>>
> >>>
> >>>
> >>>>Guillaume,
> >>>>
> >>>>If I use only the modified HttpInOutBinding, and the older
> >>>>
> >>>>
> >>>SaajMarshaller
> >>>
> >>>
> >>>>(with the org.w3c.dom.Attr import), everything works
> >>>>
> >>>>
> >>>properly. This leads me
> >>>
> >>>
> >>>>to believe that there is an issue with the latest changes to the
> >>>>SaajMarshaller.
> >>>>
> >>>>/jonathan
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>-----Original Message-----
> >>>>>From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]
> >>>>>Sent: Thursday, December 29, 2005 7:44 PM
> >>>>>To: [email protected]
> >>>>>Subject: RE: [servicemix-user] Problems with JSM flow and
> >>>>>SOAP messages
> >>>>>
> >>>>>
> >>>>>I rebuilt using the full files from Apache-HEAD, but get the
> >>>>>same namespace
> >>>>>issues; no "d". I am trying to narrow down the problem on my
> >>>>>end. Should I
> >>>>>use all of the latest components in http and saaj?
> >>>>>
> >>>>>/jonathan
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>-----Original Message-----
> >>>>>>From: [EMAIL PROTECTED]
> >>>>>>
> >>>>>>
> >>[mailto:[EMAIL PROTECTED]
> >>
> >>
> >>>>>>Sent: Thursday, December 29, 2005 6:53 PM
> >>>>>>To: [email protected]
> >>>>>>Subject: RE: [servicemix-user] Problems with JSM flow and
> >>>>>>SOAP messages
> >>>>>>
> >>>>>>
> >>>>>>This is for a slightly different service, but the basic
> >>>>>>
> >>>>>>
> >>problem is
> >>
> >>
> >>>>>>illustrated. Your example has the "d" xmlns, but my result
> >>>>>>does not. On
> >>>>>>further review, my source classes were slightly out of date
> >>>>>>with yours. I
> >>>>>>will try again tomorrow morning using the straight java
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>files from the
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>Apache-HEAD (with package corrections), and let you know if
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>the issue
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>persists.
> >>>>>>
> >>>>>><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> >>>>>><soap:Envelope
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> >>>>>>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> >>>>>> <soap:Body>
> >>>>>> <wn2:getPersonResponse
> >>>>>>xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/">
> >>>>>> <wn2:response i:type="wn2:Person"
> >>>>>>
> >>>>>>
> >>>>>>
> >>>xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
> >>>
> >>>
> >>>>>>
> >>>>>>xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/">
> >>>>>> <wn2:description i:type="d:string"
> >>>>>>
> >>>>>>xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/">Desktop
> >>>>>>customizer
> >>>>>>(1135883476645)</wn2:description>
> >>>>>> <wn2:firstName i:type="d:string"
> >>>>>>xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/">Jonatha
> >>>>>>n</wn2:firstNa
> >>>>>>me>
> >>>>>> <wn2:lastName i:type="d:string"
> >>>>>>xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/">Edwards
> >>>>>></wn2:lastName
> >>>>>>
> >>>>>>
> >>>>>> </wn2:response>
> >>>>>> </wn2:getPersonResponse>
> >>>>>> </soap:Body>
> >>>>>></soap:Envelope>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>-----Original Message-----
> >>>>>>>From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> >>>>>>>Sent: Thursday, December 29, 2005 1:16 PM
> >>>>>>>To: [email protected]
> >>>>>>>Subject: Re: [servicemix-user] Problems with JSM flow and
> >>>>>>>SOAP messages
> >>>>>>>
> >>>>>>>
> >>>>>>>I have a test case which is the same as yours (or should be)
> >>>>>>>and the result I have is the following :
> >>>>>>>
> >>>>>>><?xml version="1.0" encoding="UTF-8"?>
> >>>>>>><soap:Envelope
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> >>>>>>>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> >>>>>>> <soap:Body>
> >>>>>>> <wn1:getCustomerInfo
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>xmlns:d="http://www.w3.org/2001/XMLSchema"
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>> xmlns:e="http://schemas.xmlsoap.org/soap/envelope/"
> >>>>>>> xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
> >>>>>>> xmlns:wn0="http://systinet.com/xsd/SchemaTypes/"
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>xmlns:wn1="http://systinet.com/wsdl/com/cexp/coe/bob/ws/
> customer/"
> >>>>>>
> >>>>>>
> >>>>>>> xmlns:wn2="http://systinet.com/soap-jta/"
> >>>>>>>xmlns:wn3="http://systinet.com/wsdl/com/cexp/coe/bob/services/
> >>>>>>>order/pojo/">
> >>>>>>> <wn1:userId i:type="d:string"
> >>>>>>>xmlns:wn1="http://systinet.com/wsdl/com/cexp/coe/bob/ws/custom
> >>>>>>>er/">akayali</wn1:userId>
> >>>>>>> </wn1:getCustomerInfo>
> >>>>>>> </soap:Body>
> >>>>>>></soap:Envelope>
> >>>>>>>
> >>>>>>>This one seems good.
> >>>>>>>What is the exact result you have ?
> >>>>>>>
> >>>>>>>Cheers,
> >>>>>>>Guillaume Nodet
> >>>>>>>
> >>>>>>>[EMAIL PROTECTED] wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>Guillaume,
> >>>>>>>>
> >>>>>>>>After applying the changes that you sent me in the diff
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>links the JMS flow
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>now returns the full SOAP body. However, the SOAP messages
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>are now missing
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>the "i" and "d" namespaces that you had worked on fixing
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>last week.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>>>/jonathan
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>>-----Original Message-----
> >>>>>>>>>From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> >>>>>>>>>Sent: Thursday, December 29, 2005 2:51 AM
> >>>>>>>>>To: [email protected]
> >>>>>>>>>Subject: Re: [servicemix-user] Problems with JSM flow and
> >>>>>>>>>SOAP messages
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>You can grab the new versions of SaajMarshaler and
> >>>>>>>>>HttpSoapInOutBinding.
> >>>>>>>>>The problem should be fixed now.
> >>>>>>>>>
> >>>>>>>>>Here are the diffs you should report to your sources (the
> >>>>>>>>>package have
> >>>>>>>>>been renamed)
> >>>>>>>>> *
> >>>>>>>>>http://svn.apache.org/viewcvs.cgi/incubator/servicemi
> x/trunk/s
> >>>>>>>>>ervicemix-components/src/main/java/org/apache/service
> mix/compo
> >>>>>>>>>nents/http/HttpSoapInOutBinding.java?rev=359186&r1=35
> 9767&r2=3
> >>>>>>>>>59186&diff_format=h
> >>>>>>>>> *
> >>>>>>>>>http://svn.apache.org/viewcvs.cgi/incubator/servicemi
> x/trunk/s
> >>>>>>>>>ervicemix-components/src/main/java/org/apache/service
> mix/compo
> >>>>>>>>>nents/saaj/SaajMarshaler.java?rev=359186&r1=359767&r2
> =359186&d
> >>>>>>>>>iff_format=h
> >>>>>>>>>
> >>>>>>>>>Cheers,
> >>>>>>>>>Guillaume Nodet
> >>>>>>>>>
> >>>>>>>>>[EMAIL PROTECTED] wrote:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>Two steps forward, one step back, or so it seems.
> >>>>>>>>>>
> >>>>>>>>>>The jmsFlow seems to be broken - at least in my
> custom build
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>of ServiceMix.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>The version of the codebase that I am using is 1055, with
> >>>>>>>>>>"servicemix/components/http/*" and
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>"servicemix/components/saaj/*" from the
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>Apache-HEAD. In addition, I am using the
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>xfire-all-1.0-20051222.jar. This is
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>happening using the Sun Java 5 JVM for both ActiveMQ 3.2.1
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>and ServiceMix.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>With this build, the SEDA flow works properly, and the
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>client gets the
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>response from the invoked SOAP service (SOAP client ->
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>HttpSoapClient ->
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>SaajComponent -> SOAP service). When I change the flow to
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>JMS, using
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>>>ActiveMQ 3.2.1 with the "reliable" connect string, my
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>client throws a
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>>>NullPointerException. This is because the SOAP-Body in the
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>response is
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>completely empty. I have verified that the body is
> populated
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>correclty by
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>the SaajComponent (visible in the DEBUG output in log4j),
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>but the actual
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>HttpResponse from the HttpSoapConnector has an empty
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>SOAP-Body. As this
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>problem only presents itself using the JMS flow, and only
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>surfaced after
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>using the newer classes and library, I am fairly certain
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>that these events
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>are all highly correlated, but I am not sure what the root
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>cause is. I need
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>the new classes, and the newer xfire library in
> order for my
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>services to
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>call successfully under SEDA, and cannot revert.
> >>>>>>>>>>
> >>>>>>>>>>regards,
> >>>>>>>>>>/jonathan
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>-----Original Message-----
> >>>>>>>>>>>From: [EMAIL PROTECTED]
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>[mailto:[EMAIL PROTECTED]
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>>>>>Sent: Wednesday, December 28, 2005 9:53 AM
> >>>>>>>>>>>To: [email protected]
> >>>>>>>>>>>Subject: RE: [servicemix-user] Problems invoking a web
> >>>>>>>>>>>service with SOAP
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>Guillaume,
> >>>>>>>>>>>
> >>>>>>>>>>>Installing the new Xfire library did the trick: The XML
> >>>>>>>>>>>returned from the
> >>>>>>>>>>>SaajComponent is well formed, and the HttpSoapConnector
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>handles the
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>>>>Http+SOAP calls properly. Thanks to everyone who helped me
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>to get Soap
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>>communication working, especially Guillaume :-)
> >>>>>>>>>>>
> >>>>>>>>>>>Now I'm off to wrestle with the IBM Java 5 JVM
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>(beta) on AIX.
> >>
> >>
> >>>>>>>>>>>best wishes for the holidays,
> >>>>>>>>>>>/jonathan
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >
> >
> >
> >
>