Hi Rodel, that is strange. there is a unit test case in cxf that handles exactly this use case.
http://svn.apache.org/repos/asf/cxf/trunk/api/src/test/java/org/apache/cxf/staxutils/transform/OutTransformWriterTest's testNamespacedAttributeDropElement does exactly this ReplyTo removal. which cxf version are you using? And can you share the configuration? regards, aki 2013/7/17 Rodel Talampas <[email protected]>: > Hi Aki, > > Thanks for the reply. I was able to make it work but it also removes the > next tag after it. > e.g. > > Action > MessageId > To > ReplyTo > From > > When i remove the replyto, the from is also removed. > I tried to remove Action, and ALL of the header attributes where removed. > > Any clarification will be of help. > > Regards, > Rodel > > > > > On Wed, Jul 17, 2013 at 2:56 AM, Aki Yoshida <[email protected]> wrote: >> >> I am moving this thread from dev@cxf to users@cxf. >> >> One approach to remove the replyTo element is to use the transform >> feature at the particular endpoint or at the bus where you want to >> remove the header for the outgoing messages. >> >> You can take a look at this example: >> >> http://cxf.apache.org/docs/transformationfeature.html#TransformationFeature-Droppingoutputandinputelements >> >> For your case, that means you set the property as >> <entry key="{http://www.w3.org/2005/08/addressing}ReplyTo" value=""/> >> >> regards, aki >> >> 2013/7/16 Rodel <[email protected]>: >> > I've been searching for ways to remove the WSA Addressing Property >> > ReplyTo >> > from the Client Outbound as the WebService does not require ReplyTo for >> > synchronous messages. >> > >> > I've created outbound interceptors (from simple to saaj) and tried many >> > Phases but to no avail. Any help will be very much appreciated. >> > >> > Simple Outbound Interceptor: >> > >> > public class GP10ErrataWSASoapOutInterceptor extends >> > BaseWSSoapInterceptor{ >> > >> > public GP10ErrataWSASoapOutInterceptor() { >> > super(Phase.WRITE); >> > this.addBefore(SoapOutInterceptor.class.getName()); >> > } >> > >> > private static final Logger LOGGER = Logger >> > >> > .getLogger(GP10ErrataWSASoapOutInterceptor.class.getName()); >> > >> > private AddressingPropertiesImpl maps; >> > >> > @Override >> > protected void processMessage(SoapMessage message) { >> > LOGGER.debug("<<<<<<<< processMessage() START >> > >>>>>>>>"); >> > maps = getMAPs(message, true, true); >> > List <Header> list = new >> > ArrayList<Header>(message.getHeaders()); >> > List <Header> origList = message.getHeaders(); >> > if (maps!=null && maps.getReplyTo() != null && >> > maps.getReplyTo().getAddress() != null >> > && >> > maps.getReplyTo().getAddress().getValue() != null) { >> > String address = >> > maps.getReplyTo().getAddress().getValue(); >> > // if reply to contains "anonymous", it means >> > the reply to was not set >> > boolean isAnonymous = >> > address.contains("/anonymous") || >> > address.contains("/none"); >> > LOGGER.debug("<<<<<<<< isAnonymous : >> > "+isAnonymous); >> > >> > if (isAnonymous) { >> > LOGGER.debug("<<<<<<<< isAnonymous >> > >>>>>>>>"); >> > Header replyTo = null; >> > for (Header header : list) { >> > if >> > (header.getName().getLocalPart().equals("ReplyTo")) >> > replyTo = header; >> > } >> > list.remove(replyTo); >> > >> > for (Header h: list) >> > System.out.println(h.getName()); >> > >> > // do something silly... enforced >> > removal of >> > all list and setting in the new list >> > >> > message.getHeaders().removeAll(origList); >> > message.getHeaders().addAll(list); >> > } >> > } >> > >> > LOGGER.debug(">>>>>>>> processMessage() ENDED >> > <<<<<<<<"); >> > } >> > } >> > >> > >> > public abstract class BaseWSSoapInterceptor extends >> > AbstractSoapInterceptor{ >> > >> > >> > private static final Logger LOGGER = Logger >> > >> > .getLogger(BaseWSSoapInterceptor.class.getName()); >> > >> > public BaseWSSoapInterceptor(String phase) { >> > super(phase); >> > } >> > >> > public void handleMessage(SoapMessage message) throws Fault { >> > LOGGER.debug("<<<<<<<< handleMessage() START >>>>>>>>"); >> > processMessage(message); >> > LOGGER.debug(">>>>>>>> handleMessage() ENDED <<<<<<<<"); >> > } >> > >> > /** >> > * This method needs to be overriden by the child class to do >> > specific >> > processing >> > * @param message >> > */ >> > protected abstract void processMessage(SoapMessage message); >> > >> > protected AddressingPropertiesImpl getMAPs(SoapMessage message, >> > boolean isProviderContext, boolean isOutbound) { >> > AddressingPropertiesImpl maps = null; >> > maps = ContextUtils >> > .retrieveMAPs(message, >> > isProviderContext, isOutbound); >> > if (maps!=null) >> > LOGGER.info("MAPs retrieved from message {" + >> > maps.toString() + "}"); >> > else LOGGER.info("No WS Addressing SOAP Header >> > Found..."); >> > return maps; >> > } >> > >> > } >> > >> > >> > >> > >> > >> > -- >> > View this message in context: >> > http://cxf.547215.n5.nabble.com/Removing-Addressing-Property-ReplyTo-tp5730963.html >> > Sent from the cxf-dev mailing list archive at Nabble.com. > > > > > -- > Thanks, > Rodel Talampas > LinkedIn: http://sg.linkedin.com/pub/rodel-talampas/32/187/ba4
