This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new efc011e  Polish and cleanup documentation
efc011e is described below

commit efc011e8861f269519f873039076c12c723de8f1
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Aug 18 20:04:19 2021 +0200

    Polish and cleanup documentation
---
 .../src/main/docs/properties-component.adoc        | 222 +--------------------
 .../modules/ROOT/pages/properties-component.adoc   | 222 +--------------------
 .../ROOT/pages/using-propertyplaceholder.adoc      | 114 ++++-------
 3 files changed, 38 insertions(+), 520 deletions(-)

diff --git a/core/camel-base/src/main/docs/properties-component.adoc 
b/core/camel-base/src/main/docs/properties-component.adoc
index c3c2e91..530a3bf 100644
--- a/core/camel-base/src/main/docs/properties-component.adoc
+++ b/core/camel-base/src/main/docs/properties-component.adoc
@@ -16,7 +16,7 @@ However, for historical reasons it was named 
`PropertiesComponent` and this name
 IMPORTANT: See the 
xref:latest@manual:ROOT:using-propertyplaceholder.adoc[Property Placeholder] 
documentation for general information on using property placeholders in Camel.
 
 The properties component requires to load the properties (key=value pairs) 
from an external source such as `.properties` files.
-The component is pluggable and you can configure to use other sources or write 
a custom implementation (for example to load from a database).
+The component is pluggable, and you can configure to use other sources or 
write a custom implementation (for example to load from a database).
 
 
 == Defining location of properties files
@@ -120,226 +120,6 @@ For fine grained configuration of the location, then this 
can be done as follows
 </camelContext>
 ----
 
