You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ay...@apache.org on 2015/02/02 17:29:13 UTC

cxf git commit: remove DOS linebreaks

Repository: cxf
Updated Branches:
  refs/heads/master ce6515c77 -> 51996bbc5


remove DOS linebreaks


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/51996bbc
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/51996bbc
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/51996bbc

Branch: refs/heads/master
Commit: 51996bbc505d869fcdfdd2e15cb418f16840d9e6
Parents: ce6515c
Author: Akitoshi Yoshida <ay...@apache.org>
Authored: Mon Feb 2 17:28:16 2015 +0100
Committer: Akitoshi Yoshida <ay...@apache.org>
Committed: Mon Feb 2 17:28:44 2015 +0100

----------------------------------------------------------------------
 .../transform/AbstractXSLTInterceptor.java      | 176 ++++----
 .../cxf/feature/transform/Messages.properties   |  50 +--
 .../cxf/feature/transform/XSLTFeature.java      | 120 +++---
 .../feature/transform/XSLTInInterceptor.java    | 258 ++++++------
 .../feature/transform/XSLTOutInterceptor.java   | 410 +++++++++----------
 .../apache/cxf/feature/transform/XSLTUtils.java | 202 ++++-----
 6 files changed, 608 insertions(+), 608 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/51996bbc/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java b/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java
