Author: dkulp Date: Mon Sep 19 16:58:56 2011 New Revision: 1172702 URL: http://svn.apache.org/viewvc?rev=1172702&view=rev Log: Merged revisions 1152569 via svnmerge from https://svn.apache.org/repos/asf/camel/trunk
........ r1152569 | davsclaus | 2011-07-31 07:55:54 -0400 (Sun, 31 Jul 2011) | 1 line CAMEL-4285: camel-saxon can now load imported resources from the classpath using a custom ModuleURIResolver. Thanks to Jay Mann for the patch. ........ Added: camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryModuleURIResolver.java - copied unchanged from r1152569, camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryModuleURIResolver.java Modified: camel/branches/camel-2.8.x/ (props changed) camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryComponent.java Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Sep 19 16:58:56 2011 @@ -1 +1 @@ -/camel/trunk:1148706,1148710,1149570,1150651,1151000,1151054,1151087,1151362,1152170,1152733,1152755,1153620,1153812,1153829,1154684,1155230,1156108,1156260,1156277,1156479,1156524,1157348,1157749,1157798,1157831,1157878,1158153,1159171,1159174,1159326,1159457,1159460,1159606,1159682-1159683,1159867,1160547,1160637,1161010,1161082,1161524,1162309,1162395,1163231,1163420,1163656-1163669,1163725,1164544,1164557,1164633,1164972-1165000,1165152,1165157,1165658,1165971,1165987,1167098,1167131,1167448,1167487,1167555,1169610,1169620,1170122,1170226,1170397,1170956,1171396,1171755,1171941,1171947 +/camel/trunk:1148706,1148710,1149570,1150651,1151000,1151054,1151087,1151362,1152170,1152569,1152733,1152755,1153620,1153812,1153829,1154684,1155230,1156108,1156260,1156277,1156479,1156524,1157348,1157749,1157798,1157831,1157878,1158153,1159171,1159174,1159326,1159457,1159460,1159606,1159682-1159683,1159867,1160547,1160637,1161010,1161082,1161524,1162309,1162395,1163231,1163420,1163656-1163669,1163725,1164544,1164557,1164633,1164972-1165000,1165152,1165157,1165658,1165971,1165987,1167098,1167131,1167448,1167487,1167555,1169610,1169620,1170122,1170226,1170397,1170956,1171396,1171755,1171941,1171947 Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java?rev=1172702&r1=1172701&r2=1172702&view=diff ============================================================================== --- camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java (original) +++ camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java Mon Sep 19 16:58:56 2011 @@ -43,6 +43,7 @@ import net.sf.saxon.om.DocumentInfo; import net.sf.saxon.om.Item; import net.sf.saxon.om.SequenceIterator; import net.sf.saxon.query.DynamicQueryContext; +import net.sf.saxon.query.ModuleURIResolver; import net.sf.saxon.query.StaticQueryContext; import net.sf.saxon.query.XQueryExpression; import net.sf.saxon.trans.XPathException; @@ -87,6 +88,7 @@ public abstract class XQueryBuilder impl private Class resultType; private final AtomicBoolean initialized = new AtomicBoolean(false); private boolean stripsAllWhiteSpace = true; + private ModuleURIResolver moduleURIResolver; @Override public String toString() { @@ -393,6 +395,14 @@ public abstract class XQueryBuilder impl this.resultType = resultType; } + public ModuleURIResolver getModuleURIResolver() { + return moduleURIResolver; + } + + public void setModuleURIResolver(ModuleURIResolver moduleURIResolver) { + this.moduleURIResolver = moduleURIResolver; + } + public boolean isStripsAllWhiteSpace() { return stripsAllWhiteSpace; } @@ -515,6 +525,10 @@ public abstract class XQueryBuilder impl configuration.setStripsWhiteSpace(isStripsAllWhiteSpace() ? Whitespace.ALL : Whitespace.IGNORABLE); staticQueryContext = new StaticQueryContext(getConfiguration()); + if (moduleURIResolver != null) { + staticQueryContext.setModuleURIResolver(moduleURIResolver); + } + Set<Map.Entry<String, String>> entries = namespacePrefixes.entrySet(); for (Map.Entry<String, String> entry : entries) { String prefix = entry.getKey(); @@ -522,7 +536,6 @@ public abstract class XQueryBuilder impl staticQueryContext.declareNamespace(prefix, uri); staticQueryContext.setInheritNamespaces(true); } - expression = createQueryExpression(staticQueryContext); initialized.set(true); Modified: camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryComponent.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryComponent.java?rev=1172702&r1=1172701&r2=1172702&view=diff ============================================================================== --- camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryComponent.java (original) +++ camel/branches/camel-2.8.x/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryComponent.java Mon Sep 19 16:58:56 2011 @@ -16,26 +16,28 @@ */ package org.apache.camel.component.xquery; +import java.net.URL; import java.util.Map; +import net.sf.saxon.query.ModuleURIResolver; import org.apache.camel.Endpoint; import org.apache.camel.component.ResourceBasedComponent; import org.apache.camel.impl.ProcessorEndpoint; import org.springframework.core.io.Resource; - /** * An <a href="http://camel.apache.org/xquery.html">XQuery Component</a> * for performing transforming messages - * - * @version */ public class XQueryComponent extends ResourceBasedComponent { + private ModuleURIResolver moduleURIResolver = new XQueryModuleURIResolver(this); + protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception { Resource resource = resolveMandatoryResource(remaining); log.debug("{} using schema resource: {}", this, resource); XQueryBuilder xslt = XQueryBuilder.xquery(resource.getURL()); + xslt.setModuleURIResolver(getModuleURIResolver()); configureXslt(xslt, uri, remaining, parameters); return new ProcessorEndpoint(uri, this, xslt); } @@ -43,4 +45,16 @@ public class XQueryComponent extends Res protected void configureXslt(XQueryBuilder xQueryBuilder, String uri, String remaining, Map<String, Object> parameters) throws Exception { setProperties(xQueryBuilder, parameters); } + + public URL resolveModuleResource(String uri) throws Exception { + return resolveMandatoryResource(uri).getURL(); + } + + public ModuleURIResolver getModuleURIResolver() { + return moduleURIResolver; + } + + public void setModuleURIResolver(ModuleURIResolver moduleURIResolver) { + this.moduleURIResolver = moduleURIResolver; + } }