This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 16742a7 CAMEL-16311: camel-freemarker - Localized lookup should be
disabled
16742a7 is described below
commit 16742a7fce3a9a3bf32f33bb022693546df4b2a4
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Mar 6 15:38:28 2021 +0100
CAMEL-16311: camel-freemarker - Localized lookup should be disabled
---
.../camel/catalog/docs/freemarker-component.adoc | 3 ++-
.../freemarker/FreemarkerComponentConfigurer.java | 6 ++++++
.../apache/camel/component/freemarker/freemarker.json | 1 +
.../src/main/docs/freemarker-component.adoc | 3 ++-
.../component/freemarker/FreemarkerComponent.java | 19 ++++++++++++++++---
.../dsl/FreemarkerComponentBuilderFactory.java | 17 +++++++++++++++++
.../modules/ROOT/pages/freemarker-component.adoc | 3 ++-
.../ROOT/pages/camel-3x-upgrade-guide-3_9.adoc | 8 +++++++-
8 files changed, 53 insertions(+), 7 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/freemarker-component.adoc
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/freemarker-component.adoc
index 3c018c8..3dbb9b0 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/freemarker-component.adoc
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/freemarker-component.adoc
@@ -49,7 +49,7 @@ You can append query options to the URI in the following
format,
// component options: START
-The Freemarker component supports 5 options, which are listed below.
+The Freemarker component supports 6 options, which are listed below.
@@ -59,6 +59,7 @@ The Freemarker component supports 5 options, which are listed
below.
| *allowContextMapAll* (producer) | Sets whether the context map should allow
access to all details. By default only the message body and headers can be
accessed. This option can be enabled for full access to the current Exchange
and CamelContext. Doing so impose a potential security risk as this opens
access to the full power of CamelContext API. | false | boolean
| *allowTemplateFromHeader* (producer) | Whether to allow to use resource
template from header or not (default false). Enabling this allows to specify
dynamic templates via message header. However this can be seen as a potential
security vulnerability if the header is coming from a malicious user, so use
this with care. | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy
(on the first message). By starting lazy you can use this to allow CamelContext
and routes to startup in situations where a producer may otherwise fail during
starting and cause the route to fail being started. By deferring this startup
to be lazy then the startup failure can be handled during routing messages via
Camel's routing error handlers. Beware that when the first message is processed
then creating and [...]
+| *localizedLookup* (producer) | Enables/disables localized template lookup.
Disabled by default. | false | boolean
| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used
for automatic autowiring options (the option must be marked as autowired) by
looking up in the registry to find if there is a single instance of matching
type, which then gets configured on the component. This can be used for
automatic configuring JDBC data sources, JMS connection factories, AWS Clients,
etc. | true | boolean
| *configuration* (advanced) | To use an existing
freemarker.template.Configuration instance as the configuration. | |
Configuration
|===
diff --git
a/components/camel-freemarker/src/generated/java/org/apache/camel/component/freemarker/FreemarkerComponentConfigurer.java
b/components/camel-freemarker/src/generated/java/org/apache/camel/component/freemarker/FreemarkerComponentConfigurer.java
index 5d66088..e251234 100644
---
a/components/camel-freemarker/src/generated/java/org/apache/camel/component/freemarker/FreemarkerComponentConfigurer.java
+++
b/components/camel-freemarker/src/generated/java/org/apache/camel/component/freemarker/FreemarkerComponentConfigurer.java
@@ -30,6 +30,8 @@ public class FreemarkerComponentConfigurer extends
PropertyConfigurerSupport imp
case "configuration": target.setConfiguration(property(camelContext,
freemarker.template.Configuration.class, value)); return true;
case "lazystartproducer":
case "lazyStartProducer":
target.setLazyStartProducer(property(camelContext, boolean.class, value));
return true;
+ case "localizedlookup":
+ case "localizedLookup":
target.setLocalizedLookup(property(camelContext, boolean.class, value)); return
true;
default: return false;
}
}
@@ -46,6 +48,8 @@ public class FreemarkerComponentConfigurer extends
PropertyConfigurerSupport imp
case "configuration": return freemarker.template.Configuration.class;
case "lazystartproducer":
case "lazyStartProducer": return boolean.class;
+ case "localizedlookup":
+ case "localizedLookup": return boolean.class;
default: return null;
}
}
@@ -63,6 +67,8 @@ public class FreemarkerComponentConfigurer extends
PropertyConfigurerSupport imp
case "configuration": return target.getConfiguration();
case "lazystartproducer":
case "lazyStartProducer": return target.isLazyStartProducer();
+ case "localizedlookup":
+ case "localizedLookup": return target.isLocalizedLookup();
default: return null;
}
}
diff --git
a/components/camel-freemarker/src/generated/resources/org/apache/camel/component/freemarker/freemarker.json
b/components/camel-freemarker/src/generated/resources/org/apache/camel/component/freemarker/freemarker.json
index d0fd535..2cdf907 100644
---
a/components/camel-freemarker/src/generated/resources/org/apache/camel/component/freemarker/freemarker.json
+++
b/components/camel-freemarker/src/generated/resources/org/apache/camel/component/freemarker/freemarker.json
@@ -25,6 +25,7 @@
"allowContextMapAll": { "kind": "property", "displayName": "Allow Context
Map All", "group": "producer", "label": "", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": false, "description": "Sets whether the
context map should allow access to all details. By default only the message
body and headers can be accessed. This option can be enabled for full access to
the current Exchange and CamelContext. [...]
"allowTemplateFromHeader": { "kind": "property", "displayName": "Allow
Template From Header", "group": "producer", "label": "", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "description": "Whether to allow
to use resource template from header or not (default false). Enabling this
allows to specify dynamic templates via message header. However this can be
seen as a potential security vulne [...]
"lazyStartProducer": { "kind": "property", "displayName": "Lazy Start
Producer", "group": "producer", "label": "producer", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": false, "description": "Whether the producer
should be started lazy (on the first message). By starting lazy you can use
this to allow CamelContext and routes to startup in situations where a producer
may otherwise fail during star [...]
+ "localizedLookup": { "kind": "property", "displayName": "Localized
Lookup", "group": "producer", "label": "", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": false, "description": "Enables\/disables
localized template lookup. Disabled by default." },
"autowiredEnabled": { "kind": "property", "displayName": "Autowired
Enabled", "group": "advanced", "label": "advanced", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": true, "description": "Whether autowiring is
enabled. This is used for automatic autowiring options (the option must be
marked as autowired) by looking up in the registry to find if there is a single
instance of matching type, which t [...]
"configuration": { "kind": "property", "displayName": "Configuration",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "freemarker.template.Configuration", "deprecated": false,
"autowired": false, "secret": false, "description": "To use an existing
freemarker.template.Configuration instance as the configuration." }
},
diff --git
a/components/camel-freemarker/src/main/docs/freemarker-component.adoc
b/components/camel-freemarker/src/main/docs/freemarker-component.adoc
index 3c018c8..3dbb9b0 100644
--- a/components/camel-freemarker/src/main/docs/freemarker-component.adoc
+++ b/components/camel-freemarker/src/main/docs/freemarker-component.adoc
@@ -49,7 +49,7 @@ You can append query options to the URI in the following
format,
// component options: START
-The Freemarker component supports 5 options, which are listed below.
+The Freemarker component supports 6 options, which are listed below.
@@ -59,6 +59,7 @@ The Freemarker component supports 5 options, which are listed
below.
| *allowContextMapAll* (producer) | Sets whether the context map should allow
access to all details. By default only the message body and headers can be
accessed. This option can be enabled for full access to the current Exchange
and CamelContext. Doing so impose a potential security risk as this opens
access to the full power of CamelContext API. | false | boolean
| *allowTemplateFromHeader* (producer) | Whether to allow to use resource
template from header or not (default false). Enabling this allows to specify
dynamic templates via message header. However this can be seen as a potential
security vulnerability if the header is coming from a malicious user, so use
this with care. | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy
(on the first message). By starting lazy you can use this to allow CamelContext
and routes to startup in situations where a producer may otherwise fail during
starting and cause the route to fail being started. By deferring this startup
to be lazy then the startup failure can be handled during routing messages via
Camel's routing error handlers. Beware that when the first message is processed
then creating and [...]
+| *localizedLookup* (producer) | Enables/disables localized template lookup.
Disabled by default. | false | boolean
| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used
for automatic autowiring options (the option must be marked as autowired) by
looking up in the registry to find if there is a single instance of matching
type, which then gets configured on the component. This can be used for
automatic configuring JDBC data sources, JMS connection factories, AWS Clients,
etc. | true | boolean
| *configuration* (advanced) | To use an existing
freemarker.template.Configuration instance as the configuration. | |
Configuration
|===
diff --git
a/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
b/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
index 2f14bdf..81a14e9 100644
---
a/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
+++
b/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
@@ -35,10 +35,12 @@ import org.apache.camel.util.ObjectHelper;
@Component("freemarker")
public class FreemarkerComponent extends DefaultComponent {
- @Metadata(defaultValue = "false")
+ @Metadata
private boolean allowTemplateFromHeader;
- @Metadata(defaultValue = "false")
+ @Metadata
private boolean allowContextMapAll;
+ @Metadata
+ private boolean localizedLookup;
@Metadata(label = "advanced")
private Configuration configuration;
private Configuration noCacheConfiguration;
@@ -86,7 +88,7 @@ public class FreemarkerComponent extends DefaultComponent {
public synchronized Configuration getConfiguration() {
if (configuration == null) {
configuration = new
Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
- configuration.setLocalizedLookup(false);
+ configuration.setLocalizedLookup(isLocalizedLookup());
configuration.setTemplateLoader(new URLTemplateLoader() {
@Override
protected URL getURL(String name) {
@@ -137,6 +139,17 @@ public class FreemarkerComponent extends DefaultComponent {
this.allowContextMapAll = allowContextMapAll;
}
+ public boolean isLocalizedLookup() {
+ return localizedLookup;
+ }
+
+ /**
+ * Enables/disables localized template lookup. Disabled by default.
+ */
+ public void setLocalizedLookup(boolean localizedLookup) {
+ this.localizedLookup = localizedLookup;
+ }
+
private synchronized Configuration getNoCacheConfiguration() {
if (noCacheConfiguration == null) {
// create a clone of the regular configuration
diff --git
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/FreemarkerComponentBuilderFactory.java
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/FreemarkerComponentBuilderFactory.java
index c072571..db86b25 100644
---
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/FreemarkerComponentBuilderFactory.java
+++
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/FreemarkerComponentBuilderFactory.java
@@ -115,6 +115,22 @@ public interface FreemarkerComponentBuilderFactory {
return this;
}
/**
+ * Enables/disables localized template lookup. Disabled by default.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param localizedLookup the value to set
+ * @return the dsl builder
+ */
+ default FreemarkerComponentBuilder localizedLookup(
+ boolean localizedLookup) {
+ doSetProperty("localizedLookup", localizedLookup);
+ return this;
+ }
+ /**
* Whether autowiring is enabled. This is used for automatic autowiring
* options (the option must be marked as autowired) by looking up in
the
* registry to find if there is a single instance of matching type,
@@ -172,6 +188,7 @@ public interface FreemarkerComponentBuilderFactory {
case "allowContextMapAll": ((FreemarkerComponent)
component).setAllowContextMapAll((boolean) value); return true;
case "allowTemplateFromHeader": ((FreemarkerComponent)
component).setAllowTemplateFromHeader((boolean) value); return true;
case "lazyStartProducer": ((FreemarkerComponent)
component).setLazyStartProducer((boolean) value); return true;
+ case "localizedLookup": ((FreemarkerComponent)
component).setLocalizedLookup((boolean) value); return true;
case "autowiredEnabled": ((FreemarkerComponent)
component).setAutowiredEnabled((boolean) value); return true;
case "configuration": ((FreemarkerComponent)
component).setConfiguration((freemarker.template.Configuration) value); return
true;
default: return false;
diff --git a/docs/components/modules/ROOT/pages/freemarker-component.adoc
b/docs/components/modules/ROOT/pages/freemarker-component.adoc
index 5244375..b44cb7e 100644
--- a/docs/components/modules/ROOT/pages/freemarker-component.adoc
+++ b/docs/components/modules/ROOT/pages/freemarker-component.adoc
@@ -51,7 +51,7 @@ You can append query options to the URI in the following
format,
// component options: START
-The Freemarker component supports 5 options, which are listed below.
+The Freemarker component supports 6 options, which are listed below.
@@ -61,6 +61,7 @@ The Freemarker component supports 5 options, which are listed
below.
| *allowContextMapAll* (producer) | Sets whether the context map should allow
access to all details. By default only the message body and headers can be
accessed. This option can be enabled for full access to the current Exchange
and CamelContext. Doing so impose a potential security risk as this opens
access to the full power of CamelContext API. | false | boolean
| *allowTemplateFromHeader* (producer) | Whether to allow to use resource
template from header or not (default false). Enabling this allows to specify
dynamic templates via message header. However this can be seen as a potential
security vulnerability if the header is coming from a malicious user, so use
this with care. | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy
(on the first message). By starting lazy you can use this to allow CamelContext
and routes to startup in situations where a producer may otherwise fail during
starting and cause the route to fail being started. By deferring this startup
to be lazy then the startup failure can be handled during routing messages via
Camel's routing error handlers. Beware that when the first message is processed
then creating and [...]
+| *localizedLookup* (producer) | Enables/disables localized template lookup.
Disabled by default. | false | boolean
| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used
for automatic autowiring options (the option must be marked as autowired) by
looking up in the registry to find if there is a single instance of matching
type, which then gets configured on the component. This can be used for
automatic configuring JDBC data sources, JMS connection factories, AWS Clients,
etc. | true | boolean
| *configuration* (advanced) | To use an existing
freemarker.template.Configuration instance as the configuration. | |
Configuration
|===
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_9.adoc
b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_9.adoc
index dfd43f4..a0887d6 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_9.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_9.adoc
@@ -88,4 +88,10 @@ the one to use above, and then add which -starter JARs you
want to use in your C
=== Camel-Azure component
-- Camel-Azure has been reomved. Please switch to Camel-Azure-Storage-Blob and
Camel-Azure-Storage-Queue.
+- Camel-Azure has been removed. Please switch to Camel-Azure-Storage-Blob and
Camel-Azure-Storage-Queue.
+
+=== camel-freemarker component
+
+The freemarker component now has turned off localized lookup for templates.
+This can be turned back on by setting `localizedLookup=true` on the component.
+