Hi

On Wed, Aug 3, 2011 at 11:52 AM, [email protected] <[email protected]> wrote:
> Thanks for your answer Sergey.
> I've had a look at the Transform feature but I can't found much usage
> examples of this feature.
>
> How could I drop out my two elements elements *conditionnally *(depending on
> the value of another sibling element: if <typeEnvoi>2</typeEnvoi>)?
>

That is not possible right now - you'll need to use a custom handler
to get conditional drops working

> Also, what would be the format to use to define the out transform Map?
> I see an example in the documentation:
>
>  Map<String, String> outTransformMap = Collections.singletonMap("{
> http://customers}*";, "*");
>

outTransformMap property is used to indicate which out elements need
to be transformed (their namespaces or/and names changed).

> But I can't figure out what it should be to drop the *2 *elements *(indicRdv
> *and *idJustification)*from the following envelope:
>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>  <soap:Body>
>    <ns2:validationCRI xmlns:ns2="http://example.mytests.com/";>
>      <arg0>
>        <cri>
>          <numInt>0000012426332</numInt>
>          *<indicRdv>false</indicRdv>* <!-- DELETE THIS ELEMENT ->
>                    *<idJustification>0</idJustification>* <!-- DELETE THIS
> ELEMENT ->
>        </cri>
>        <typeTransfert>2</typeTransfert>
>      </arg0>
>    </ns2:validationCRI>
>  </soap:Body>
> </soap:Envelope>
>

Use outDropElements list property, just list "indicRdv" and
"idJustification". If they were qualified then you'd use
"{http://example.mytests.com/}indicRdv";, etc...

Hope that helps, Sergey

> Thank you very much for your assistance.
>
>
>
>
>
>> On Tue, Aug 2, 2011 at 20:36, Sergey Beryozkin-5 [via CXF] <
>> [email protected]> wrote:
>>
>>> Hi
>>>
>>> Have a look please at Transform feature, that should be achieved
>>> easily enough by
>>> configuring outDropElements property.
>>> http://cxf.apache.org/docs/transformationfeature.html
>>> In CXF 2.4.1 one has to list all elements to be dropped, which should
>>> be ok for your case, looks like
>>> two simple element siblings need to be dropped;
>>> Aki added a support for deep drops too for incoming payloads, will be
>>> available in 2.4.2; sooner rather later the out transform writer will
>>> follow the suit :-)
>>>
>>> Cheers, Sergey
>>>
>>> On Tue, Aug 2, 2011 at 6:47 PM, [hidden 
>>> email]<http://user/SendEmail.jtp?type=node&node=4659881&i=0><[hidden
>>> email] <http://user/SendEmail.jtp?type=node&node=4659881&i=1>> wrote:
>>>
>>> > Hi everyone (this is my first post on this mailing-list)
>>> >
>>> > I would like to modify an outgoing SOAP Request. I would like to remove
>>> 2
>>> > xml nodes from the Envelope's body. I managed to set up an Interceptor
>>> and
>>> > get the generated String value of the message set to the endpoint.
>>> >
>>> > However, the following code does not seem to work as the outgoing
>>> message is
>>> > not edited as expected. Does anyone have some code or ideas on how to do
>>>
>>> > this?
>>> >
>>> > public class MyOutInterceptor extends AbstractSoapInterceptor {
>>> >
>>> > public MyOutInterceptor() {
>>> >        super(Phase.SEND);
>>> > }
>>> >
>>> > public void handleMessage(SoapMessage message) throws Fault {
>>> >        // Get message content for dirty editing...
>>> >        StringWriter writer = new StringWriter();
>>> >        CachedOutputStream cos  =
>>> > (CachedOutputStream)message.getContent(OutputStream.class);
>>> >        InputStream inputStream = cos.getInputStream();
>>> >        IOUtils.copy(inputStream, writer, "UTF-8");
>>> >        String content = writer.toString();
>>> >
>>> >        // remove the substrings from envelope...
>>> >        content = content.replace("<idJustification>0</idJustification>",
>>>
>>> > "");
>>> >        content = content.replace("<indicRdv>false</indicRdv>", "");
>>> >        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
>>>
>>> >        outputStream.write(content.getBytes(Charset.forName("UTF-8")));
>>> >        message.setContent(OutputStream.class, outputStream);
>>> > }
>>> >
>>> > Am I missing something? What is a better way to to this?
>>> > It seems too complicated to achieve my pretty simple requirement...
>>> >
>>>
>>>
>>>
>>> --
>>> Sergey Beryozkin
>>>
>>> http://sberyozkin.blogspot.com
>>> Talend - http://www.talend.com
>>>
>>>
>>> ------------------------------
>>>  If you reply to this email, your message will be added to the discussion
>>> below:
>>>
>>> http://cxf.547215.n5.nabble.com/How-To-Modify-The-Raw-XML-message-of-an-Outbound-CXF-Request-tp4659707p4659881.html
>>>  To unsubscribe from cxf-user, click 
>>> here<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=547216&code=dG91dGNvbkBnbWFpbC5jb218NTQ3MjE2fC03MjM4ODg4OTM=>.
>>>
>>>
>>
>>
>



-- 
Sergey Beryozkin

http://sberyozkin.blogspot.com
Talend - http://www.talend.com

Reply via email to