Details
-
Type:
Improvement
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 2.17.0
-
Component/s: camel-core
-
Labels:None
-
Patch Info:Patch Available
-
Estimated Complexity:Unknown
Description
The validator endpoint allows already to specify custom resource resolvers, via the parameter resourceResolver. However, there is a use case where this functionality is not sufficient. If you have a dynamically created validator endpoint, like
<camel:recipientList>
<camel:simple>validator:${header.XSD_FILE}?resourceResolver=#resourceResolver</camel:simple>
</camel:recipientList>
where the resource URI of the XSD document is also dynamic (in the example via the header XSD_FILE) and if your resource resolver depends on the resource URI of the XSD document, then the current implementation gives you no solution for this problem. You cannot hand-over the dynamic resource URI to the custom resource resolver.
Therefore we introduce the new parameter resourceResolverFactory where you can specify a factory which implements the method
LSResourceResolver createResourceResolver(CamelContext camelContext, String rootResourceUri);
This method is called when the endpoint is created and gives you access to the endpoint resource URI (parameter rootResourceUri).
Remark: resource resolvers need to have the root resource URI in the case of relative URIs.