You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Darren Coleman (Jira)" <ji...@apache.org> on 2023/03/01 14:33:00 UTC

[jira] [Created] (CAMEL-19105) camel-language: contentCache option bypassed when loading script over http

Darren Coleman created CAMEL-19105:
--------------------------------------

             Summary: camel-language: contentCache option bypassed when loading script over http
                 Key: CAMEL-19105
                 URL: https://issues.apache.org/jira/browse/CAMEL-19105
             Project: Camel
          Issue Type: Bug
          Components: camel-language
    Affects Versions: 3.20.1
            Reporter: Darren Coleman


I set up a route to load a simple script via an HTTP endpoint and, as far as I  can tell, the contentCache option isn't checked. When calling the endpoint {{{}language:simple:[http://localhost:8080/simple]{}}}, the {{LanguageProducer.process()}} method calls directly on {{ResourceHelper.resolveMandatoryResourceAsInputStream()}} ([line 79|https://github.com/apache/camel/blob/camel-3.20.1/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageProducer.java#L79]) instead of calling on the endpoint's {{getResourceAsInputStream()}} method that handles the caching.

 

The following code sets up a REST endpoint to return a simple script, and the language endpoint is called twice. I would expect the the REST route to log output for the first call only.

 
{code:java}
public class CamelLanguageHttpTest {
    
    public static void main(String[] args) throws Exception {
        CamelContext context = new DefaultCamelContext();
        context.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                restConfiguration().component("netty-http")
                    .host("localhost").port(8080);
                rest("/")
                    .get("simple").to("direct:simple");
                from("direct:simple")
                    .transform()
                    .constant("Hello ${body}!").to("stream:out");
            }
        });
        context.start();
        ProducerTemplate producer = context.createProducerTemplate();
        String endpoint = "language:simple:http://localhost:8080/simple";          String result = producer.requestBody(endpoint, "SimpleHttp", String.class);
        producer.requestBody(endpoint, "SimpleHttp", String.class);
        
        context.stop();
        context.close();
    }
}
// Output:
// Hello ${body}!
// Hello ${body}!
{code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)