index 2b92505..b18ffcf 100644
--- a/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java
+++ b/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java
@@ -1,88 +1,88 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.cxf.feature.transform;
-
-
-import java.io.InputStream;
-
-import javax.xml.stream.XMLStreamException;
-import javax.xml.transform.Templates;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-
-import org.w3c.dom.Document;
-
-import org.apache.cxf.common.classloader.ClassLoaderUtils;
-import org.apache.cxf.message.Message;
-import org.apache.cxf.message.MessageUtils;
-import org.apache.cxf.phase.AbstractPhaseInterceptor;
-import org.apache.cxf.staxutils.StaxUtils;
-
-
-/**
- * Creates an XMLStreamReader from the InputStream on the Message.
- */
-public abstract class AbstractXSLTInterceptor extends AbstractPhaseInterceptor<Message> {
-    private static final TransformerFactory TRANSFORM_FACTORIY = TransformerFactory.newInstance();
-
-    private String contextPropertyName;
-    private final Templates xsltTemplate;
-        
-    public AbstractXSLTInterceptor(String phase, Class<?> before, Class<?> after, String xsltPath) {
-        super(phase);
-        if (before != null) {
-            addBefore(before.getName());
-        }
-        if (after != null) {
-            addAfter(after.getName());
-        }
-        
-        try {
-            InputStream xsltStream = ClassLoaderUtils.getResourceAsStream(xsltPath, this.getClass());
-            if (xsltStream == null) {
-                throw new IllegalArgumentException("Cannot load XSLT from path: " + xsltPath);
-            }
-            Document doc = StaxUtils.read(xsltStream);
-            xsltTemplate = TRANSFORM_FACTORIY.newTemplates(new DOMSource(doc));
-        } catch (TransformerConfigurationException e) {
-            throw new IllegalArgumentException(
-                                               String.format("Cannot create XSLT template from path: %s, error: ",
-                                                             xsltPath, e.getException()), e);
-        } catch (XMLStreamException e) {
-            throw new IllegalArgumentException(
-                                               String.format("Cannot create XSLT template from path: %s, error: ",
-                                                             xsltPath, e.getNestedException()), e);
-        }        
-    }
-
-    public void setContextPropertyName(String propertyName) {
-        contextPropertyName = propertyName;
-    }
-
-    protected boolean checkContextProperty(Message message) {
-        return contextPropertyName != null 
-            && !MessageUtils.getContextualBoolean(message, contextPropertyName, false);
-    }
-    
-    protected Templates getXSLTTemplate() {
-        return xsltTemplate;
-    }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.feature.transform;
+
+
+import java.io.InputStream;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.Templates;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+
+import org.w3c.dom.Document;
+
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.staxutils.StaxUtils;
+
+
+/**
+ * Creates an XMLStreamReader from the InputStream on the Message.
+ */
+public abstract class AbstractXSLTInterceptor extends AbstractPhaseInterceptor<Message> {
+    private static final TransformerFactory TRANSFORM_FACTORIY = TransformerFactory.newInstance();
+
+    private String contextPropertyName;
+    private final Templates xsltTemplate;
+        
+    public AbstractXSLTInterceptor(String phase, Class<?> before, Class<?> after, String xsltPath) {
+        super(phase);
+        if (before != null) {
+            addBefore(before.getName());
+        }
+        if (after != null) {
+            addAfter(after.getName());
+        }
+        
+        try {
+            InputStream xsltStream = ClassLoaderUtils.getResourceAsStream(xsltPath, this.getClass());
+            if (xsltStream == null) {
+                throw new IllegalArgumentException("Cannot load XSLT from path: " + xsltPath);
+            }
+            Document doc = StaxUtils.read(xsltStream);
+            xsltTemplate = TRANSFORM_FACTORIY.newTemplates(new DOMSource(doc));
+        } catch (TransformerConfigurationException e) {
+            throw new IllegalArgumentException(
+                                               String.format("Cannot create XSLT template from path: %s, error: ",
+                                                             xsltPath, e.getException()), e);
+        } catch (XMLStreamException e) {
+            throw new IllegalArgumentException(
+                                               String.format("Cannot create XSLT template from path: %s, error: ",
+                                                             xsltPath, e.getNestedException()), e);
+        }        
+    }
+
+    public void setContextPropertyName(String propertyName) {
+        contextPropertyName = propertyName;
+    }
+
+    protected boolean checkContextProperty(Message message) {
+        return contextPropertyName != null 
+            && !MessageUtils.getContextualBoolean(message, contextPropertyName, false);
+    }
+    
+    protected Templates getXSLTTemplate() {
+        return xsltTemplate;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/51996bbc/core/src/main/java/org/apache/cxf/feature/transform/Messages.properties
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/feature/transform/Messages.properties b/core/src/main/java/org/apache/cxf/feature/transform/Messages.properties
index a473717..e6e31a9 100644
--- a/core/src/main/java/org/apache/cxf/feature/transform/Messages.properties
+++ b/core/src/main/java/org/apache/cxf/feature/transform/Messages.properties
@@ -1,25 +1,25 @@
-#
-#
-#    Licensed to the Apache Software Foundation (ASF) under one
-#    or more contributor license agreements. See the NOTICE file
-#    distributed with this work for additional information
-#    regarding copyright ownership. The ASF licenses this file
-#    to you under the Apache License, Version 2.0 (the
-#    "License"); you may not use this file except in compliance
-#    with the License. You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing,
-#    software distributed under the License is distributed on an
-#    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#    KIND, either express or implied. See the License for the
-#    specific language governing permissions and limitations
-#    under the License.
-#
-#
-STAX_COPY=Could not copy XML stream: {0}.
-STREAM_COPY=Could not copy stream: {0}.
-READER_COPY=Could not copy reader: {0}.
-GET_CACHED_INPUT_STREAM=Could not get cached input stream: {0}.
-XML_TRANSFORM=XSL transformation error: {0}.
+#
+#
+#    Licensed to the Apache Software Foundation (ASF) under one
+#    or more contributor license agreements. See the NOTICE file
+#    distributed with this work for additional information
+#    regarding copyright ownership. The ASF licenses this file
+#    to you under the Apache License, Version 2.0 (the
+#    "License"); you may not use this file except in compliance
+#    with the License. You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing,
+#    software distributed under the License is distributed on an
+#    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#    KIND, either express or implied. See the License for the
+#    specific language governing permissions and limitations
+#    under the License.
+#
+#
+STAX_COPY=Could not copy XML stream: {0}.
+STREAM_COPY=Could not copy stream: {0}.
+READER_COPY=Could not copy reader: {0}.
+GET_CACHED_INPUT_STREAM=Could not get cached input stream: {0}.
+XML_TRANSFORM=XSL transformation error: {0}.

http://git-wip-us.apache.org/repos/asf/cxf/blob/51996bbc/core/src/main/java/org/apache/cxf/feature/transform/XSLTFeature.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/feature/transform/XSLTFeature.java b/core/src/main/java/org/apache/cxf/feature/transform/XSLTFeature.java
index 8c913ac..511a61c 100644
--- a/core/src/main/java/org/apache/cxf/feature/transform/XSLTFeature.java
+++ b/core/src/main/java/org/apache/cxf/feature/transform/XSLTFeature.java
@@ -1,60 +1,60 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.feature.transform;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.common.injection.NoJSR250Annotations;
-import org.apache.cxf.feature.AbstractFeature;
-import org.apache.cxf.interceptor.InterceptorProvider;
-
-/**
- * This class defines a feature is used to transform message using XSLT script. 
- * If this feature is present and inXSLTPath/outXLSTPath are initialised,
- * client and endpoint will transform incoming and outgoing messages correspondingly. 
- * Attention: actually the feature breaks streaming 
- * (can be fixed in further versions when XSLT engine supports XML stream). 
- */
-@NoJSR250Annotations
-public class XSLTFeature extends AbstractFeature {
-    private String inXSLTPath;
-    private String outXSLTPath;
-    
-    @Override
-    protected void initializeProvider(InterceptorProvider provider, Bus bus) {
-        if (inXSLTPath != null) {
-            XSLTInInterceptor in = new XSLTInInterceptor(inXSLTPath);
-            provider.getInInterceptors().add(in);            
-        }
-        
-        if (outXSLTPath != null) {
-            XSLTOutInterceptor out = new XSLTOutInterceptor(outXSLTPath);
-            provider.getOutInterceptors().add(out);            
-            provider.getOutFaultInterceptors().add(out);            
-        }
-    }
-
-    public void setInXSLTPath(String inXSLTPath) {
-        this.inXSLTPath = inXSLTPath;
-    }
-
-    public void setOutXSLTPath(String outXSLTPath) {
-        this.outXSLTPath = outXSLTPath;
-    }
-
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.feature.transform;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.common.injection.NoJSR250Annotations;
+import org.apache.cxf.feature.AbstractFeature;
+import org.apache.cxf.interceptor.InterceptorProvider;
+
+/**
+ * This class defines a feature is used to transform message using XSLT script. 
+ * If this feature is present and inXSLTPath/outXLSTPath are initialised,
+ * client and endpoint will transform incoming and outgoing messages correspondingly. 
+ * Attention: actually the feature breaks streaming 
+ * (can be fixed in further versions when XSLT engine supports XML stream). 
+ */
+@NoJSR250Annotations
+public class XSLTFeature extends AbstractFeature {
+    private String inXSLTPath;
+    private String outXSLTPath;
+    
+    @Override
+    protected void initializeProvider(InterceptorProvider provider, Bus bus) {
+        if (inXSLTPath != null) {
+            XSLTInInterceptor in = new XSLTInInterceptor(inXSLTPath);
+            provider.getInInterceptors().add(in);            
+        }
+        
+        if (outXSLTPath != null) {
+            XSLTOutInterceptor out = new XSLTOutInterceptor(outXSLTPath);
+            provider.getOutInterceptors().add(out);            
+            provider.getOutFaultInterceptors().add(out);            
+        }
+    }
+
+    public void setInXSLTPath(String inXSLTPath) {
+        this.inXSLTPath = inXSLTPath;
+    }
+
+    public void setOutXSLTPath(String outXSLTPath) {
+        this.outXSLTPath = outXSLTPath;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/51996bbc/core/src/main/java/org/apache/cxf/feature/transform/XSLTInInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/feature/transform/XSLTInInterceptor.java b/core/src/main/java/org/apache/cxf/feature/transform/XSLTInInterceptor.java
index 4596009..5430055 100644
--- a/core/src/main/java/org/apache/cxf/feature/transform/XSLTInInterceptor.java
+++ b/core/src/main/java/org/apache/cxf/feature/transform/XSLTInInterceptor.java
@@ -1,129 +1,129 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.cxf.feature.transform;
-
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.logging.Logger;
-
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.interceptor.StaxInInterceptor;
-import org.apache.cxf.io.CachedOutputStream;
-import org.apache.cxf.message.Message;
-import org.apache.cxf.phase.Phase;
-import org.apache.cxf.staxutils.StaxUtils;
-
-
-/** Class provides XSLT transformation of incoming message.
- * Actually it breaks streaming (can be fixed in further versions when XSLT engine supports XML stream)
- */
-public class XSLTInInterceptor extends AbstractXSLTInterceptor {
-    private static final Logger LOG = LogUtils.getL7dLogger(XSLTInInterceptor.class);    
-
-    public XSLTInInterceptor(String xsltPath) {
-        super(Phase.POST_STREAM, StaxInInterceptor.class, null, xsltPath);
-    }
-
-    public XSLTInInterceptor(String phase, Class<?> before, Class<?> after, String xsltPath) {
-        super(phase, before, after, xsltPath);
-    }
-
-    @Override
-    public void handleMessage(Message message) {
-        if (!isRequestor(message) && isGET(message) || checkContextProperty(message)) {
-            return;
-        }
-
-        // 1. Try to get and transform XMLStreamReader message content
-        XMLStreamReader xReader = message.getContent(XMLStreamReader.class);
-        if (xReader != null) {
-            transformXReader(message, xReader);
-        } else {
-            // 2. Try to get and transform InputStream message content
-            InputStream is = message.getContent(InputStream.class);
-            if (is != null) {
-                transformIS(message, is);
-            } else {
-                // 3. Try to get and transform Reader message content (actually used for JMS TextMessage)
-                Reader reader = message.getContent(Reader.class);
-                if (reader != null) {
-                    transformReader(message, reader);
-                }
-            }
-        }
-    }
-
-    protected void transformXReader(Message message, XMLStreamReader xReader) {
-        CachedOutputStream cachedOS = new CachedOutputStream();
-        try {
-            StaxUtils.copy(xReader, cachedOS);
-            InputStream transformedIS = XSLTUtils.transform(getXSLTTemplate(), cachedOS.getInputStream());
-            XMLStreamReader transformedReader = StaxUtils.createXMLStreamReader(transformedIS);
-            message.setContent(XMLStreamReader.class, transformedReader);
-        } catch (XMLStreamException e) {
-            throw new Fault("STAX_COPY", LOG, e, e.getMessage());
-        } catch (IOException e) {
-            throw new Fault("GET_CACHED_INPUT_STREAM", LOG, e, e.getMessage());
-        } finally {
-            try {
-                StaxUtils.close(xReader);
-            } catch (XMLStreamException ex) {
-                throw new Fault(ex);
-            }
-            try {
-                cachedOS.close();
-            } catch (IOException e) {
-                LOG.warning("Cannot close stream after transformation: " + e.getMessage());
-            }
-        }
-    }
-    
-    protected void transformIS(Message message, InputStream is) {
-        try {
-            InputStream transformedIS = XSLTUtils.transform(getXSLTTemplate(), is);
-            message.setContent(InputStream.class, transformedIS);
-        } finally {
-            try {
-                is.close();
-            } catch (IOException e) {
-                LOG.warning("Cannot close stream after transformation: " + e.getMessage());
-            }
-        }
-    }
-
-    protected void transformReader(Message message, Reader reader) {
-        try {
-            Reader transformedReader = XSLTUtils.transform(getXSLTTemplate(), reader);
-            message.setContent(Reader.class, transformedReader);
-        } finally {
-            try {
-                reader.close();
-            } catch (IOException e) {
-                LOG.warning("Cannot close stream after transformation: " + e.getMessage());
-            }
-        }
-    }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.feature.transform;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.logging.Logger;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.interceptor.StaxInInterceptor;
+import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.staxutils.StaxUtils;
+
+
+/** Class provides XSLT transformation of incoming message.
+ * Actually it breaks streaming (can be fixed in further versions when XSLT engine supports XML stream)
+ */
+public class XSLTInInterceptor extends AbstractXSLTInterceptor {
+    private static final Logger LOG = LogUtils.getL7dLogger(XSLTInInterceptor.class);    
+
+    public XSLTInInterceptor(String xsltPath) {
+        super(Phase.POST_STREAM, StaxInInterceptor.class, null, xsltPath);
+    }
+
+    public XSLTInInterceptor(String phase, Class<?> before, Class<?> after, String xsltPath) {
+        super(phase, before, after, xsltPath);
+    }
+
+    @Override
+    public void handleMessage(Message message) {
+        if (!isRequestor(message) && isGET(message) || checkContextProperty(message)) {
+            return;
+        }
+
+        // 1. Try to get and transform XMLStreamReader message content
+        XMLStreamReader xReader = message.getContent(XMLStreamReader.class);
+        if (xReader != null) {
+            transformXReader(message, xReader);
+        } else {
+            // 2. Try to get and transform InputStream message content
+            InputStream is = message.getContent(InputStream.class);
+            if (is != null) {
+                transformIS(message, is);
+            } else {
+                // 3. Try to get and transform Reader message content (actually used for JMS TextMessage)
+                Reader reader = message.getContent(Reader.class);
+                if (reader != null) {
+                    transformReader(message, reader);
+                }
+            }
+        }
+    }
+
+    protected void transformXReader(Message message, XMLStreamReader xReader) {
+        CachedOutputStream cachedOS = new CachedOutputStream();
+        try {
+            StaxUtils.copy(xReader, cachedOS);
+            InputStream transformedIS = XSLTUtils.transform(getXSLTTemplate(), cachedOS.getInputStream());
+            XMLStreamReader transformedReader = StaxUtils.createXMLStreamReader(transformedIS);
+            message.setContent(XMLStreamReader.class, transformedReader);
+        } catch (XMLStreamException e) {
+            throw new Fault("STAX_COPY", LOG, e, e.getMessage());
+        } catch (IOException e) {
+            throw new Fault("GET_CACHED_INPUT_STREAM", LOG, e, e.getMessage());
+        } finally {
+            try {
+                StaxUtils.close(xReader);
+            } catch (XMLStreamException ex) {
+                throw new Fault(ex);
+            }
+            try {
+                cachedOS.close();
+            } catch (IOException e) {
+                LOG.warning("Cannot close stream after transformation: " + e.getMessage());
+            }
+        }
+    }
+    
+    protected void transformIS(Message message, InputStream is) {
+        try {
+            InputStream transformedIS = XSLTUtils.transform(getXSLTTemplate(), is);
+            message.setContent(InputStream.class, transformedIS);
+        } finally {
+            try {
+                is.close();
+            } catch (IOException e) {
+                LOG.warning("Cannot close stream after transformation: " + e.getMessage());
+            }
+        }
+    }
+
+    protected void transformReader(Message message, Reader reader) {
+        try {
+            Reader transformedReader = XSLTUtils.transform(getXSLTTemplate(), reader);
+            message.setContent(Reader.class, transformedReader);
+        } finally {
+            try {
+                reader.close();
+            } catch (IOException e) {
+                LOG.warning("Cannot close stream after transformation: " + e.getMessage());
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/51996bbc/core/src/main/java/org/apache/cxf/feature/transform/XSLTOutInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/feature/transform/XSLTOutInterceptor.java b/core/src/main/java/org/apache/cxf/feature/transform/XSLTOutInterceptor.java
index 3a12c3c..6044498 100644
--- a/core/src/main/java/org/apache/cxf/feature/transform/XSLTOutInterceptor.java
+++ b/core/src/main/java/org/apache/cxf/feature/transform/XSLTOutInterceptor.java
@@ -1,205 +1,205 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.cxf.feature.transform;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.logging.Logger;
-
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-import javax.xml.transform.Templates;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.helpers.IOUtils;
-import org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor;
-import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.interceptor.StaxOutInterceptor;
-import org.apache.cxf.io.CachedOutputStream;
-import org.apache.cxf.io.CachedOutputStreamCallback;
-import org.apache.cxf.io.CachedWriter;
-import org.apache.cxf.message.Message;
-import org.apache.cxf.phase.Phase;
-import org.apache.cxf.staxutils.DelegatingXMLStreamWriter;
-import org.apache.cxf.staxutils.StaxUtils;
-
-/** Class provides XSLT transformation of outgoing message.
- * Actually it breaks streaming (can be fixed in further versions when XSLT engine supports XML stream)
- */
-public class XSLTOutInterceptor extends AbstractXSLTInterceptor {
-    private static final Logger LOG = LogUtils.getL7dLogger(XSLTOutInterceptor.class);
-
-    public XSLTOutInterceptor(String xsltPath) {
-        super(Phase.PRE_STREAM, StaxOutInterceptor.class, null, xsltPath);
-    }
-
-    public XSLTOutInterceptor(String phase, Class<?> before, Class<?> after, String xsltPath) {
-        super(phase, before, after, xsltPath);
-    }
-
-    @Override
-    public void handleMessage(Message message) {
-        if (checkContextProperty(message)) {
-            return;
-        }
-
-        // 1. Try to get and transform XMLStreamWriter message content
-        XMLStreamWriter xWriter = message.getContent(XMLStreamWriter.class);
-        if (xWriter != null) {
-            transformXWriter(message, xWriter);
-        } else {
-            // 2. Try to get and transform OutputStream message content
-            OutputStream out = message.getContent(OutputStream.class);
-            if (out != null) {
-                transformOS(message, out);
-            } else {
-                // 3. Try to get and transform Writer message content (actually used for JMS TextMessage)
-                Writer writer = message.getContent(Writer.class);
-                if (writer != null) {
-                    transformWriter(message, writer);
-                }
-            }
-        }
-    }
-
-    protected void transformXWriter(Message message, XMLStreamWriter xWriter) {
-        CachedWriter writer = new CachedWriter();
-        XMLStreamWriter delegate = StaxUtils.createXMLStreamWriter(writer);
-        XSLTStreamWriter wrapper = new XSLTStreamWriter(getXSLTTemplate(), writer, delegate, xWriter);
-        message.setContent(XMLStreamWriter.class, wrapper);
-        message.put(AbstractOutDatabindingInterceptor.DISABLE_OUTPUTSTREAM_OPTIMIZATION,
-                    Boolean.TRUE);
-    }
-
-    protected void transformOS(Message message, OutputStream out) {
-        CachedOutputStream wrapper = new CachedOutputStream();
-        CachedOutputStreamCallback callback = new XSLTCachedOutputStreamCallback(getXSLTTemplate(), out);
-        wrapper.registerCallback(callback);
-        message.setContent(OutputStream.class, wrapper);
-    }
-
-    protected void transformWriter(Message message, Writer writer) {
-        XSLTCachedWriter wrapper = new XSLTCachedWriter(getXSLTTemplate(), writer);
-        message.setContent(Writer.class, wrapper);
-    }
-
-
-    public static class XSLTStreamWriter extends DelegatingXMLStreamWriter {
-        private final Templates xsltTemplate;
-        private final CachedWriter cachedWriter;
-        private final XMLStreamWriter origXWriter;
-
-        public XSLTStreamWriter(Templates xsltTemplate, CachedWriter cachedWriter,
-                                XMLStreamWriter delegateXWriter, XMLStreamWriter origXWriter) {
-            super(delegateXWriter);
-            this.xsltTemplate = xsltTemplate;
-            this.cachedWriter = cachedWriter;
-            this.origXWriter = origXWriter;
-        }
-
-        @Override
-        public void close() {
-            Reader transformedReader = null;
-            try {
-                super.flush();
-                transformedReader = XSLTUtils.transform(xsltTemplate, cachedWriter.getReader());
-                StaxUtils.copy(new StreamSource(transformedReader), origXWriter);
-            } catch (XMLStreamException e) {
-                throw new Fault("STAX_COPY", LOG, e, e.getMessage());
-            } catch (IOException e) {
-                throw new Fault("GET_CACHED_INPUT_STREAM", LOG, e, e.getMessage());
-            } finally {
-                try {
-                    if (transformedReader != null) {
-                        transformedReader.close();
-                    }
-                    cachedWriter.close();
-                    StaxUtils.close(origXWriter);
-                    super.close();
-                } catch (Exception e) {
-                    LOG.warning("Cannot close stream after transformation: " + e.getMessage());
-                }
-            }
-        }
-    }
-
-    public static class XSLTCachedOutputStreamCallback implements CachedOutputStreamCallback {
-        private final Templates xsltTemplate;
-        private final OutputStream origStream;
-
-        public XSLTCachedOutputStreamCallback(Templates xsltTemplate, OutputStream origStream) {
-            this.xsltTemplate = xsltTemplate;
-            this.origStream = origStream;
-        }
-
-        @Override
-        public void onFlush(CachedOutputStream wrapper) {            
-        }
-
-        @Override
-        public void onClose(CachedOutputStream wrapper) {
-            InputStream transformedStream = null;
-            try {
-                transformedStream = XSLTUtils.transform(xsltTemplate, wrapper.getInputStream());
-                IOUtils.copyAndCloseInput(transformedStream, origStream);
-            } catch (IOException e) {
-                throw new Fault("STREAM_COPY", LOG, e, e.getMessage());
-            } finally {
-                try {
-                    origStream.close();
-                } catch (IOException e) {
-                    LOG.warning("Cannot close stream after transformation: " + e.getMessage());
-                }
-            }
-        }
-    }
-
-    public static class XSLTCachedWriter extends CachedWriter {
-        private final Templates xsltTemplate;
-        private final Writer origWriter;
-
-        public XSLTCachedWriter(Templates xsltTemplate, Writer origWriter) {
-            this.xsltTemplate = xsltTemplate;
-            this.origWriter = origWriter;
-        }
-
-        @Override
-        protected void doClose() {
-            Reader transformedReader = null;
-            try {
-                transformedReader = XSLTUtils.transform(xsltTemplate, getReader());
-                IOUtils.copyAndCloseInput(transformedReader, origWriter, IOUtils.DEFAULT_BUFFER_SIZE);
-            } catch (IOException e) {
-                throw new Fault("READER_COPY", LOG, e, e.getMessage());
-            } finally {
-                try {
-                    origWriter.close();
-                } catch (IOException e) {
-                    LOG.warning("Cannot close stream after transformation: " + e.getMessage());
-                }
-            }
-        }
-    }
-
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.feature.transform;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.logging.Logger;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.Templates;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor;
+import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.interceptor.StaxOutInterceptor;
+import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.io.CachedOutputStreamCallback;
+import org.apache.cxf.io.CachedWriter;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.staxutils.DelegatingXMLStreamWriter;
+import org.apache.cxf.staxutils.StaxUtils;
+
+/** Class provides XSLT transformation of outgoing message.
+ * Actually it breaks streaming (can be fixed in further versions when XSLT engine supports XML stream)
+ */
+public class XSLTOutInterceptor extends AbstractXSLTInterceptor {
+    private static final Logger LOG = LogUtils.getL7dLogger(XSLTOutInterceptor.class);
+
+    public XSLTOutInterceptor(String xsltPath) {
+        super(Phase.PRE_STREAM, StaxOutInterceptor.class, null, xsltPath);
+    }
+
+    public XSLTOutInterceptor(String phase, Class<?> before, Class<?> after, String xsltPath) {
+        super(phase, before, after, xsltPath);
+    }
+
+    @Override
+    public void handleMessage(Message message) {
+        if (checkContextProperty(message)) {
+            return;
+        }
+
+        // 1. Try to get and transform XMLStreamWriter message content
+        XMLStreamWriter xWriter = message.getContent(XMLStreamWriter.class);
+        if (xWriter != null) {
+            transformXWriter(message, xWriter);
+        } else {
+            // 2. Try to get and transform OutputStream message content
+            OutputStream out = message.getContent(OutputStream.class);
+            if (out != null) {
+                transformOS(message, out);
+            } else {
+                // 3. Try to get and transform Writer message content (actually used for JMS TextMessage)
+                Writer writer = message.getContent(Writer.class);
+                if (writer != null) {
+                    transformWriter(message, writer);
+                }
+            }
+        }
+    }
+
+    protected void transformXWriter(Message message, XMLStreamWriter xWriter) {
+        CachedWriter writer = new CachedWriter();
+        XMLStreamWriter delegate = StaxUtils.createXMLStreamWriter(writer);
+        XSLTStreamWriter wrapper = new XSLTStreamWriter(getXSLTTemplate(), writer, delegate, xWriter);
+        message.setContent(XMLStreamWriter.class, wrapper);
+        message.put(AbstractOutDatabindingInterceptor.DISABLE_OUTPUTSTREAM_OPTIMIZATION,
+                    Boolean.TRUE);
+    }
+
+    protected void transformOS(Message message, OutputStream out) {
+        CachedOutputStream wrapper = new CachedOutputStream();
+        CachedOutputStreamCallback callback = new XSLTCachedOutputStreamCallback(getXSLTTemplate(), out);
+        wrapper.registerCallback(callback);
+        message.setContent(OutputStream.class, wrapper);
+    }
+
+    protected void transformWriter(Message message, Writer writer) {
+        XSLTCachedWriter wrapper = new XSLTCachedWriter(getXSLTTemplate(), writer);
+        message.setContent(Writer.class, wrapper);
+    }
+
+
+    public static class XSLTStreamWriter extends DelegatingXMLStreamWriter {
+        private final Templates xsltTemplate;
+        private final CachedWriter cachedWriter;
+        private final XMLStreamWriter origXWriter;
+
+        public XSLTStreamWriter(Templates xsltTemplate, CachedWriter cachedWriter,
+                                XMLStreamWriter delegateXWriter, XMLStreamWriter origXWriter) {
+            super(delegateXWriter);
+            this.xsltTemplate = xsltTemplate;
+            this.cachedWriter = cachedWriter;
+            this.origXWriter = origXWriter;
+        }
+
+        @Override
+        public void close() {
+            Reader transformedReader = null;
+            try {
+                super.flush();
+                transformedReader = XSLTUtils.transform(xsltTemplate, cachedWriter.getReader());
+                StaxUtils.copy(new StreamSource(transformedReader), origXWriter);
+            } catch (XMLStreamException e) {
+                throw new Fault("STAX_COPY", LOG, e, e.getMessage());
+            } catch (IOException e) {
+                throw new Fault("GET_CACHED_INPUT_STREAM", LOG, e, e.getMessage());
+            } finally {
+                try {
+                    if (transformedReader != null) {
+                        transformedReader.close();
+                    }
+                    cachedWriter.close();
+                    StaxUtils.close(origXWriter);
+                    super.close();
+                } catch (Exception e) {
+                    LOG.warning("Cannot close stream after transformation: " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    public static class XSLTCachedOutputStreamCallback implements CachedOutputStreamCallback {
+        private final Templates xsltTemplate;
+        private final OutputStream origStream;
+
+        public XSLTCachedOutputStreamCallback(Templates xsltTemplate, OutputStream origStream) {
+            this.xsltTemplate = xsltTemplate;
+            this.origStream = origStream;
+        }
+
+        @Override
+        public void onFlush(CachedOutputStream wrapper) {            
+        }
+
+        @Override
+        public void onClose(CachedOutputStream wrapper) {
+            InputStream transformedStream = null;
+            try {
+                transformedStream = XSLTUtils.transform(xsltTemplate, wrapper.getInputStream());
+                IOUtils.copyAndCloseInput(transformedStream, origStream);
+            } catch (IOException e) {
+                throw new Fault("STREAM_COPY", LOG, e, e.getMessage());
+            } finally {
+                try {
+                    origStream.close();
+                } catch (IOException e) {
+                    LOG.warning("Cannot close stream after transformation: " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    public static class XSLTCachedWriter extends CachedWriter {
+        private final Templates xsltTemplate;
+        private final Writer origWriter;
+
+        public XSLTCachedWriter(Templates xsltTemplate, Writer origWriter) {
+            this.xsltTemplate = xsltTemplate;
+            this.origWriter = origWriter;
+        }
+
+        @Override
+        protected void doClose() {
+            Reader transformedReader = null;
+            try {
+                transformedReader = XSLTUtils.transform(xsltTemplate, getReader());
+                IOUtils.copyAndCloseInput(transformedReader, origWriter, IOUtils.DEFAULT_BUFFER_SIZE);
+            } catch (IOException e) {
+                throw new Fault("READER_COPY", LOG, e, e.getMessage());
+            } finally {
+                try {
+                    origWriter.close();
+                } catch (IOException e) {
+                    LOG.warning("Cannot close stream after transformation: " + e.getMessage());
+                }
+            }
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/51996bbc/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java b/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java
index 24078cf..1488b5d 100644
--- a/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java
+++ b/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java
@@ -1,101 +1,101 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.cxf.feature.transform;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.logging.Logger;
-
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.transform.Source;
-import javax.xml.transform.Templates;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.w3c.dom.Document;
-
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.helpers.DOMUtils;
-import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.io.CachedOutputStream;
-import org.apache.cxf.io.CachedWriter;
-import org.apache.cxf.staxutils.StaxSource;
-import org.apache.cxf.staxutils.StaxUtils;
-
-public final class XSLTUtils {
-    private static final Logger LOG = LogUtils.getL7dLogger(XSLTUtils.class);
-
-    private XSLTUtils() {
-
-    }
-
-    public static InputStream transform(Templates xsltTemplate, InputStream in) {
-        try {
-            XMLStreamReader reader = StaxUtils.createXMLStreamReader(in);
-            Source beforeSource = new StaxSource(reader);
-            CachedOutputStream out = new CachedOutputStream();
-
-            Transformer trans = xsltTemplate.newTransformer();
-            trans.transform(beforeSource, new StreamResult(out));
-
-            return out.getInputStream();
-        } catch (IOException e) {
-            throw new Fault("GET_CACHED_INPUT_STREAM", LOG, e, e.getMessage());
-        } catch (TransformerException e) {
-            throw new Fault("XML_TRANSFORM", LOG, e, e.getMessage());
-        }
-    }
-
-    public static Reader transform(Templates xsltTemplate, Reader inReader) {
-        try {
-            XMLStreamReader reader = StaxUtils.createXMLStreamReader(inReader);
-            Source beforeSource = new StaxSource(reader);
-            CachedWriter outWriter = new CachedWriter();
-
-            Transformer trans = xsltTemplate.newTransformer();
-            trans.transform(beforeSource, new StreamResult(outWriter));
-
-            return outWriter.getReader();
-        } catch (IOException e) {
-            throw new Fault("GET_CACHED_INPUT_STREAM", LOG, e, e.getMessage());
-        } catch (TransformerException e) {
-            throw new Fault("XML_TRANSFORM", LOG, e, e.getMessage());
-        }
-    }
-
-    public static Document transform(Templates xsltTemplate, Document in) {
-        try {
-            DOMSource beforeSource = new DOMSource(in);
-            
-            Document out = DOMUtils.createDocument();
-
-            Transformer trans = xsltTemplate.newTransformer();
-            trans.transform(beforeSource, new DOMResult(out));
-
-            return out;
-        } catch (TransformerException e) {
-            throw new Fault("XML_TRANSFORM", LOG, e, e.getMessage());
-        }
-    }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.feature.transform;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.logging.Logger;
+
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.io.CachedWriter;
+import org.apache.cxf.staxutils.StaxSource;
+import org.apache.cxf.staxutils.StaxUtils;
+
+public final class XSLTUtils {
+    private static final Logger LOG = LogUtils.getL7dLogger(XSLTUtils.class);
+
+    private XSLTUtils() {
+
+    }
+
+    public static InputStream transform(Templates xsltTemplate, InputStream in) {
+        try {
+            XMLStreamReader reader = StaxUtils.createXMLStreamReader(in);
+            Source beforeSource = new StaxSource(reader);
+            CachedOutputStream out = new CachedOutputStream();
+
+            Transformer trans = xsltTemplate.newTransformer();
+            trans.transform(beforeSource, new StreamResult(out));
+
+            return out.getInputStream();
+        } catch (IOException e) {
+            throw new Fault("GET_CACHED_INPUT_STREAM", LOG, e, e.getMessage());
+        } catch (TransformerException e) {
+            throw new Fault("XML_TRANSFORM", LOG, e, e.getMessage());
+        }
+    }
+
+    public static Reader transform(Templates xsltTemplate, Reader inReader) {
+        try {
+            XMLStreamReader reader = StaxUtils.createXMLStreamReader(inReader);
+            Source beforeSource = new StaxSource(reader);
+            CachedWriter outWriter = new CachedWriter();
+
+            Transformer trans = xsltTemplate.newTransformer();
+            trans.transform(beforeSource, new StreamResult(outWriter));
+
+            return outWriter.getReader();
+        } catch (IOException e) {
+            throw new Fault("GET_CACHED_INPUT_STREAM", LOG, e, e.getMessage());
+        } catch (TransformerException e) {
+            throw new Fault("XML_TRANSFORM", LOG, e, e.getMessage());
+        }
+    }
+
+    public static Document transform(Templates xsltTemplate, Document in) {
+        try {
+            DOMSource beforeSource = new DOMSource(in);
+            
+            Document out = DOMUtils.createDocument();
+
+            Transformer trans = xsltTemplate.newTransformer();
+            trans.transform(beforeSource, new DOMResult(out));
+
+            return out;
+        } catch (TransformerException e) {
+            throw new Fault("XML_TRANSFORM", LOG, e, e.getMessage());
+        }
+    }
+}