-== Additional property placeholder supported in Spring XML
-
-The property placeholders is also supported in many of the Camel Spring XML 
tags such as `<package>, <packageScan>, <contextScan>, <jmxAgent>, <endpoint>, 
<routeBuilder>, and the others.
-
-The example below has property placeholder in the `<jmxAgent>` tag:
-
-[source,xml]
-----
-<camelContext xmlns="http://camel.apache.org/schema/spring";>
-    <propertyPlaceholder id="properties" 
location="org/apache/camel/spring/jmx.properties"/>
-    <!-- we can use property placeholders when we define the JMX agent -->
-    <jmxAgent id="agent" disabled="{{myjmx.disabled}}"
-              usePlatformMBeanServer="{{myjmx.usePlatform}}"
-              statisticsLevel="RoutesOnly" useHostIPAddress="true"/>
-    <route id="foo" autoStartup="false">
-        <from uri="seda:start"/>
-        <to uri="mock:result"/>
-    </route>
-</camelContext>
-----
-
-You can also define property placeholders in the various attributes on the 
`<camelContext>` tag such as `trace` as shown here:
-
-[source,xml]
-----
-<camelContext trace="{{foo.trace}}" 
xmlns="http://camel.apache.org/schema/spring";>
-    <propertyPlaceholder id="properties" 
location="org/apache/camel/spring/processor/myprop.properties"/>
-    <template id="camelTemplate" defaultEndpoint="{{foo.cool}}"/>
-    <route>
-        <from uri="direct:start"/>
-        <setHeader name="{{foo.header}}">
-            <simple>${in.body} World!</simple>
-        </setHeader>
-        <to uri="mock:result"/>
-    </route>
-</camelContext>
-----
-
-== Using JVM system properties or Environment variables as override or 
fallback values
-
-The properties components supports using JVM system properties and also OS 
environment variables as values which can either be used as override or 
fallback values.
-
-The default mode is that both of them are in override mode, and they are check 
in the following order:
-
-1. OS environment variable (override mode)
-2. JVM system property (override mode)
-3. Property files and other locations
-4. OS environment variable (fallback mode)
-5. JVM system property (fallback mode)
-
-The check stops at first found property value for the key.
-
-You can control these modes using the `systemPropertiesMode` and 
`environmentVariableMode`
-options on the properties component.
-
-
-== Using out of the box functions
-
-The xref:properties-component.adoc[Properties] component includes the 
following functions out of the box:
-
-* `env` - A function to lookup the property from OS environment variables
-* `sys` - A function to lookup the property from Java JVM system properties
-* `service` - A function to lookup the property from OS environment variables 
using the service naming idiom
-* `service.name` - A function to lookup the property from OS environment 
variables using the service naming idiom returning the hostname part only
-* `service.port` - A function to lookup the property from OS environment 
variables using the service naming idiom returning the port part only
-
-As you can see these functions is intended to make it easy to lookup values 
from the environment.
-As they are provided out of the box, they can easily be used as shown below:
-
-[source,xml]
-----
-  <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-    <route>
-      <from uri="direct:start"/>
-      <to uri="{{env:SOMENAME}}"/>
-      <to uri="{{sys:MyJvmPropertyName}}"/>
-    </route>
-  </camelContext>
-----
-
-You can use default values as well, so if the property does not exist, you can 
define a default value as shown below, where the default value is a `log:foo` 
and `log:bar` value.
-
-[source,xml]
-----
-  <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-    <route>
-      <from uri="direct:start"/>
-      <to uri="{{env:SOMENAME:log:foo}}"/>
-      <to uri="{{sys:MyJvmPropertyName:log:bar}}"/>
-    </route>
-  </camelContext>
-----
-
-The service function is for looking up a service which is defined using OS 
environment variables using the service naming idiom, to refer to a service 
location using `hostname : port`
-
-* __NAME__**_SERVICE_HOST**
-* __NAME__**_SERVICE_PORT**
-
-in other words the service uses `_SERVICE_HOST` and `_SERVICE_PORT` as prefix.
-So if the service is named FOO, then the OS environment variables should be 
set as
-
-[source]
-----
-export $FOO_SERVICE_HOST=myserver
-export $FOO_SERVICE_PORT=8888
-----
-
-For example if the FOO service a remote HTTP service, then we can refer to the 
service in the Camel endpoint uri, and use the HTTP component to make the HTTP 
call:
-
-[source,xml]
-----
-<camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-  <route>
-    <from uri="direct:start"/>
-    <to uri="http://{`{service:FOO}`}/myapp"/>
-  </route>
-</camelContext>
-----
-
-And we can use default values if the service has not been defined, for example 
to call a service on localhost, maybe for unit testing etc
-
-[source,xml]
-----
-<camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-  <route>
-    <from uri="direct:start"/>
-    <to uri="http://{`{service:FOO:localhost:8080}`}/myapp"/>
-  </route>
-</camelContext>
-----
-
-== Using custom functions (advanced)
-
-The xref:properties-component.adoc[Properties] component allow to plugin 3rd 
party functions which can be used during parsing of the property placeholders.
-These functions are then able to do custom logic to resolve the placeholders, 
such as looking up in databases, do custom computations, or whatnot.
-The name of the function becomes the prefix used in the placeholder.
-This is best illustrated in the example code below
-
-[source,xml]
-----
-<beans>
-    <bean id="beerFunction" class="MyBeerFunction"/>
-
-    <camelContext>
-      <propertyPlaceholder id="properties">
-        <propertiesFunction ref="beerFunction"/>
-      </propertyPlaceholder>
-
-      <route>
-        <from uri="direct:start"/>
-        <to uri="{{beer:FOO}}"/>
-        <to uri="{{beer:BAR}}"/>
-      </route>
-    </camelContext>
-</beans>
-----
-
-Here we have a Camel XML route where we have defined the
-`<propertyPlaceholder>` to use a custom function, which we refer to be the 
bean id - eg the `beerFunction`.
-As the beer function uses `"beer"` as its name, then the placeholder syntax 
can trigger the beer function by starting with `beer:value`.
-
-The implementation of the function is only two methods as shown below:
-
-[source,java]
-----
-public static final class MyBeerFunction implements PropertiesFunction {
-
-    @Override
-    public String getName() {
-        return "beer";
-    }
-
-    @Override
-    public String apply(String remainder) {
-        return "mock:" + remainder.toLowerCase();
-    }
-}
-----
-
-The function must implement the `org.apache.camel.spi.PropertiesFunction` 
interface.
-The method `getName` is the name of the function, eg beer.
-And the `apply` method is where we implement the custom logic to do.
-As the sample code is from an unit test, it just returns a value to refer to a 
mock endpoint.
-
-To register a custom function from Java code is as shown below:
-
-[source,java]
-----
-PropertiesComponent pc = context.getPropertiesComponent();
-pc.addFunction(new MyBeerFunction());
-----
-
-== PropertySource
-
-The regular `PropertySource` will lookup the property on-demand, for example 
to lookup values from a backend source such as a database or HashiCorp Vault 
etc.
-
-=== LoadablePropertySource
-
-A `PropertySource` can define that it supports loading all its properties from 
the source at once, for example from file system.
-This allows Camel properties component to load these properties at once during 
startup.
-
-=== Using 3rd-party PropertySource
-
-The properties component allows to plugin 3rd party sources to load and lookup 
properties via the `PropertySource`
-API from camel-api.
-
-For example the `camel-microprofile-config` component is implemented using 
this.
-The 3rd-party `PropertySource` can automatic be discovered from classpath when 
Camel is starting up.
-This is done by include the file 
`META-INF/services/org/apache/camel/property-source-factory` file which refers 
to the fully qualified class name of the `PropertySource` implementation.
-
-See xref:components:others:microprofile-config.adoc[MicroProfile Config] 
component as an example.
-
-You can also register 3rd-party property sources via Java API:
-
-[source,java]
-----
-PropertiesComponent pc = context.getPropertiesComponent();
-pc.addPropertySource(myPropertySource);
-----
-
 
 == Spring Boot Auto-Configuration
 
diff --git a/docs/components/modules/ROOT/pages/properties-component.adoc 
b/docs/components/modules/ROOT/pages/properties-component.adoc
index 4da1bfc..e52792d 100644
--- a/docs/components/modules/ROOT/pages/properties-component.adoc
+++ b/docs/components/modules/ROOT/pages/properties-component.adoc
@@ -18,7 +18,7 @@ However, for historical reasons it was named 
`PropertiesComponent` and this name
 IMPORTANT: See the 
xref:latest@manual:ROOT:using-propertyplaceholder.adoc[Property Placeholder] 
documentation for general information on using property placeholders in Camel.
 
 The properties component requires to load the properties (key=value pairs) 
from an external source such as `.properties` files.
-The component is pluggable and you can configure to use other sources or write 
a custom implementation (for example to load from a database).
+The component is pluggable, and you can configure to use other sources or 
write a custom implementation (for example to load from a database).
 
 
 == Defining location of properties files
@@ -122,226 +122,6 @@ For fine grained configuration of the location, then this 
can be done as follows
 </camelContext>
 ----
 
-== Additional property placeholder supported in Spring XML
-
-The property placeholders is also supported in many of the Camel Spring XML 
tags such as `<package>, <packageScan>, <contextScan>, <jmxAgent>, <endpoint>, 
<routeBuilder>, and the others.
-
-The example below has property placeholder in the `<jmxAgent>` tag:
-
-[source,xml]
-----
-<camelContext xmlns="http://camel.apache.org/schema/spring";>
-    <propertyPlaceholder id="properties" 
location="org/apache/camel/spring/jmx.properties"/>
-    <!-- we can use property placeholders when we define the JMX agent -->
-    <jmxAgent id="agent" disabled="{{myjmx.disabled}}"
-              usePlatformMBeanServer="{{myjmx.usePlatform}}"
-              statisticsLevel="RoutesOnly" useHostIPAddress="true"/>
-    <route id="foo" autoStartup="false">
-        <from uri="seda:start"/>
-        <to uri="mock:result"/>
-    </route>
-</camelContext>
-----
-
-You can also define property placeholders in the various attributes on the 
`<camelContext>` tag such as `trace` as shown here:
-
-[source,xml]
-----
-<camelContext trace="{{foo.trace}}" 
xmlns="http://camel.apache.org/schema/spring";>
-    <propertyPlaceholder id="properties" 
location="org/apache/camel/spring/processor/myprop.properties"/>
-    <template id="camelTemplate" defaultEndpoint="{{foo.cool}}"/>
-    <route>
-        <from uri="direct:start"/>
-        <setHeader name="{{foo.header}}">
-            <simple>${in.body} World!</simple>
-        </setHeader>
-        <to uri="mock:result"/>
-    </route>
-</camelContext>
-----
-
-== Using JVM system properties or Environment variables as override or 
fallback values
-
-The properties components supports using JVM system properties and also OS 
environment variables as values which can either be used as override or 
fallback values.
-
-The default mode is that both of them are in override mode, and they are check 
in the following order:
-
-1. OS environment variable (override mode)
-2. JVM system property (override mode)
-3. Property files and other locations
-4. OS environment variable (fallback mode)
-5. JVM system property (fallback mode)
-
-The check stops at first found property value for the key.
-
-You can control these modes using the `systemPropertiesMode` and 
`environmentVariableMode`
-options on the properties component.
-
-
-== Using out of the box functions
-
-The xref:properties-component.adoc[Properties] component includes the 
following functions out of the box:
-
-* `env` - A function to lookup the property from OS environment variables
-* `sys` - A function to lookup the property from Java JVM system properties
-* `service` - A function to lookup the property from OS environment variables 
using the service naming idiom
-* `service.name` - A function to lookup the property from OS environment 
variables using the service naming idiom returning the hostname part only
-* `service.port` - A function to lookup the property from OS environment 
variables using the service naming idiom returning the port part only
-
-As you can see these functions is intended to make it easy to lookup values 
from the environment.
-As they are provided out of the box, they can easily be used as shown below:
-
-[source,xml]
-----
-  <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-    <route>
-      <from uri="direct:start"/>
-      <to uri="{{env:SOMENAME}}"/>
-      <to uri="{{sys:MyJvmPropertyName}}"/>
-    </route>
-  </camelContext>
-----
-
-You can use default values as well, so if the property does not exist, you can 
define a default value as shown below, where the default value is a `log:foo` 
and `log:bar` value.
-
-[source,xml]
-----
-  <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-    <route>
-      <from uri="direct:start"/>
-      <to uri="{{env:SOMENAME:log:foo}}"/>
-      <to uri="{{sys:MyJvmPropertyName:log:bar}}"/>
-    </route>
-  </camelContext>
-----
-
-The service function is for looking up a service which is defined using OS 
environment variables using the service naming idiom, to refer to a service 
location using `hostname : port`
-
-* __NAME__**_SERVICE_HOST**
-* __NAME__**_SERVICE_PORT**
-
-in other words the service uses `_SERVICE_HOST` and `_SERVICE_PORT` as prefix.
-So if the service is named FOO, then the OS environment variables should be 
set as
-
-[source]
-----
-export $FOO_SERVICE_HOST=myserver
-export $FOO_SERVICE_PORT=8888
-----
-
-For example if the FOO service a remote HTTP service, then we can refer to the 
service in the Camel endpoint uri, and use the HTTP component to make the HTTP 
call:
-
-[source,xml]
-----
-<camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-  <route>
-    <from uri="direct:start"/>
-    <to uri="http://{`{service:FOO}`}/myapp"/>
-  </route>
-</camelContext>
-----
-
-And we can use default values if the service has not been defined, for example 
to call a service on localhost, maybe for unit testing etc
-
-[source,xml]
-----
-<camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-  <route>
-    <from uri="direct:start"/>
-    <to uri="http://{`{service:FOO:localhost:8080}`}/myapp"/>
-  </route>
-</camelContext>
-----
-
-== Using custom functions (advanced)
-
-The xref:properties-component.adoc[Properties] component allow to plugin 3rd 
party functions which can be used during parsing of the property placeholders.
-These functions are then able to do custom logic to resolve the placeholders, 
such as looking up in databases, do custom computations, or whatnot.
-The name of the function becomes the prefix used in the placeholder.
-This is best illustrated in the example code below
-
-[source,xml]
-----
-<beans>
-    <bean id="beerFunction" class="MyBeerFunction"/>
-
-    <camelContext>
-      <propertyPlaceholder id="properties">
-        <propertiesFunction ref="beerFunction"/>
-      </propertyPlaceholder>
-
-      <route>
-        <from uri="direct:start"/>
-        <to uri="{{beer:FOO}}"/>
-        <to uri="{{beer:BAR}}"/>
-      </route>
-    </camelContext>
-</beans>
-----
-
-Here we have a Camel XML route where we have defined the
-`<propertyPlaceholder>` to use a custom function, which we refer to be the 
bean id - eg the `beerFunction`.
-As the beer function uses `"beer"` as its name, then the placeholder syntax 
can trigger the beer function by starting with `beer:value`.
-
-The implementation of the function is only two methods as shown below:
-
-[source,java]
-----
-public static final class MyBeerFunction implements PropertiesFunction {
-
-    @Override
-    public String getName() {
-        return "beer";
-    }
-
-    @Override
-    public String apply(String remainder) {
-        return "mock:" + remainder.toLowerCase();
-    }
-}
-----
-
-The function must implement the `org.apache.camel.spi.PropertiesFunction` 
interface.
-The method `getName` is the name of the function, eg beer.
-And the `apply` method is where we implement the custom logic to do.
-As the sample code is from an unit test, it just returns a value to refer to a 
mock endpoint.
-
-To register a custom function from Java code is as shown below:
-
-[source,java]
-----
-PropertiesComponent pc = context.getPropertiesComponent();
-pc.addFunction(new MyBeerFunction());
-----
-
-== PropertySource
-
-The regular `PropertySource` will lookup the property on-demand, for example 
to lookup values from a backend source such as a database or HashiCorp Vault 
etc.
-
-=== LoadablePropertySource
-
-A `PropertySource` can define that it supports loading all its properties from 
the source at once, for example from file system.
-This allows Camel properties component to load these properties at once during 
startup.
-
-=== Using 3rd-party PropertySource
-
-The properties component allows to plugin 3rd party sources to load and lookup 
properties via the `PropertySource`
-API from camel-api.
-
-For example the `camel-microprofile-config` component is implemented using 
this.
-The 3rd-party `PropertySource` can automatic be discovered from classpath when 
Camel is starting up.
-This is done by include the file 
`META-INF/services/org/apache/camel/property-source-factory` file which refers 
to the fully qualified class name of the `PropertySource` implementation.
-
-See xref:components:others:microprofile-config.adoc[MicroProfile Config] 
component as an example.
-
-You can also register 3rd-party property sources via Java API:
-
-[source,java]
-----
-PropertiesComponent pc = context.getPropertiesComponent();
-pc.addPropertySource(myPropertySource);
-----
-
 
 == Spring Boot Auto-Configuration
 
