Asankha, I think you are missing part of this thread :-(
Thanks, Ruwan On Sat, May 10, 2008 at 8:20 PM, Asankha C. Perera <[EMAIL PROTECTED]> wrote: > Sylvain / Ruwan > > If you want a property set (e.g. ContentType and messageType) at the Axis2 > message context level (and not synapse level) you must set the scope > attribute to "axis2 < > http://synapse.apache.org/Synapse_Configuration_Language.html#property>".. > I think the problem is there? > > asankha > > > Ruwan Linton wrote: > >> Hi Sylvain, >> >> I hope not just this property, but all the axis2 message context >> properties >> has to be copied by the clonePartially method. >> >> Could you please report this through the JIRA. I will fix it ASAP and we >> will be doing a QA build 2 on Monday so that you can test that build for >> the >> verification. >> >> Thanks for pointing this. >> >> Thanks, >> Rwuan >> >> On Sat, May 10, 2008 at 4:49 PM, Sylvain Legault <[EMAIL PROTECTED]> >> wrote: >> >> >> >>> Hi Ruwan, >>> >>> thansk for the quick reply, I think you are right but sadly I also think >>> there is a but the prevent it to be copied correclty. I did what you said >>> witht he ContentType and I also did a java mediator and both give the >>> same >>> result. I trace the program step by step in debuger mode and found the >>> following (I'm using the trunck from early this week): >>> >>> When Axis2FlexibleMEPClient.java axisOutMsgCtx see: >>> MessageContext axisOutMsgCtx = cloneForSend(originalInMsgCtx); >>> The result is that the axisOutMsgCtx does not contains the properties >>> anymore :( since only properties explicitely state are copied over. This >>> could be done in two places: >>> >>> private static MessageContext cloneForSend(MessageContext ori) throws >>> AxisFault { >>> MessageContext newMC = MessageHelper.clonePartially(ori); >>> newMC.setEnvelope(ori.getEnvelope()); >>> removeAddressingHeaders(newMC); >>> >>> >>> >>> newMC.setProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS, >>> >>> >>> >>> ori.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS)); >>> >>> // FIX for content type >>> newMC.setProperty(Constants.Configuration.CONTENT_TYPE, >>> ori.getProperty(Constants.Configuration.CONTENT_TYPE)); >>> return newMC; >>> } >>> >>> Or in MessageHelper.java >>> >>> org.apache.axis2.context.MessageContext ori) throws AxisFault { >>> org.apache.axis2.context.MessageContext newMC >>> = new org.apache.axis2.context.MessageContext(); >>> >>> // do not copy options from the original >>> newMC.setConfigurationContext(ori.getConfigurationContext()); >>> newMC.setMessageID(UUIDGenerator.getUUID()); >>> newMC.setTo(ori.getTo()); >>> newMC.setSoapAction(ori.getSoapAction()); >>> >>> >>> >>> newMC.setProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING, >>> >>> >>> >>> ori.getProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING)); >>> >>> newMC.setProperty(org.apache.axis2.Constants.Configuration.ENABLE_MTOM, >>> >>> ori.getProperty(org.apache.axis2.Constants.Configuration.ENABLE_MTOM)); >>> >>> newMC.setProperty(org.apache.axis2.Constants.Configuration.ENABLE_SWA, >>> >>> ori.getProperty(org.apache.axis2.Constants.Configuration.ENABLE_SWA)); >>> newMC.setProperty(Constants.Configuration.HTTP_METHOD, >>> ori.getProperty(Constants.Configuration.HTTP_METHOD)); >>> //coping the Message type from req to res to get the message >>> formatters working correctly. >>> newMC.setProperty(Constants.Configuration.MESSAGE_TYPE, >>> ori.getProperty(Constants.Configuration.MESSAGE_TYPE)); >>> >>> // FIX for content type >>> newMC.setProperty(Constants.Configuration.CONTENT_TYPE, >>> ori.getProperty(Constants.Configuration.CONTENT_TYPE)); >>> >>> Both fix work just fine with the following defintion: >>> >>> >>> <definitions xmlns="http://ws.apache.org/ns/synapse"> >>> <!-- filtering of messages with XPath and regex matches --> >>> <filter source="get-property('To')" regex=".*/xyz.*"> >>> <property name="ContentType" value="application/vnd.xyz.xml" >>> scope="axis2"/> >>> <send> >>> <endpoint> >>> <address uri="http://10.4.3.110:1563/xyz" format="pox"/> >>> </endpoint> >>> </send> >>> <drop/> >>> </filter> >>> <send/> >>> </definitions> >>> >>> Let me know what you think or anyone else and if I should report this as >>> a >>> bug. >>> >>> Thanks >>> Sylvain >>> >>> On Fri, May 9, 2008 at 9:30 PM, Ruwan Linton <[EMAIL PROTECTED]> >>> wrote: >>> >>> >>> >>>> Hi Sylvain, >>>> >>>> I am afraid, the property name contentType has to be modified as >>>> ContentType. [first letter capitalized] messageType remains as it is. >>>> >>>> Thanks, >>>> Ruwan >>>> >>>> On Sat, May 10, 2008 at 6:51 AM, Ruwan Linton <[EMAIL PROTECTED]> >>>> wrote: >>>> >>>> >>>> >>>>> Hi Sylvain, >>>>> >>>>> Please see my comments in-line; >>>>> >>>>> On Fri, May 9, 2008 at 11:55 PM, Sylvain Legault <[EMAIL PROTECTED]> >>>>> wrote: >>>>> >>>>> >>>>> >>>>>> Hi, >>>>>> >>>>>> I'm trying to do a simple XML proxy were the contenttype is not >>>>>> application/xml but rather application/vnd.xyz.xml where is xyz may be >>>>>> >>>>>> >>>>> few >>>> >>>> >>>>> different values but in this case let's assume it is xyz. >>>>>> >>>>>> First I found that I needed to modify my axis2.xml (is there another >>>>>> way?), >>>>>> otherwise I get that the incoming HTTP post is not SOAP and there is >>>>>> >>>>>> >>>>> no >>> >>> >>>> Envelope >>>>>> >>>>>> >>>>> No there is no other way to tell Synapse that this message has to be >>>>> >>>>> >>>> built >>>> >>>> >>>>> using this message builder. So you have to have that mapping. >>>>> >>>>> >>>>> >>>>> >>>>>> <messageFormatters> >>>>>> ::: >>>>>> <messageFormatter contentType="application/vnd.xyzxml" >>>>>> class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/> >>>>>> </messageFormatters> >>>>>> <messageBuilders> >>>>>> ::: >>>>>> <messageBuilder contentType="application/vnd.xyz.xml" >>>>>> class="org.apache.axis2.builder.ApplicationXMLBuilder"/> >>>>>> </messageBuilders> >>>>>> >>>>>> I'm also using the following definition >>>>>> >>>>>> <definitions xmlns="http://ws.apache.org/ns/synapse"> >>>>>> <!-- filtering of messages with XPath and regex matches --> >>>>>> <filter source="get-property('To')" regex=".*/xyz.*"> >>>>>> >>>>>> >>>>> <property name="messageType" value="application/vnd.xyzxml" >>>>> scope="axis2"/> >>>>> <property name="contentType" value="application/vnd.xyzxml" >>>>> scope="axis2"/> >>>>> >>>>> >>>>> >>>>>> <send> >>>>>> <endpoint> >>>>>> <address uri="*http://10.4.3.110:1563/xyz*" >>>>>> >>>>>> >>>>> format="pox"/> >>>> >>>> >>>>> </endpoint> >>>>>> </send> >>>>>> <drop/> >>>>>> </filter> >>>>>> <send/> >>>>>> </definitions> >>>>>> >>>>>> My problem is that the message goes thru but ended up on the other >>>>>> >>>>>> >>>>> side >>> >>> >>>> with >>>>>> application/xml. >>>>>> >>>>>> I have also try to create my own java mediator with another definition >>>>>> >>>>>> >>>>> but >>>> >>>> >>>>> still fails to change the content type and before I go too far I would >>>>>> like >>>>>> to know if anyone had tried it before and how? >>>>>> >>>>>> >>>>> I have modified the above configuration, and you can try that >>>>> configuration. I think it will work. >>>>> >>>>> Thanks, >>>>> Ruwan >>>>> >>>>> -- >>>>> Ruwan Linton >>>>> http://www.wso2.org - "Oxygenating the Web Services Platform" >>>>> >>>>> >>>> >>>> >>>> -- >>>> Ruwan Linton >>>> http://www.wso2.org - "Oxygenating the Web Services Platform" >>>> >>>> >>>> >>> >> >> >> >> > -- Ruwan Linton http://www.wso2.org - "Oxygenating the Web Services Platform"
