cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Diefenbach, Anne" <anne.diefenb...@fkie.fraunhofer.de>
Subject AW: AW: Correct phase for XSLT In-Interceptor
Date Tue, 22 May 2012 15:37:05 GMT
From the quick glance I gave the transform feature before I started in on the interceptor,
I do think it wouldn't be able to do all the transformations I need. And I think I got my
interceptor - if someone could give it a glance to see if they think it should work I would
be thankful; I've never written one before and worked off an example for an outbound XSLT
interceptor (http://www.mail-archive.com/cxf-user@incubator.apache.org/msg04344.html).

Thanks a lot,
Anne

public class XSLTInInterceptor extends AbstractSoapInterceptor {
	private InputStream originalIS;

    public XSLTInInterceptor() {
        super(Phase.POST_STREAM);
    }

    public void handleMessage(SoapMessage message) throws Fault {
		// TODO Auto-generated method stub
    	if (message == message.getExchange().getInMessage()) {
    		originalIS = message.getContent(InputStream.class);
    		StreamSource src = new StreamSource(originalIS);
    		StreamSource stylesheet = new StreamSource(XSLTInInterceptor.class.getResourceAsStream("./Data.xsl"));
            StreamResult result = new StreamResult(new ByteArrayOutputStream());
     
            TransformerFactory factory = TransformerFactory.newInstance();
            try {
                Transformer t = factory.newTransformer(stylesheet);
                t.transform(src, result);
            } catch (TransformerConfigurationException e) {
                e.printStackTrace();
            } catch (TransformerException e) {
                e.printStackTrace();
            }

            message.setContent(InputStream.class,new ByteArrayInputStream(((ByteArrayOutputStream)result.getOutputStream()).toByteArray()));
    	}
    }
}

> -----Ursprüngliche Nachricht-----
> Von: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
> Gesendet: Dienstag, 22. Mai 2012 16:38
> An: users@cxf.apache.org
> Betreff: Re: AW: Correct phase for XSLT In-Interceptor
> 
> Hi Anne
> On 22/05/12 14:48, Diefenbach, Anne wrote:
> > Hi Freeman,
> >
> > thanks for the answer. Unfortunately, I've already written the
> stylesheet, so I'm pretty sure it's going to take me less time to write
> the interceptor than to familiarize myself with the transformation
> feature.
> >
> The transformation feature will perform much faster than the XSLT
> transformation and it is actually easy to setup.
> 
> However it has at least a couple of limitations that may require a
> custom transformation, specifically, no conditional transformations are
> supported (say, add an element only if a given text value is set to 'a',
> etc) and it is not possible to change only an individual sibling,
> example, given <a><b/><b/></a>, it is not possible to remove
a second
> <b/> only.
> 
> FYI, the transformation in interceptor runs at POST-STREAM phase which
> can also be changed, not sure though what stage you'd have to  run the
> XSLT transformation
> 
> HTH, Sergey
> 
> > Anne
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: Freeman Fang [mailto:freeman.fang@gmail.com]
> >> Gesendet: Dienstag, 22. Mai 2012 15:06
> >> An: users@cxf.apache.org
> >> Betreff: Re: Correct phase for XSLT In-Interceptor
> >>
> >> Hi,
> >>
> >> You probably needn't write that interceptor yourself, take a look at
> >> transformation feature[1] CXF already have, to see if it can meet your
> >> requirement.
> >> [1]http://cxf.apache.org/docs/transformationfeature.html
> >>
> >> Freeman
> >> On 2012-5-22, at 下午6:30, Diefenbach, Anne wrote:
> >>
> >>> Hi,
> >>>
> >>> I'm trying to determine the correct phase for an interceptor
> >>> performing XSL transformations on incoming messages. I can't figure
> >>> out if it's POST_STREAM, READ or one of the PROTOCOL phases. I'm
> >>> extending AbstractSoapInterceptor (and if that's not the correct
> >>> choice, I would be thankful if you could tell me that, too).
> >>>
> >>> Thanks for any tips,
> >>> Anne
> >>>
> >>
> >> ---------------------------------------------
> >> Freeman Fang
> >>
> >> FuseSource
> >> Email:ffang@fusesource.com
> >> Web: fusesource.com
> >> Twitter: freemanfang
> >> Blog: http://freemanfang.blogspot.com
> >> http://blog.sina.com.cn/u/1473905042
> >> weibo: http://weibo.com/u/1473905042
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >
> 
> 
> --
> Sergey Beryozkin
> 
> Talend Community Coders
> http://coders.talend.com/
> 
> Blog: http://sberyozkin.blogspot.com
Mime
View raw message