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