diff --git a/docs/user-manual/modules/ROOT/pages/using-propertyplaceholder.adoc 
b/docs/user-manual/modules/ROOT/pages/using-propertyplaceholder.adoc
index 30b35c9..4310936 100644
--- a/docs/user-manual/modules/ROOT/pages/using-propertyplaceholder.adoc
+++ b/docs/user-manual/modules/ROOT/pages/using-propertyplaceholder.adoc
@@ -101,9 +101,9 @@ In the example above then the FTP route or the JMS route 
should only be started.
 We can do this be negating the `autoStartup` in the JMS route, by using 
`!integration.ftpEnabled` as the key.
 
 
-== Example using property placeholders
+== Using property placeholders
 
-When using property placeholders in the endpoint URIs you should use this with 
the syntax `{{key}}` as shown in this example:
+When using property placeholders in the endpoint xref:uris.adoc[URIs] you 
should use this with the syntax `{{key}}` as shown in this example:
 
 [source,properties]
 ----
@@ -226,45 +226,6 @@ This can also be done when using 
xref:consumertemplate.adoc[ConsumerTemplate], s
 Object body = template.receiveBody("{{cool.start}}");
 ----
 
-== Using property placeholders with Simple language
-
-The xref:components:languages:simple-language.adoc[Simple] language now also 
support using property
-placeholders, for example in the route below:
-
-[source,properties]
-----
-cheese.quote = Camel rocks
-----
-
-And in the route you can use the placeholder with the usual syntax `{{key}}` 
as shown:
-
-[source,java]
-----
-from("direct:start")
-  .transform().simple("Hi ${body} do you think {{cheese.quote}}?");
-----
-
-What happens is that Camel will resolve the placeholder during initialization 
of the route,
-so the route becomes:
-
-[source,java]
-----
-from("direct:start")
-  .transform().simple("Hi ${body} do you think Camel rocks?");
-----
-
-So the simple language would not have any property placeholders anymore.
-This is the most common way.
-
-However, if the placeholder must be resolved by simple language itself,
-then you can use its `${properties}` function:
-
-[source,java]
-----
-from("direct:start")
-  .transform().simple("Hi ${body} do you think ${properties:cheese.quote}?");
-----
-
 == Resolving property placeholders from Java code
 
 If you need to resolve property placeholder(s) from some Java code, then Camel 
