You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2008/12/01 14:32:20 UTC

svn commit: r722067 - in /servicemix/components/engines/servicemix-saxon/trunk/src: main/java/org/apache/servicemix/saxon/ test/resources/

Author: gnodet
Date: Mon Dec  1 05:32:19 2008
New Revision: 722067

URL: http://svn.apache.org/viewvc?rev=722067&view=rev
Log:
SM-1705: Make Resources in servicemix-saxon reloadable

Modified:
    servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java
    servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XQueryEndpoint.java
    servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java
    servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltProxyEndpoint.java
    servicemix/components/engines/servicemix-saxon/trunk/src/test/resources/spring.xml

Modified: servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java?rev=722067&r1=722066&r2=722067&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java (original)
+++ servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java Mon Dec  1 05:32:19 2008
@@ -51,6 +51,7 @@
     private boolean copySubject = true;
     private String result = RESULT_DOM;
     private Resource resource;
+    private boolean reload;
     private Expression expression;
     private Resource wsdlResource;
     private SourceTransformer sourceTransformer = new SourceTransformer();
@@ -112,6 +113,22 @@
         this.resource = resource;
     }
 
+    public boolean isReload() {
+        return reload;
+    }
+
+    /**
+     * Sets whether the endpoint should reload the resource each time it is used.
+     * A value of <code>true</code> will ensure that the resource is not cached which
+     * can be useful if the resource is updated regularly and is stored outside of 
+     * the service unit. 
+     *
+     * @param reload <code>true</true> if the resource should not be cached
+     */
+    public void setReload(boolean reload) {
+        this.reload = reload;
+    }
+
     /**
      * @return the result
      */

Modified: servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XQueryEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XQueryEndpoint.java?rev=722067&r1=722066&r2=722067&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XQueryEndpoint.java (original)
+++ servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XQueryEndpoint.java Mon Dec  1 05:32:19 2008
@@ -17,6 +17,7 @@
 package org.apache.servicemix.saxon;
 
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.StringWriter;
 import java.util.Iterator;
 import java.util.Map;
@@ -32,6 +33,7 @@
 
 import net.sf.saxon.Configuration;
 import net.sf.saxon.om.DocumentInfo;
+import net.sf.saxon.trans.XPathException;
 import net.sf.saxon.query.DynamicQueryContext;
 import net.sf.saxon.query.StaticQueryContext;
 import net.sf.saxon.query.XQueryExpression;
@@ -96,11 +98,7 @@
         config.setHostLanguage(Configuration.XQUERY);
         setConfiguration(config);
         staticEnv = new StaticQueryContext(config);
-        if (getQuery() != null) {
-            exp = staticEnv.compileQuery(getQuery());
-        } else if (getResource() != null) {
-            exp = staticEnv.compileQuery(getResource().getInputStream(), null);
-        }
+        exp = compileQuery();
     }
     
     public void validate() throws DeploymentException {
@@ -173,8 +171,21 @@
             Resource r = getDynamicResource(exchange, in);
             return staticEnv.compileQuery(r.getInputStream(), null);
         } else {
-            return exp;
+            if (isReload()) {
+                return compileQuery();
+            } else {
+                return exp;
+            }
+        }
+    }
+
+    protected XQueryExpression compileQuery() throws XPathException, IOException {
+        if (getQuery() != null) {
+            return staticEnv.compileQuery(getQuery());
+        } else if (getResource() != null) {
+            return staticEnv.compileQuery(getResource().getInputStream(), null);
         }
+        return null;
     }
     
 }

Modified: servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java?rev=722067&r1=722066&r2=722067&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java (original)
+++ servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java Mon Dec  1 05:32:19 2008
@@ -49,7 +49,8 @@
     private Templates templates;
     private boolean useDomSourceForXslt = true;
     private Boolean useDomSourceForContent;
-    
+    private boolean reload = false;
+
     public TransformerFactory getTransformerFactory() {
         if (transformerFactory == null) {
             transformerFactory = createTransformerFactory();
@@ -77,6 +78,14 @@
         this.useDomSourceForContent = useDomSourceForContent;
     }
 
+    public boolean isReload() {
+        return reload;
+    }
+
+    public void setReload(boolean reload) {
+        this.reload = reload;
+    }
+
     public void validate() throws DeploymentException {
         if (xsltSource == null && getResource() == null && getExpression() == null) {
             throw new DeploymentException("xsltSource, resource or expression must be specified");
@@ -172,7 +181,12 @@
             }
         // Use static stylesheet
         } else {
-            return getTemplates().newTransformer();
+            if (isReload()) {
+                Source source = createXsltSource(getResource());
+                return getTransformerFactory().newTransformer(source);
+            } else {
+                return getTemplates().newTransformer();
+            }
         }
     }
     

Modified: servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltProxyEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltProxyEndpoint.java?rev=722067&r1=722066&r2=722067&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltProxyEndpoint.java (original)
+++ servicemix/components/engines/servicemix-saxon/trunk/src/main/java/org/apache/servicemix/saxon/XsltProxyEndpoint.java Mon Dec  1 05:32:19 2008
@@ -344,7 +344,12 @@
             }
         // Use static stylesheet
         } else if (getResource(type) != null) {
-            return getTemplates(type).newTransformer();
+            if (isReload()) {
+                Source source = createXsltSource(getResource(type));
+                return getTransformerFactory().newTransformer(source);
+            } else {
+                return getTemplates(type).newTransformer();
+            }
         } else {
             return null;
         }

Modified: servicemix/components/engines/servicemix-saxon/trunk/src/test/resources/spring.xml
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-saxon/trunk/src/test/resources/spring.xml?rev=722067&r1=722066&r2=722067&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-saxon/trunk/src/test/resources/spring.xml (original)
+++ servicemix/components/engines/servicemix-saxon/trunk/src/test/resources/spring.xml Mon Dec  1 05:32:19 2008
@@ -60,6 +60,7 @@
                   resource="classpath:doc-call.xsl"
                   useDomSourceForXslt="true"
                   useDomSourceForContent="false"
+                  reload="true"
                   result="bytes" />
 
       <!-- START SNIPPET: xquery -->
@@ -68,7 +69,7 @@
       <!-- END SNIPPET: xquery -->
       	      
       <!-- START SNIPPET: xquery-inline -->
-      <saxon:xquery service="test:xquery-inline" endpoint="endpoint">
+      <saxon:xquery service="test:xquery-inline" endpoint="endpoint" reload="true">
         <!-- CDATA are not supported currently -->
         <saxon:query>
            for $x in /bookstore/book
@@ -97,6 +98,7 @@
                    useDomSourceForContent="false"
                    result="dom"
                    resource="classpath:transform-in.xsl"
+                   reload="true"
                    outResource="classpath:transform-out.xsl">
         <saxon:target>
           <saxon:exchange-target service="test:echo" />