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

Reply via email to