[ 
https://issues.apache.org/jira/browse/CAMEL-9572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Franz Forsthofer updated CAMEL-9572:
------------------------------------
    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.




  was:
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.





> Validator Component: Support custom resource resolver which depends on 
> dynamic resource URI of the endpoint
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-9572
>                 URL: https://issues.apache.org/jira/browse/CAMEL-9572
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-core
>            Reporter: Franz Forsthofer
>            Assignee: Franz Forsthofer
>             Fix For: 2.17.0
>
>         Attachments: 
> 0001-Validator-support-custom-resource-resolver-factory.patch
>
>
> 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.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to