has two APIs for this:
@@ -434,7 +395,7 @@ Notice how the hello bean is using pure Spring property 
placeholders using
 the `${}` notation. And in the Camel routes we use the Camel
 placeholder notation with `{{key}}`.
 
-== Using out of the box functions
+== Using property placeholder functions
 
 The xref:components::properties-component.adoc[Properties] component includes 
the following functions out of the box:
 
@@ -444,31 +405,30 @@ The 
xref:components::properties-component.adoc[Properties] component includes th
 * `service.name` - A function to lookup the property from OS environment 
variables using the service naming idiom returning the hostname part only
 * `service.port` - A function to lookup the property from OS environment 
variables using the service naming idiom returning the port part only
 
-As you can see these functions is intended to make it easy to lookup values 
from the environment.
-As they are provided out of the box, they can easily be used as shown below:
+These functions are intended to make it easy to lookup values from the 
environment, as shown in the example below:
 
 [source,xml]
 ----
-  <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
+<camelContext>
     <route>
-      <from uri="direct:start"/>
-      <to uri="{{env:SOMENAME}}"/>
-      <to uri="{{sys:MyJvmPropertyName}}"/>
+        <from uri="direct:start"/>
+        <to uri="{{env:SOMENAME}}"/>
+        <to uri="{{sys:MyJvmPropertyName}}"/>
     </route>
