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