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"

Reply via email to