All pastes #136420 Raw Edit

XSLTComponent change

public java v1 · immutable
#136420 ·published 2006-08-17 17:35 UTC
rendered paste body
Index: src/main/java/org/apache/servicemix/components/xslt/XsltComponent.java===================================================================--- src/main/java/org/apache/servicemix/components/xslt/XsltComponent.java      (revision 432238)+++ src/main/java/org/apache/servicemix/components/xslt/XsltComponent.java      (working copy)@@ -16,13 +16,13 @@  */ package org.apache.servicemix.components.xslt;-import org.apache.servicemix.MessageExchangeListener;-import org.apache.servicemix.components.util.TransformComponentSupport;-import org.apache.servicemix.jbi.jaxp.BytesSource;-import org.apache.servicemix.jbi.jaxp.StringSource;-import org.springframework.core.io.Resource;-import org.w3c.dom.Document;-import org.w3c.dom.Node;+import java.io.ByteArrayOutputStream;+import java.io.File;+import java.io.FileInputStream;+import java.io.IOException;+import java.io.StringWriter;+import java.net.URL;+import java.util.Iterator; import javax.jbi.messaging.MessageExchange; import javax.jbi.messaging.MessagingException;@@ -40,11 +40,13 @@ import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource;-import java.io.ByteArrayOutputStream;-import java.io.IOException;-import java.io.StringWriter;-import java.net.URL;-import java.util.Iterator;+import org.apache.servicemix.MessageExchangeListener;+import org.apache.servicemix.components.util.TransformComponentSupport;+import org.apache.servicemix.jbi.jaxp.BytesSource;+import org.apache.servicemix.jbi.jaxp.StringSource;+import org.springframework.core.io.Resource;+import org.w3c.dom.Document;+import org.w3c.dom.Node; /**  * An <a href="http://www.w3.org/TR/xslt">XSLT</a> based JBI component using <a@@ -55,6 +57,7 @@  */ public class XsltComponent extends TransformComponentSupport implements MessageExchangeListener {+       public final static String XSLT_FILENAME_PROPERTY= "org.apache.servicemix.components.xslt.filename";     private TransformerFactory transformerFactory;     private Source xsltSource;     private Resource xsltResource;@@ -90,11 +93,11 @@         this.transformerFactory = transformerFactory;     }-    public Source getXsltSource() throws IOException {+    public Source getXsltSource(NormalizedMessage in) throws IOException {         if (xsltSource == null) {             // lets create a new one each time             // as we can only read a stream once-            return createXsltSource();+            return createXsltSource(in);         }         return xsltSource;     }@@ -189,8 +192,20 @@          */     }-    protected Source createXsltSource() throws IOException {-        if (xsltResource != null) {+    /**+     * Load the XSLT from the property name called XSLT_FILENAME_PROPERTY+     * or load it from the "resource" loaded or there is none configured+     * which meanse that it is coming from the IoC injected SourceTransformer (hopefully)+     *+     * @param in NormalizedMessage may contain property XSLT_FILENAME_PROPERTY of XSLT filename+     * @return Source transform Source+     * @throws IOException+     */+    protected Source createXsltSource(NormalizedMessage in) throws IOException {+       String xsltFileName = (String)in.getProperty(XSLT_FILENAME_PROPERTY);+       if (xsltFileName != null && !xsltFileName.equals("")) {+               return new StreamSource(new FileInputStream(new File(xsltFileName)));+       } else if (xsltResource != null) {             URL url = xsltResource.getURL();             if (url == null) {                 return new StreamSource(xsltResource.getInputStream());@@ -202,9 +217,9 @@         return null;     }-    public Templates getTemplates() throws IOException, TransformerConfigurationException {+    public Templates getTemplates(NormalizedMessage in) throws IOException, TransformerConfigurationException {         if (templates == null) {-            templates = createTemplates();+            templates = createTemplates(in);         }         return templates;     }@@ -212,8 +227,8 @@     /**      * Factory method to create a new transformer instance      */-    protected Templates createTemplates() throws TransformerConfigurationException, IOException {-        Source source = getXsltSource();+    protected Templates createTemplates(NormalizedMessage in) throws TransformerConfigurationException, IOException {+        Source source = getXsltSource(in);         return getTransformerFactory().newTemplates(source);     }@@ -222,12 +237,12 @@      */     protected Transformer createTransformer(MessageExchange exchange, NormalizedMessage in)             throws TransformerConfigurationException, IOException {-        Source source = getXsltSource();+        Source source = getXsltSource(in);         if (source == null) {             return getTransformerFactory().newTransformer();         }         else {-            return getTemplates().newTransformer();+            return getTemplates(in).newTransformer();         }     }