-  </camelContext>
+</camelContext>
 ----
 
 You can use default values as well, so if the property does not exist, you can 
define a default value as shown below, where the default value is a `log:foo` 
and `log:bar` value.
 
 [source,xml]
 ----
-  <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
+<camelContext>
     <route>
-      <from uri="direct:start"/>
-      <to uri="{{env:SOMENAME:log:foo}}"/>
-      <to uri="{{sys:MyJvmPropertyName:log:bar}}"/>
+        <from uri="direct:start"/>
+        <to uri="{{env:SOMENAME:log:foo}}"/>
+        <to uri="{{sys:MyJvmPropertyName:log:bar}}"/>
     </route>
-  </camelContext>
+</camelContext>
 ----
 
 The service function is for looking up a service which is defined using OS 
environment variables using the service naming idiom, to refer to a service 
location using `hostname : port`
@@ -479,7 +439,7 @@ The service function is for looking up a service which is 
defined using OS envir
 in other words the service uses `_SERVICE_HOST` and `_SERVICE_PORT` as prefix.
 So if the service is named FOO, then the OS environment variables should be 
set as
 
-[source]
+[source,bash]
 ----
 export $FOO_SERVICE_HOST=myserver
 export $FOO_SERVICE_PORT=8888
@@ -489,33 +449,33 @@ For example if the FOO service a remote HTTP service, 
then we can refer to the s
 
 [source,xml]
 ----
