On Thu, Jul 19, 2012 at 3:57 PM, Paul Fremantle <p...@wso2.com> wrote:
> Why don't we just use binary relay or even Passthru transport here? > Doesn't that solve this? It solves the parsing problem. But we have uncovered some undesirable side effects. Thanks, Hiranya > > Paul > > > On 19 July 2012 10:57, Dushan Abeyruwan <dus...@wso2.com> wrote: > >> Hi Sagara, >> Yes, Originally I had this concern i.e the way to determine SOAP 1.1 >> and POX, I think ur suggestion is best suit in this case but anyway the >> provided solution (Formatter/Builder concept) wont be a perfect one as u >> mention, so will keep this as open and hope this will get sorted out in >> AIXS2 context, mean time I will hold those issues reported to jira util >> that. >> >> cheers >> Dushan >> >> >> On Thu, Jul 19, 2012 at 2:48 PM, Sagara Gunathunga <sag...@wso2.com>wrote: >> >>> >>> >>> On Thu, Jul 19, 2012 at 2:04 PM, Dushan Abeyruwan <dus...@wso2.com>wrote: >>> >>>> Hi >>>> " For an example, in API Manager if you send a POX message with >>>> the text/xml, the query parameters on the URL do not get passed to the >>>> backend server, whereas they will get passed if we use application/xml >>>> instead" >>>> My thought is, >>>> POX message received with text/xml context to API, then >>>> hybrid builder get invoke, though we are receiving TEXT/XML while building >>>> the message >>>> OMElement element = >>>> applicationXMLBuilder.processDocument(new ByteArrayInputStream(bytes), >>>> *HybridConstants.APPLICATION_XML*, messageContext); , >>>> we are* forcefully including the contentType as >>>> application/xml NOTE: we are Keeping the flag in message context with >>>> the actual received content type*, thus synapse engine will treat this >>>> as application/xml and thus will wont be a issue with query parameter, then >>>> at the formatter using the flag just before send to BE setup the actual >>>> CONTENT TYPE to the outgoing message thus this will write to the wire >>>> >>>> *sample code* >>>> if (HybridConstants.TEXT_XML.equals(contentType)) { >>>> SOAPBuilder builder = new SOAPBuilder(); >>>> try { >>>> return builder.processDocument(new ByteArrayInputStream(bytes), >>>> contentType, messageContext); >>>> } catch (Exception e) { >>>> // assumption if a failure happens this must be check >>>> // whether the message is >>>> // is accepted as application XML >>>> ApplicationXMLBuilder applicationXMLBuilder = new >>>> ApplicationXMLBuilder(); >>>> OMElement element = applicationXMLBuilder.processDocument(new >>>> ByteArrayInputStream(bytes), HybridConstants.APPLICATION_XML, >>>> messageContext); >>>> *messageContext.setProperty(HybridConstants.HYBRID_BUILD, true);* >>>> return element; >>>> } >>>> } >>>> >>> >>> Here you first try to build the message with SOAPBuilder and and if it >>> fail try to build with ApplicationXMLBuilder, this should work but isn't >>> this approach add extra cost for POX messages processing ? It can be a very >>> small overhead but in context of a ESB we should not ignore such small >>> overheads too. Instead of above logic why don't you check SOAPAction >>> header together with Content-Type header. According to SOAP 1.1 spec it's >>> mandatory to have SOAPAction with valid SOAP 1.1 message if SOAPAction is >>> missing it's safe to assume message as POX. >>> >>> content-type == text/xml && SOAPAction present => SOAPBuilder >>> OW => ApplicationXMLBuilder >>> >>> Thanks ! >>> >>> >>>> >>>> cheers >>>> Dushan >>>> >>>> >>>> >>>> On Thu, Jul 19, 2012 at 1:34 PM, Hiranya Jayathilaka >>>> <hira...@wso2.com>wrote: >>>> >>>>> This solution will take care of the message parsing issue. But the >>>>> main problem is Synapse and Axis2 both associating text/xml with SOAP 1.1. >>>>> There's a lot of code written based on this assumption. For instance the >>>>> parsing issue can be worked around by using something like the message >>>>> relay (we do this in API Manager). But still there are certain things that >>>>> don't work properly when you send a POX payload with the text/xml content >>>>> type. For an example, in API Manager if you send a POX message with the >>>>> text/xml, the query parameters on the URL do not get passed to the backend >>>>> server, whereas they will get passed if we use application/xml instead. >>>>> >>>>> This is a very tricky problem to solve. I tried to solve this for API >>>>> Manager, but had to give it up considering the time constraint and the >>>>> possible stability issues it might introduce. We need to discuss this with >>>>> a larger audience before we decide on the final plan. >>>>> >>>>> Thanks, >>>>> Hiranya >>>>> >>>>> >>>>> On Thu, Jul 19, 2012 at 1:24 PM, Dushan Abeyruwan <dus...@wso2.com>wrote: >>>>> >>>>>> >>>>>> >>>>>> ---------- Forwarded message ---------- >>>>>> From: Dushan Abeyruwan <dus...@wso2.com> >>>>>> Date: Thu, Jul 19, 2012 at 1:22 PM >>>>>> Subject: Hybrid Message Builder (Solution for >>>>>> To: DEV <dev@wso2.org> >>>>>> Cc: Miyuru Wanninayaka <miy...@wso2.com>, Udayanga Wickramasinghe < >>>>>> udaya...@wso2.com>, Afkham Azeez <az...@wso2.com>, Kasun Indrasiri < >>>>>> ka...@wso2.com>, Nuwan Dias <nuw...@wso2.com> >>>>>> >>>>>> >>>>>> Hi, >>>>>> Recently we had a few issues [1][2] when invoking REST services >>>>>> via ESB REST API when client sends information with the content type >>>>>> TEXT/XML (and if BACK END accepts TEXT/XML) so when message receives to >>>>>> ESB >>>>>> if the content type is defined TEXT/XML by default it will try to build >>>>>> up >>>>>> SOAP envelope, but AFAIK most REST calls are based >>>>>> on TEXT/XML so theoretically this kind of messages should be able to >>>>>> handle >>>>>> via ESB, so for this as solution I have written a Builder formatter, >>>>>> basically I named this as HYBRID message builder /formatter, the idea is >>>>>> when client sends simple xml element with via REST (with content type >>>>>> TEXT/XML) , the logic is first the hybrid builder checks if the message >>>>>> content type defines as TEXT/XML followed by root element containing any >>>>>> SOAP element. if not Hybrid builder invokes the Application XML builder >>>>>> internally and will build the message and setting up a flag to message >>>>>> context thus during the HybridFormatter invocation we can determine that >>>>>> the original client request content type and write it to the output pipe, >>>>>> >>>>>> (did few mock testings with few use cases and worked well) >>>>>> >>>>>> any suggestions on this >>>>>> >>>>>> [1] https://wso2.org/jira/browse/ESBJAVA-1160 >>>>>> [2]https://wso2.org/jira/browse/ESBJAVA-1160 >>>>>> >>>>>> cheers, >>>>>> Dushan Abeyruwan >>>>>> *Senior Software Engineer* >>>>>> *Integration Technologies Team* >>>>>> *WSO2 Inc. http://wso2.com/* >>>>>> *Mobile:(+94)714408632* >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Dushan Abeyruwan >>>>>> *Senior Software Engineer* >>>>>> *Integration Technologies Team* >>>>>> *WSO2 Inc. http://wso2.com/* >>>>>> *Mobile:(+94)714408632* >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Hiranya Jayathilaka >>>>> Senior Technical Lead; >>>>> WSO2 Inc.; http://wso2.org >>>>> E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 >>>>> Blog: http://techfeast-hiranya.blogspot.com >>>>> >>>> >>>> >>>> >>>> -- >>>> Dushan Abeyruwan >>>> *Senior Software Engineer* >>>> *Integration Technologies Team* >>>> *WSO2 Inc. http://wso2.com/* >>>> *Mobile:(+94)714408632* >>>> >>>> >>>> _______________________________________________ >>>> Dev mailing list >>>> Dev@wso2.org >>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>> >>>> >>> >>> >>> -- >>> Sagara Gunathunga >>> >>> Technical Lead; WSO2, Inc.; http://wso2.com >>> V.P Apache Web Services ; http://ws.apache.org/ >>> Blog ; http://ssagara.blogspot.com >>> >>> >> >> >> -- >> Dushan Abeyruwan >> *Senior Software Engineer* >> *Integration Technologies Team* >> *WSO2 Inc. http://wso2.com/* >> *Mobile:(+94)714408632* >> >> >> _______________________________________________ >> Dev mailing list >> Dev@wso2.org >> http://wso2.org/cgi-bin/mailman/listinfo/dev >> >> > > > -- > Paul Fremantle > CTO and Co-Founder, WSO2 > OASIS WS-RX TC Co-chair, VP, Apache Synapse > > UK: +44 207 096 0336 > US: +1 646 595 7614 > > blog: http://pzf.fremantle.org > twitter.com/pzfreo > p...@wso2.com > > wso2.com Lean Enterprise Middleware > > Disclaimer: This communication may contain privileged or other > confidential information and is intended exclusively for the addressee/s. > If you are not the intended recipient/s, or believe that you may have > received this communication in error, please reply to the sender indicating > that fact and delete the copy you received and in addition, you should not > print, copy, retransmit, disseminate, or otherwise use the information > contained in this communication. Internet communications cannot be > guaranteed to be timely, secure, error or virus-free. The sender does not > accept liability for any errors or omissions. > > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Hiranya Jayathilaka Senior Technical Lead; WSO2 Inc.; http://wso2.org E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 Blog: http://techfeast-hiranya.blogspot.com
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev