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

Reply via email to