-<camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-  <route>
-    <from uri="direct:start"/>
-    <to uri="http://{`{service:FOO}`}/myapp"/>
-  </route>
+<camelContext>
+    <route>
+        <from uri="direct:start"/>
+        <to uri="http://{{service:FOO}}/myapp"/>
+    </route>
 </camelContext>
 ----
 
-And we can use default values if the service has not been defined, for example 
to call a service on localhost, maybe for unit testing etc
+And we can use default values if the service has not been defined, for example 
to call a service on localhost, maybe for unit testing.
 
 [source,xml]
 ----
-<camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-  <route>
+<camelContext>
+<route>
     <from uri="direct:start"/>
-    <to uri="http://{`{service:FOO:localhost:8080}`}/myapp"/>
-  </route>
+    <to uri="http://{{service:FOO:localhost:8080}}/myapp"/>
+</route>
 </camelContext>
 ----
 
-== Using custom functions (advanced)
+=== Using custom property placeholder functions
 
 The xref:components::properties-component.adoc[Properties] component allow to 
plugin 3rd party functions which can be used during parsing of the property 
placeholders.
 These functions are then able to do custom logic to resolve the placeholders, 
such as looking up in databases, do custom computations, or whatnot.
 The name of the function becomes the prefix used in the placeholder.
 
