Hi Rajkumar,

It is because synapse adds a default namespace. try this. It should solve
the problem.

<in>
         <payloadFactory media-type="xml">
            <format>
               <GetQuote *xmlns=""*>
                  <symbol>$1</symbol>
               </GetQuote>
            </format>
            <args>
               <arg xmlns:m0="http://services.samples";
                    evaluator="xml"
                    expression="//m0:symbol"/>
            </args>
         </payloadFactory>
         <class name="org.wso2.esb.mediator.ProtoBufMediator"/>
      </in>


On Sun, Jun 8, 2014 at 4:11 AM, Indika Sampath <[email protected]> wrote:

> Hi Rajkumar,
>
> Following documentation [1] might be useful to achieve what you want.
> Refer to the "Suppressing the namespace" section.
>
> [1] https://docs.wso2.org/display/ESB481/PayloadFactory+Mediator
>
> Cheers!
>
>
> On Sun, Jun 8, 2014 at 9:30 AM, Rajkumar Rajaratnam <[email protected]>
> wrote:
>
>> Hi,
>>
>> I am trying to use Payload Factory Mediator to transform a request.
>>
>> *Original request's body*
>>
>> <soapenv:Body>
>>
>>
>>
>>
>> *<m0:getQuote xmlns:m0="http://services.samples
>> <http://services.samples>">
>> <m0:request><m0:symbol>IBM</m0:symbol></m0:request></m0:getQuote>*
>> </soapenv:Body>
>>
>> *What I want*
>>
>> <soapenv:Body>
>>
>>
>> *<GetQuote><symbol>IBM</symbol></GetQuote>*
>> </soapenv:Body>
>>
>> *My Synapse configuration*
>>
>>       <in>
>>          <payloadFactory media-type="xml">
>>             <format>
>>                <GetQuote>
>>                   <symbol>$1</symbol>
>>                </GetQuote>
>>             </format>
>>             <args>
>>                <arg xmlns:m0="http://services.samples";
>>                     evaluator="xml"
>>                     expression="//m0:symbol"/>
>>             </args>
>>          </payloadFactory>
>>          <class name="org.wso2.esb.mediator.ProtoBufMediator"/>
>>       </in>
>>
>>
>> *But what I get in the transformed message's body is*
>>
>> <soapenv:Body>
>> <GetQuote *xmlns="http://ws.apache.org/ns/synapse
>> <http://ws.apache.org/ns/synapse>"*>
>> <symbol>IBM</symbol>
>> </GetQuote>
>> </soapenv:Body>
>>
>> *My intention is not to have any namespaces inside message body. How can
>> I achieve this?*
>>
>>
>>
>> I tried removing namespace inside my custom mediator using,
>>
>>
>> *mc.getEnvelope().getBody().getFirstElement().getAllDeclaredNamespaces().remove();*
>>
>> It gave the following error when I send request from my client.
>>
>> WARN - FaultHandler ERROR_DETAIL : org.apache.synapse.SynapseException:
>> Error occured in the mediation of the class mediator
>>     at
>> org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:82)
>>     at
>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
>>     at
>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
>>     at
>> org.apache.synapse.mediators.filters.InMediator.mediate(InMediator.java:61)
>>     at
>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
>>     at
>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
>>     at
>> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
>>     at
>> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:228)
>>     at
>> org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
>>     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
>>     at
>> org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:411)
>>     at
>> org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:183)
>>     at
>> org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
>>     at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>     at java.lang.Thread.run(Thread.java:745)
>> Caused by: java.lang.IllegalStateException
>>     at java.util.HashMap$HashIterator.remove(HashMap.java:938)
>>     at
>> org.wso2.esb.mediator.ProtoBufMediator.mediate(ProtoBufMediator.java:36)
>>     at
>> org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:78)
>>     ... 15 more
>>
>>
>>  Thanks.
>>
>> --
>> Rajkumar Rajaratnam
>> Software Engineer | WSO2, Inc.
>>  Mobile +94777568639 | +94783498120
>>
>> _______________________________________________
>> Dev mailing list
>> [email protected]
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> Indika Sampath
> Software Engineer
> WSO2 Inc.
> http://wso2.com
>
> Phone: +94 716 424 744
> Blog: http://indikasampath.blogspot.com/
>
>
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
Regards,
*Shafreen*
Software Engineer
WSO2 Inc
Mobile : 077-556-395-1
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to