-This is best illustrated in the example code below
+This is best illustrated in the example code below with Spring XML files:
 
 [source,xml]
 ----
@@ -536,15 +496,15 @@ This is best illustrated in the example code below
 </beans>
 ----
 
-Here we have a Camel XML route where we have defined the
-`<propertyPlaceholder>` to use a custom function, which we refer to be the 
bean id - eg the `beerFunction`.
+Here we have a Camel Spring XML route where we have defined the
+`<propertyPlaceholder>` to use a custom function, which we refer to be the 
bean id (`beerFunction`).
 As the beer function uses `"beer"` as its name, then the placeholder syntax 
can trigger the beer function by starting with `beer:value`.
 
 The implementation of the function is only two methods as shown below:
 
 [source,java]
 ----
-public static final class MyBeerFunction implements PropertiesFunction {
+public class MyBeerFunction implements PropertiesFunction {
 
     @Override
     public String getName() {
@@ -559,9 +519,9 @@ public static final class MyBeerFunction implements 
PropertiesFunction {
 ----
 
 The function must implement the `org.apache.camel.spi.PropertiesFunction` 
interface.
-The method `getName` is the name of the function, eg beer.
+The method `getName` is the name of the function (beer).
 And the `apply` method is where we implement the custom logic to do.
-As the sample code is from an unit test, it just returns a value to refer to a 
mock endpoint.
+As the sample code is from a unit test, it just returns a value to refer to a 
mock endpoint.
 
 To register a custom function from Java code is as shown below:
 
@@ -571,7 +531,10 @@ PropertiesComponent pc = context.getPropertiesComponent();
 pc.addFunction(new MyBeerFunction());
 ----
 
-== Writing custom property sources (advanced)
+== Using third party property sources
+
+The properties component allows to plugin 3rd party sources to load and lookup 
properties via the `PropertySource`
+API from camel-api.
 
 The regular `PropertySource` will lookup the property on-demand,
 for example to lookup values from a backend source such as a database or 
HashiCorp Vault etc.
@@ -580,11 +543,6 @@ A `PropertySource` can define that it supports loading all 
its properties
 (by implementing `LoadablePropertiesSource`) from the source at once, for 
example from file system.
 This allows Camel properties component to load these properties at once during 
startup.
 
-=== Using third party property sources
-
-The properties component allows to plugin 3rd party sources to load and lookup 
properties via the `PropertySource`
-API from camel-api.
-
 For example the `camel-microprofile-config` component is implemented using 
this.
 The 3rd-party `PropertySource` can automatic be discovered from classpath when 
Camel is starting up.
 This is done by include the file 
`META-INF/services/org/apache/camel/property-source-factory` file which refers 
to the fully qualified class name of the `PropertySource` implementation.

Reply via email to