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

acosentino pushed a commit to branch infinispan-key
in repository https://gitbox.apache.org/repos/asf/camel.git

commit a428daa9ca97f0d185d8b72f45c96b3d39c47953
Author: Andrea Cosentino <[email protected]>
AuthorDate: Thu Oct 1 16:03:36 2020 +0200

    CAMEL-15609 - Camel-Infinispan: Add an explicit key uri parameter for 
producer
---
 .../camel/catalog/docs/infinispan-component.adoc   |  12 +-
 .../infinispan/InfinispanComponentConfigurer.java  |  16 ++
 .../infinispan/InfinispanEndpointConfigurer.java   |  16 ++
 .../infinispan/InfinispanEndpointUriFactory.java   |   6 +-
 .../camel/component/infinispan/infinispan.json     |   8 +
 .../src/main/docs/infinispan-component.adoc        |  12 +-
 .../infinispan/InfinispanConfiguration.java        |  53 +++++++
 .../component/infinispan/InfinispanProducer.java   | 175 ++++++++++++++++++---
 .../dsl/InfinispanComponentBuilderFactory.java     |  49 ++++++
 .../dsl/InfinispanEndpointBuilderFactory.java      |  90 +++++++++++
 .../modules/ROOT/pages/infinispan-component.adoc   |  12 +-
 11 files changed, 417 insertions(+), 32 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/infinispan-component.adoc
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/infinispan-component.adoc
index 6efd241..32f9729 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/infinispan-component.adoc
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/infinispan-component.adoc
@@ -63,7 +63,7 @@ If no cache configuration is provided, embedded 
cacheContainer is created direct
 
 
 // component options: START
-The Infinispan component supports 19 options, which are listed below.
+The Infinispan component supports 23 options, which are listed below.
 
 
 
@@ -79,8 +79,12 @@ The Infinispan component supports 19 options, which are 
listed below.
 | *customListener* (consumer) | Returns the custom listener in use, if 
provided |  | InfinispanCustomListener
 | *eventTypes* (consumer) | Specifies the set of event types to register by 
the consumer. Multiple event can be separated by comma. The possible event 
types are: CACHE_ENTRY_ACTIVATED, CACHE_ENTRY_PASSIVATED, CACHE_ENTRY_VISITED, 
CACHE_ENTRY_LOADED, CACHE_ENTRY_EVICTED, CACHE_ENTRY_CREATED, 
CACHE_ENTRY_REMOVED, CACHE_ENTRY_MODIFIED, TRANSACTION_COMPLETED, 
TRANSACTION_REGISTERED, CACHE_ENTRY_INVALIDATED, DATA_REHASHED, 
TOPOLOGY_CHANGED, PARTITION_STATUS_CHANGED |  | String
 | *sync* (consumer) | If true, the consumer will receive notifications 
synchronously | true | boolean
+| *defaultValue* (producer) | Set a specific default value for some producer 
operations |  | Object
+| *key* (producer) | Set a specific key for producer operations |  | Object
 | *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 [...]
+| *oldValue* (producer) | Set a specific old value for some producer 
operations |  | Object
 | *operation* (producer) | The operation to perform. There are 21 enums and 
the value can be one of: PUT, PUTASYNC, PUTALL, PUTALLASYNC, PUTIFABSENT, 
PUTIFABSENTASYNC, GET, GETORDEFAULT, CONTAINSKEY, CONTAINSVALUE, REMOVE, 
REMOVEASYNC, REPLACE, REPLACEASYNC, SIZE, CLEAR, CLEARASYNC, QUERY, STATS, 
COMPUTE, COMPUTEASYNC | PUT | InfinispanOperation
+| *value* (producer) | Set a specific value for producer operations |  | Object
 | *basicPropertyBinding* (advanced) | *Deprecated* Whether the component 
should use basic property binding (Camel 2.x) or the newer property binding 
with additional capabilities | false | boolean
 | *cacheContainer* (advanced) | Specifies the cache Container to connect |  | 
BasicCacheContainer
 | *cacheContainerConfiguration* (advanced) | The CacheContainer configuration. 
Uses if the cacheContainer is not defined. Must be the following types: 
org.infinispan.client.hotrod.configuration.Configuration - for remote cache 
interaction configuration; org.infinispan.configuration.cache.Configuration - 
for embedded cache interaction configuration; |  | Object
@@ -114,7 +118,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (21 parameters):
+=== Query Parameters (25 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -130,8 +134,12 @@ with the following path and query parameters:
 | *sync* (consumer) | If true, the consumer will receive notifications 
synchronously | true | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom 
ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this 
option is not in use. By default the consumer will deal with exceptions, that 
will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer 
creates an exchange. There are 3 enums and the value can be one of: InOnly, 
InOut, InOptionalOut |  | ExchangePattern
+| *defaultValue* (producer) | Set a specific default value for some producer 
operations |  | Object
+| *key* (producer) | Set a specific key for producer operations |  | Object
 | *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 [...]
+| *oldValue* (producer) | Set a specific old value for some producer 
operations |  | Object
 | *operation* (producer) | The operation to perform. There are 21 enums and 
the value can be one of: PUT, PUTASYNC, PUTALL, PUTALLASYNC, PUTIFABSENT, 
PUTIFABSENTASYNC, GET, GETORDEFAULT, CONTAINSKEY, CONTAINSVALUE, REMOVE, 
REMOVEASYNC, REPLACE, REPLACEASYNC, SIZE, CLEAR, CLEARASYNC, QUERY, STATS, 
COMPUTE, COMPUTEASYNC | PUT | InfinispanOperation
+| *value* (producer) | Set a specific value for producer operations |  | Object
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
 | *cacheContainer* (advanced) | Specifies the cache Container to connect |  | 
BasicCacheContainer
 | *cacheContainerConfiguration* (advanced) | The CacheContainer configuration. 
Uses if the cacheContainer is not defined. Must be the following types: 
org.infinispan.client.hotrod.configuration.Configuration - for remote cache 
interaction configuration; org.infinispan.configuration.cache.Configuration - 
for embedded cache interaction configuration; |  | Object
diff --git 
a/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanComponentConfigurer.java
 
b/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanComponentConfigurer.java
index 553da15..85eca9a 100644
--- 
a/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanComponentConfigurer.java
+++ 
b/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanComponentConfigurer.java
@@ -27,8 +27,12 @@ public class InfinispanComponentConfigurer extends 
PropertyConfigurerSupport imp
         map.put("customListener", 
org.apache.camel.component.infinispan.InfinispanCustomListener.class);
         map.put("eventTypes", java.lang.String.class);
         map.put("sync", boolean.class);
+        map.put("defaultValue", java.lang.Object.class);
+        map.put("key", java.lang.Object.class);
         map.put("lazyStartProducer", boolean.class);
+        map.put("oldValue", java.lang.Object.class);
         map.put("operation", 
org.apache.camel.component.infinispan.InfinispanOperation.class);
+        map.put("value", java.lang.Object.class);
         map.put("basicPropertyBinding", boolean.class);
         map.put("cacheContainer", 
org.infinispan.commons.api.BasicCacheContainer.class);
         map.put("cacheContainerConfiguration", java.lang.Object.class);
@@ -69,12 +73,17 @@ public class InfinispanComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "configurationUri": 
getOrCreateConfiguration(target).setConfigurationUri(property(camelContext, 
java.lang.String.class, value)); return true;
         case "customlistener":
         case "customListener": 
getOrCreateConfiguration(target).setCustomListener(property(camelContext, 
org.apache.camel.component.infinispan.InfinispanCustomListener.class, value)); 
return true;
+        case "defaultvalue":
+        case "defaultValue": 
getOrCreateConfiguration(target).setDefaultValue(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "eventtypes":
         case "eventTypes": 
getOrCreateConfiguration(target).setEventTypes(property(camelContext, 
java.lang.String.class, value)); return true;
         case "flags": 
getOrCreateConfiguration(target).setFlags(property(camelContext, 
java.lang.String.class, value)); return true;
         case "hosts": 
getOrCreateConfiguration(target).setHosts(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "key": 
getOrCreateConfiguration(target).setKey(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        case "oldvalue":
+        case "oldValue": 
getOrCreateConfiguration(target).setOldValue(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "operation": 
getOrCreateConfiguration(target).setOperation(property(camelContext, 
org.apache.camel.component.infinispan.InfinispanOperation.class, value)); 
return true;
         case "querybuilder":
         case "queryBuilder": 
getOrCreateConfiguration(target).setQueryBuilder(property(camelContext, 
org.apache.camel.component.infinispan.InfinispanQueryBuilder.class, value)); 
return true;
@@ -83,6 +92,7 @@ public class InfinispanComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "resultheader":
         case "resultHeader": 
getOrCreateConfiguration(target).setResultHeader(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "sync": 
getOrCreateConfiguration(target).setSync(property(camelContext, boolean.class, 
value)); return true;
+        case "value": 
getOrCreateConfiguration(target).setValue(property(camelContext, 
java.lang.Object.class, value)); return true;
         default: return false;
         }
     }
@@ -114,12 +124,17 @@ public class InfinispanComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "configurationUri": return 
getOrCreateConfiguration(target).getConfigurationUri();
         case "customlistener":
         case "customListener": return 
getOrCreateConfiguration(target).getCustomListener();
+        case "defaultvalue":
+        case "defaultValue": return 
getOrCreateConfiguration(target).getDefaultValue();
         case "eventtypes":
         case "eventTypes": return 
getOrCreateConfiguration(target).getEventTypes();
         case "flags": return getOrCreateConfiguration(target).getFlags();
         case "hosts": return getOrCreateConfiguration(target).getHosts();
+        case "key": return getOrCreateConfiguration(target).getKey();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "oldvalue":
+        case "oldValue": return getOrCreateConfiguration(target).getOldValue();
         case "operation": return 
getOrCreateConfiguration(target).getOperation();
         case "querybuilder":
         case "queryBuilder": return 
getOrCreateConfiguration(target).getQueryBuilder();
@@ -128,6 +143,7 @@ public class InfinispanComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "resultheader":
         case "resultHeader": return 
getOrCreateConfiguration(target).getResultHeader();
         case "sync": return getOrCreateConfiguration(target).isSync();
+        case "value": return getOrCreateConfiguration(target).getValue();
         default: return null;
         }
     }
diff --git 
a/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanEndpointConfigurer.java
 
b/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanEndpointConfigurer.java
index be0d21f..a86afa0 100644
--- 
a/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanEndpointConfigurer.java
+++ 
b/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanEndpointConfigurer.java
@@ -29,8 +29,12 @@ public class InfinispanEndpointConfigurer extends 
PropertyConfigurerSupport impl
         map.put("sync", boolean.class);
         map.put("exceptionHandler", 
org.apache.camel.spi.ExceptionHandler.class);
         map.put("exchangePattern", org.apache.camel.ExchangePattern.class);
+        map.put("defaultValue", java.lang.Object.class);
+        map.put("key", java.lang.Object.class);
         map.put("lazyStartProducer", boolean.class);
+        map.put("oldValue", java.lang.Object.class);
         map.put("operation", 
org.apache.camel.component.infinispan.InfinispanOperation.class);
+        map.put("value", java.lang.Object.class);
         map.put("basicPropertyBinding", boolean.class);
         map.put("cacheContainer", 
org.infinispan.commons.api.BasicCacheContainer.class);
         map.put("cacheContainerConfiguration", java.lang.Object.class);
@@ -64,6 +68,8 @@ public class InfinispanEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "configurationUri": 
target.getConfiguration().setConfigurationUri(property(camelContext, 
java.lang.String.class, value)); return true;
         case "customlistener":
         case "customListener": 
target.getConfiguration().setCustomListener(property(camelContext, 
org.apache.camel.component.infinispan.InfinispanCustomListener.class, value)); 
return true;
+        case "defaultvalue":
+        case "defaultValue": 
target.getConfiguration().setDefaultValue(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "eventtypes":
         case "eventTypes": 
target.getConfiguration().setEventTypes(property(camelContext, 
java.lang.String.class, value)); return true;
         case "exceptionhandler":
@@ -72,8 +78,11 @@ public class InfinispanEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "exchangePattern": 
target.setExchangePattern(property(camelContext, 
org.apache.camel.ExchangePattern.class, value)); return true;
         case "flags": 
target.getConfiguration().setFlags(property(camelContext, 
java.lang.String.class, value)); return true;
         case "hosts": 
target.getConfiguration().setHosts(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "key": target.getConfiguration().setKey(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        case "oldvalue":
+        case "oldValue": 
target.getConfiguration().setOldValue(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "operation": 
target.getConfiguration().setOperation(property(camelContext, 
org.apache.camel.component.infinispan.InfinispanOperation.class, value)); 
return true;
         case "querybuilder":
         case "queryBuilder": 
target.getConfiguration().setQueryBuilder(property(camelContext, 
org.apache.camel.component.infinispan.InfinispanQueryBuilder.class, value)); 
return true;
@@ -83,6 +92,7 @@ public class InfinispanEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "resultHeader": 
target.getConfiguration().setResultHeader(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "sync": target.getConfiguration().setSync(property(camelContext, 
boolean.class, value)); return true;
         case "synchronous": target.setSynchronous(property(camelContext, 
boolean.class, value)); return true;
+        case "value": 
target.getConfiguration().setValue(property(camelContext, 
java.lang.Object.class, value)); return true;
         default: return false;
         }
     }
@@ -113,6 +123,8 @@ public class InfinispanEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "configurationUri": return 
target.getConfiguration().getConfigurationUri();
         case "customlistener":
         case "customListener": return 
target.getConfiguration().getCustomListener();
+        case "defaultvalue":
+        case "defaultValue": return 
target.getConfiguration().getDefaultValue();
         case "eventtypes":
         case "eventTypes": return target.getConfiguration().getEventTypes();
         case "exceptionhandler":
@@ -121,8 +133,11 @@ public class InfinispanEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "exchangePattern": return target.getExchangePattern();
         case "flags": return target.getConfiguration().getFlags();
         case "hosts": return target.getConfiguration().getHosts();
+        case "key": return target.getConfiguration().getKey();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "oldvalue":
+        case "oldValue": return target.getConfiguration().getOldValue();
         case "operation": return target.getConfiguration().getOperation();
         case "querybuilder":
         case "queryBuilder": return 
target.getConfiguration().getQueryBuilder();
@@ -132,6 +147,7 @@ public class InfinispanEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "resultHeader": return 
target.getConfiguration().getResultHeader();
         case "sync": return target.getConfiguration().isSync();
         case "synchronous": return target.isSynchronous();
+        case "value": return target.getConfiguration().getValue();
         default: return null;
         }
     }
diff --git 
a/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanEndpointUriFactory.java
 
b/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanEndpointUriFactory.java
index 139daff..8ea5c26 100644
--- 
a/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanEndpointUriFactory.java
+++ 
b/components/camel-infinispan/src/generated/java/org/apache/camel/component/infinispan/InfinispanEndpointUriFactory.java
@@ -18,7 +18,7 @@ public class InfinispanEndpointUriFactory extends 
org.apache.camel.support.compo
 
     private static final Set<String> PROPERTY_NAMES;
     static {
-        Set<String> set = new HashSet<>(22);
+        Set<String> set = new HashSet<>(26);
         set.add("cacheName");
         set.add("hosts");
         set.add("queryBuilder");
@@ -30,8 +30,12 @@ public class InfinispanEndpointUriFactory extends 
org.apache.camel.support.compo
         set.add("sync");
         set.add("exceptionHandler");
         set.add("exchangePattern");
+        set.add("defaultValue");
+        set.add("key");
         set.add("lazyStartProducer");
+        set.add("oldValue");
         set.add("operation");
+        set.add("value");
         set.add("basicPropertyBinding");
         set.add("cacheContainer");
         set.add("cacheContainerConfiguration");
diff --git 
a/components/camel-infinispan/src/generated/resources/org/apache/camel/component/infinispan/infinispan.json
 
b/components/camel-infinispan/src/generated/resources/org/apache/camel/component/infinispan/infinispan.json
index 7d00baf..e7d0613 100644
--- 
a/components/camel-infinispan/src/generated/resources/org/apache/camel/component/infinispan/infinispan.json
+++ 
b/components/camel-infinispan/src/generated/resources/org/apache/camel/component/infinispan/infinispan.json
@@ -31,8 +31,12 @@
     "customListener": { "kind": "property", "displayName": "Custom Listener", 
"group": "consumer", "label": "consumer", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.infinispan.InfinispanCustomListener", 
"deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Returns the custom 
listener in use, if provided" },
     "eventTypes": { "kind": "property", "displayName": "Event Types", "group": 
"consumer", "label": "consumer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Specifies the set of 
event types to register by the consumer. Multiple event can be separated by 
comma. The possible event types ar [...]
     "sync": { "kind": "property", "displayName": "Sync", "group": "consumer", 
"label": "consumer", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "secret": false, "defaultValue": "true", 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "If true, the consumer 
will receive notifications synchronously" },
+    "defaultValue": { "kind": "property", "displayName": "Default Value", 
"group": "producer", "label": "producer", "required": false, "type": "object", 
"javaType": "java.lang.Object", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Set a specific default 
value for some producer operations" },
+    "key": { "kind": "property", "displayName": "Key", "group": "producer", 
"label": "producer", "required": false, "type": "object", "javaType": 
"java.lang.Object", "deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Set a specific key for 
producer operations" },
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": 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 starting and cause the r [...]
+    "oldValue": { "kind": "property", "displayName": "Old Value", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": "java.lang.Object", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Set a specific old value 
for some producer operations" },
     "operation": { "kind": "property", "displayName": "Operation", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.infinispan.InfinispanOperation", 
"enum": [ "PUT", "PUTASYNC", "PUTALL", "PUTALLASYNC", "PUTIFABSENT", 
"PUTIFABSENTASYNC", "GET", "GETORDEFAULT", "CONTAINSKEY", "CONTAINSVALUE", 
"REMOVE", "REMOVEASYNC", "REPLACE", "REPLACEASYNC", "SIZE", "CLEAR", 
"CLEARASYNC", "QUERY", "STATS", "COMPUTE", "COMPUTEASYNC" ], [...]
+    "value": { "kind": "property", "displayName": "Value", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": "java.lang.Object", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Set a specific value for 
producer operations" },
     "basicPropertyBinding": { "kind": "property", "displayName": "Basic 
Property Binding", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": true, "secret": false, 
"defaultValue": false, "description": "Whether the component should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities" },
     "cacheContainer": { "kind": "property", "displayName": "Cache Container", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "org.infinispan.commons.api.BasicCacheContainer", "deprecated": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Specifies the cache 
Container to connect" },
     "cacheContainerConfiguration": { "kind": "property", "displayName": "Cache 
Container Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "The CacheContainer 
configuration. Uses if the cacheContainer is not defined. Must be the followi 
[...]
@@ -54,8 +58,12 @@
     "sync": { "kind": "parameter", "displayName": "Sync", "group": "consumer", 
"label": "consumer", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "secret": false, "defaultValue": "true", 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "If true, the consumer 
will receive notifications synchronously" },
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception 
Handler", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "secret": false, "description": "To let the consumer use a 
custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled 
then this option is not in use. By default the consumer will deal with [...]
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange 
Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", 
"InOptionalOut" ], "deprecated": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "defaultValue": { "kind": "parameter", "displayName": "Default Value", 
"group": "producer", "label": "producer", "required": false, "type": "object", 
"javaType": "java.lang.Object", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Set a specific default 
value for some producer operations" },
+    "key": { "kind": "parameter", "displayName": "Key", "group": "producer", 
"label": "producer", "required": false, "type": "object", "javaType": 
"java.lang.Object", "deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Set a specific key for 
producer operations" },
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": 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 starting and cause the  [...]
+    "oldValue": { "kind": "parameter", "displayName": "Old Value", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": "java.lang.Object", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Set a specific old value 
for some producer operations" },
     "operation": { "kind": "parameter", "displayName": "Operation", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.infinispan.InfinispanOperation", 
"enum": [ "PUT", "PUTASYNC", "PUTALL", "PUTALLASYNC", "PUTIFABSENT", 
"PUTIFABSENTASYNC", "GET", "GETORDEFAULT", "CONTAINSKEY", "CONTAINSVALUE", 
"REMOVE", "REMOVEASYNC", "REPLACE", "REPLACEASYNC", "SIZE", "CLEAR", 
"CLEARASYNC", "QUERY", "STATS", "COMPUTE", "COMPUTEASYNC" ] [...]
+    "value": { "kind": "parameter", "displayName": "Value", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": "java.lang.Object", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Set a specific value for 
producer operations" },
     "basicPropertyBinding": { "kind": "parameter", "displayName": "Basic 
Property Binding", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities" },
     "cacheContainer": { "kind": "parameter", "displayName": "Cache Container", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "org.infinispan.commons.api.BasicCacheContainer", "deprecated": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "Specifies the cache 
Container to connect" },
     "cacheContainerConfiguration": { "kind": "parameter", "displayName": 
"Cache Container Configuration", "group": "advanced", "label": "advanced", 
"required": false, "type": "object", "javaType": "java.lang.Object", 
"deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.infinispan.InfinispanConfiguration", 
"configurationField": "configuration", "description": "The CacheContainer 
configuration. Uses if the cacheContainer is not defined. Must be the follow 
[...]
diff --git 
a/components/camel-infinispan/src/main/docs/infinispan-component.adoc 
b/components/camel-infinispan/src/main/docs/infinispan-component.adoc
index 6efd241..32f9729 100644
--- a/components/camel-infinispan/src/main/docs/infinispan-component.adoc
+++ b/components/camel-infinispan/src/main/docs/infinispan-component.adoc
@@ -63,7 +63,7 @@ If no cache configuration is provided, embedded 
cacheContainer is created direct
 
 
 // component options: START
-The Infinispan component supports 19 options, which are listed below.
+The Infinispan component supports 23 options, which are listed below.
 
 
 
@@ -79,8 +79,12 @@ The Infinispan component supports 19 options, which are 
listed below.
 | *customListener* (consumer) | Returns the custom listener in use, if 
provided |  | InfinispanCustomListener
 | *eventTypes* (consumer) | Specifies the set of event types to register by 
the consumer. Multiple event can be separated by comma. The possible event 
types are: CACHE_ENTRY_ACTIVATED, CACHE_ENTRY_PASSIVATED, CACHE_ENTRY_VISITED, 
CACHE_ENTRY_LOADED, CACHE_ENTRY_EVICTED, CACHE_ENTRY_CREATED, 
CACHE_ENTRY_REMOVED, CACHE_ENTRY_MODIFIED, TRANSACTION_COMPLETED, 
TRANSACTION_REGISTERED, CACHE_ENTRY_INVALIDATED, DATA_REHASHED, 
TOPOLOGY_CHANGED, PARTITION_STATUS_CHANGED |  | String
 | *sync* (consumer) | If true, the consumer will receive notifications 
synchronously | true | boolean
+| *defaultValue* (producer) | Set a specific default value for some producer 
operations |  | Object
+| *key* (producer) | Set a specific key for producer operations |  | Object
 | *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 [...]
+| *oldValue* (producer) | Set a specific old value for some producer 
operations |  | Object
 | *operation* (producer) | The operation to perform. There are 21 enums and 
the value can be one of: PUT, PUTASYNC, PUTALL, PUTALLASYNC, PUTIFABSENT, 
PUTIFABSENTASYNC, GET, GETORDEFAULT, CONTAINSKEY, CONTAINSVALUE, REMOVE, 
REMOVEASYNC, REPLACE, REPLACEASYNC, SIZE, CLEAR, CLEARASYNC, QUERY, STATS, 
COMPUTE, COMPUTEASYNC | PUT | InfinispanOperation
+| *value* (producer) | Set a specific value for producer operations |  | Object
 | *basicPropertyBinding* (advanced) | *Deprecated* Whether the component 
should use basic property binding (Camel 2.x) or the newer property binding 
with additional capabilities | false | boolean
 | *cacheContainer* (advanced) | Specifies the cache Container to connect |  | 
BasicCacheContainer
 | *cacheContainerConfiguration* (advanced) | The CacheContainer configuration. 
Uses if the cacheContainer is not defined. Must be the following types: 
org.infinispan.client.hotrod.configuration.Configuration - for remote cache 
interaction configuration; org.infinispan.configuration.cache.Configuration - 
for embedded cache interaction configuration; |  | Object
@@ -114,7 +118,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (21 parameters):
+=== Query Parameters (25 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -130,8 +134,12 @@ with the following path and query parameters:
 | *sync* (consumer) | If true, the consumer will receive notifications 
synchronously | true | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom 
ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this 
option is not in use. By default the consumer will deal with exceptions, that 
will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer 
creates an exchange. There are 3 enums and the value can be one of: InOnly, 
InOut, InOptionalOut |  | ExchangePattern
+| *defaultValue* (producer) | Set a specific default value for some producer 
operations |  | Object
+| *key* (producer) | Set a specific key for producer operations |  | Object
 | *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 [...]
+| *oldValue* (producer) | Set a specific old value for some producer 
operations |  | Object
 | *operation* (producer) | The operation to perform. There are 21 enums and 
the value can be one of: PUT, PUTASYNC, PUTALL, PUTALLASYNC, PUTIFABSENT, 
PUTIFABSENTASYNC, GET, GETORDEFAULT, CONTAINSKEY, CONTAINSVALUE, REMOVE, 
REMOVEASYNC, REPLACE, REPLACEASYNC, SIZE, CLEAR, CLEARASYNC, QUERY, STATS, 
COMPUTE, COMPUTEASYNC | PUT | InfinispanOperation
+| *value* (producer) | Set a specific value for producer operations |  | Object
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
 | *cacheContainer* (advanced) | Specifies the cache Container to connect |  | 
BasicCacheContainer
 | *cacheContainerConfiguration* (advanced) | The CacheContainer configuration. 
Uses if the cacheContainer is not defined. Must be the following types: 
org.infinispan.client.hotrod.configuration.Configuration - for remote cache 
interaction configuration; org.infinispan.configuration.cache.Configuration - 
for embedded cache interaction configuration; |  | Object
diff --git 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConfiguration.java
 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConfiguration.java
index 3e920c3..5c6a634 100644
--- 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConfiguration.java
+++ 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConfiguration.java
@@ -35,6 +35,14 @@ public class InfinispanConfiguration implements Cloneable {
     private String hosts;
     @UriParam(label = "producer", defaultValue = "PUT")
     private InfinispanOperation operation = InfinispanOperation.PUT;
+    @UriParam(label = "producer")
+    private Object key;
+    @UriParam(label = "producer")
+    private Object value;
+    @UriParam(label = "producer")
+    private Object oldValue;
+    @UriParam(label = "producer")
+    private Object defaultValue;
     @Deprecated
     @UriParam(label = "consumer", defaultValue = "PUT")
     private String command = "PUT";
@@ -302,4 +310,49 @@ public class InfinispanConfiguration implements Cloneable {
     public void setRemappingFunction(BiFunction remappingFunction) {
         this.remappingFunction = remappingFunction;
     }
+
+    public Object getKey() {
+        return key;
+    }
+
+    /**
+     * Set a specific key for producer operations
+     */
+    public void setKey(Object key) {
+        this.key = key;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    /**
+     * Set a specific value for producer operations
+     */
+    public void setValue(Object value) {
+        this.value = value;
+    }
+
+    public Object getOldValue() {
+        return oldValue;
+    }
+
+    /**
+     * Set a specific old value for some producer operations
+     */
+    public void setOldValue(Object oldValue) {
+        this.oldValue = oldValue;
+    }
+
+    public Object getDefaultValue() {
+        return defaultValue;
+    }
+
+    /**
+     * Set a specific default value for some producer operations
+     */
+    public void setDefaultValue(Object defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+
 }
diff --git 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
index a415df9..44b2fc3 100644
--- 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
+++ 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
@@ -49,8 +49,18 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("PUT")
     void onPut(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
+        final Object key;
+        final Object value;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
         final Object result;
 
         if (hasLifespan(message)) {
@@ -75,8 +85,18 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("PUTASYNC")
     void onPutAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
+        final Object key;
+        final Object value;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
         final CompletableFuture<Object> result;
 
         if (hasLifespan(message)) {
@@ -148,8 +168,18 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("PUTIFABSENT")
     void onPutIfAbsent(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
+        final Object key;
+        final Object value;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
         final Object result;
 
         if (hasLifespan(message)) {
@@ -174,8 +204,18 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("PUTIFABSENTASYNC")
     void onPutIfAbsentAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
+        final Object key;
+        final Object value;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
         final CompletableFuture<Object> result;
 
         if (hasLifespan(message)) {
@@ -200,7 +240,12 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("GET")
     void onGet(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
+        final Object key;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
         final Object result = cache.get(key);
 
         setResult(message, result);
@@ -209,8 +254,18 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("GETORDEFAULT")
     void onGetOrDefault(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object defaultValue = 
message.getHeader(InfinispanConstants.DEFAULT_VALUE);
+        final Object key;
+        final Object defaultValue;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.DEFAULT_VALUE))) 
{
+            defaultValue = 
message.getHeader(InfinispanConstants.DEFAULT_VALUE);
+        } else {
+            defaultValue = configuration.getDefaultValue();
+        }
         final Object result = cache.getOrDefault(key, defaultValue);
 
         setResult(message, result);
@@ -219,7 +274,12 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("CONTAINSKEY")
     void onContainsKey(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
+        final Object key;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
         final Object result = cache.containsKey(key);
 
         setResult(message, result);
@@ -228,7 +288,12 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("CONTAINSVALUE")
     void onContainsValue(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
+        final Object value;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
         final Object result = cache.containsValue(value);
 
         setResult(message, result);
@@ -237,8 +302,18 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("REMOVE")
     void onRemove(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
+        final Object key;
+        final Object value;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
         final Object result;
 
         if (ObjectHelper.isEmpty(value)) {
@@ -253,8 +328,18 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("REMOVEASYNC")
     void onRemoveAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
+        final Object key;
+        final Object value;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
         final CompletableFuture<Object> resultRemoveAsyncKey;
         final CompletableFuture<Boolean> resultRemoveAsyncKeyValue;
 
@@ -270,9 +355,24 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("REPLACE")
     void onReplace(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
-        final Object oldValue = 
message.getHeader(InfinispanConstants.OLD_VALUE);
+        final Object key;
+        final Object value;
+        final Object oldValue;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.OLD_VALUE))) {
+            oldValue = message.getHeader(InfinispanConstants.OLD_VALUE);
+        } else {
+            oldValue = configuration.getOldValue();
+        }
         final Object result;
 
         if (hasLifespan(message)) {
@@ -309,9 +409,24 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("REPLACEASYNC")
     void onReplaceAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
-        final Object value = message.getHeader(InfinispanConstants.VALUE);
-        final Object oldValue = 
message.getHeader(InfinispanConstants.OLD_VALUE);
+        final Object key;
+        final Object value;
+        final Object oldValue;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.VALUE))) {
+            value = message.getHeader(InfinispanConstants.VALUE);
+        } else {
+            value = configuration.getValue();
+        }
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.OLD_VALUE))) {
+            oldValue = message.getHeader(InfinispanConstants.OLD_VALUE);
+        } else {
+            oldValue = configuration.getOldValue();
+        }
         final CompletableFuture<Object> resultWithNewValue;
         final CompletableFuture<Boolean> resultWithNewAndOldValue;
 
@@ -399,7 +514,12 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("COMPUTE")
     void onCompute(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
+        final Object key;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
         final Object result = cache.compute(key, 
configuration.getRemappingFunction());
         setResult(message, result);
     }
@@ -407,7 +527,12 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     @InvokeOnHeader("COMPUTEASYNC")
     void onComputeAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
-        final Object key = message.getHeader(InfinispanConstants.KEY);
+        final Object key;
+        if 
(ObjectHelper.isNotEmpty(message.getHeader(InfinispanConstants.KEY))) {
+            key = message.getHeader(InfinispanConstants.KEY);
+        } else {
+            key = configuration.getKey();
+        }
         final CompletableFuture<Object> result = cache.computeAsync(key, 
configuration.getRemappingFunction());
         setResult(message, result);
     }
diff --git 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/InfinispanComponentBuilderFactory.java
 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/InfinispanComponentBuilderFactory.java
index 4031e27..ab00d26 100644
--- 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/InfinispanComponentBuilderFactory.java
+++ 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/InfinispanComponentBuilderFactory.java
@@ -176,6 +176,29 @@ public interface InfinispanComponentBuilderFactory {
             return this;
         }
         /**
+         * Set a specific default value for some producer operations.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Group: producer
+         */
+        default InfinispanComponentBuilder defaultValue(
+                java.lang.Object defaultValue) {
+            doSetProperty("defaultValue", defaultValue);
+            return this;
+        }
+        /**
+         * Set a specific key for producer operations.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Group: producer
+         */
+        default InfinispanComponentBuilder key(java.lang.Object key) {
+            doSetProperty("key", key);
+            return this;
+        }
+        /**
          * 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
@@ -197,6 +220,17 @@ public interface InfinispanComponentBuilderFactory {
             return this;
         }
         /**
+         * Set a specific old value for some producer operations.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Group: producer
+         */
+        default InfinispanComponentBuilder oldValue(java.lang.Object oldValue) 
{
+            doSetProperty("oldValue", oldValue);
+            return this;
+        }
+        /**
          * The operation to perform.
          * 
          * The option is a:
@@ -211,6 +245,17 @@ public interface InfinispanComponentBuilderFactory {
             return this;
         }
         /**
+         * Set a specific value for producer operations.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Group: producer
+         */
+        default InfinispanComponentBuilder value(java.lang.Object value) {
+            doSetProperty("value", value);
+            return this;
+        }
+        /**
          * Whether the component should use basic property binding (Camel 2.x)
          * or the newer property binding with additional capabilities.
          * 
@@ -355,8 +400,12 @@ public interface InfinispanComponentBuilderFactory {
             case "customListener": 
getOrCreateConfiguration((InfinispanComponent) 
component).setCustomListener((org.apache.camel.component.infinispan.InfinispanCustomListener)
 value); return true;
             case "eventTypes": getOrCreateConfiguration((InfinispanComponent) 
component).setEventTypes((java.lang.String) value); return true;
             case "sync": getOrCreateConfiguration((InfinispanComponent) 
component).setSync((boolean) value); return true;
+            case "defaultValue": 
getOrCreateConfiguration((InfinispanComponent) 
component).setDefaultValue((java.lang.Object) value); return true;
+            case "key": getOrCreateConfiguration((InfinispanComponent) 
component).setKey((java.lang.Object) value); return true;
             case "lazyStartProducer": ((InfinispanComponent) 
component).setLazyStartProducer((boolean) value); return true;
+            case "oldValue": getOrCreateConfiguration((InfinispanComponent) 
component).setOldValue((java.lang.Object) value); return true;
             case "operation": getOrCreateConfiguration((InfinispanComponent) 
component).setOperation((org.apache.camel.component.infinispan.InfinispanOperation)
 value); return true;
+            case "value": getOrCreateConfiguration((InfinispanComponent) 
component).setValue((java.lang.Object) value); return true;
             case "basicPropertyBinding": ((InfinispanComponent) 
component).setBasicPropertyBinding((boolean) value); return true;
             case "cacheContainer": 
getOrCreateConfiguration((InfinispanComponent) 
component).setCacheContainer((org.infinispan.commons.api.BasicCacheContainer) 
value); return true;
             case "cacheContainerConfiguration": 
getOrCreateConfiguration((InfinispanComponent) 
component).setCacheContainerConfiguration((java.lang.Object) value); return 
true;
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanEndpointBuilderFactory.java
index ba888cb..3f82286 100644
--- 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanEndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanEndpointBuilderFactory.java
@@ -605,6 +605,52 @@ public interface InfinispanEndpointBuilderFactory {
             return this;
         }
         /**
+         * Set a specific default value for some producer operations.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Group: producer
+         */
+        default InfinispanEndpointProducerBuilder defaultValue(
+                Object defaultValue) {
+            doSetProperty("defaultValue", defaultValue);
+            return this;
+        }
+        /**
+         * Set a specific default value for some producer operations.
+         * 
+         * The option will be converted to a <code>java.lang.Object</code> 
type.
+         * 
+         * Group: producer
+         */
+        default InfinispanEndpointProducerBuilder defaultValue(
+                String defaultValue) {
+            doSetProperty("defaultValue", defaultValue);
+            return this;
+        }
+        /**
+         * Set a specific key for producer operations.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Group: producer
+         */
+        default InfinispanEndpointProducerBuilder key(Object key) {
+            doSetProperty("key", key);
+            return this;
+        }
+        /**
+         * Set a specific key for producer operations.
+         * 
+         * The option will be converted to a <code>java.lang.Object</code> 
type.
+         * 
+         * Group: producer
+         */
+        default InfinispanEndpointProducerBuilder key(String key) {
+            doSetProperty("key", key);
+            return this;
+        }
+        /**
          * 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
@@ -647,6 +693,28 @@ public interface InfinispanEndpointBuilderFactory {
             return this;
         }
         /**
+         * Set a specific old value for some producer operations.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Group: producer
+         */
+        default InfinispanEndpointProducerBuilder oldValue(Object oldValue) {
+            doSetProperty("oldValue", oldValue);
+            return this;
+        }
+        /**
+         * Set a specific old value for some producer operations.
+         * 
+         * The option will be converted to a <code>java.lang.Object</code> 
type.
+         * 
+         * Group: producer
+         */
+        default InfinispanEndpointProducerBuilder oldValue(String oldValue) {
+            doSetProperty("oldValue", oldValue);
+            return this;
+        }
+        /**
          * The operation to perform.
          * 
          * The option is a:
@@ -673,6 +741,28 @@ public interface InfinispanEndpointBuilderFactory {
             doSetProperty("operation", operation);
             return this;
         }
+        /**
+         * Set a specific value for producer operations.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Group: producer
+         */
+        default InfinispanEndpointProducerBuilder value(Object value) {
+            doSetProperty("value", value);
+            return this;
+        }
+        /**
+         * Set a specific value for producer operations.
+         * 
+         * The option will be converted to a <code>java.lang.Object</code> 
type.
+         * 
+         * Group: producer
+         */
+        default InfinispanEndpointProducerBuilder value(String value) {
+            doSetProperty("value", value);
+            return this;
+        }
     }
 
     /**
diff --git a/docs/components/modules/ROOT/pages/infinispan-component.adoc 
b/docs/components/modules/ROOT/pages/infinispan-component.adoc
index 210362b..7d81001 100644
--- a/docs/components/modules/ROOT/pages/infinispan-component.adoc
+++ b/docs/components/modules/ROOT/pages/infinispan-component.adoc
@@ -65,7 +65,7 @@ If no cache configuration is provided, embedded 
cacheContainer is created direct
 
 
 // component options: START
-The Infinispan component supports 19 options, which are listed below.
+The Infinispan component supports 23 options, which are listed below.
 
 
 
@@ -81,8 +81,12 @@ The Infinispan component supports 19 options, which are 
listed below.
 | *customListener* (consumer) | Returns the custom listener in use, if 
provided |  | InfinispanCustomListener
 | *eventTypes* (consumer) | Specifies the set of event types to register by 
the consumer. Multiple event can be separated by comma. The possible event 
types are: CACHE_ENTRY_ACTIVATED, CACHE_ENTRY_PASSIVATED, CACHE_ENTRY_VISITED, 
CACHE_ENTRY_LOADED, CACHE_ENTRY_EVICTED, CACHE_ENTRY_CREATED, 
CACHE_ENTRY_REMOVED, CACHE_ENTRY_MODIFIED, TRANSACTION_COMPLETED, 
TRANSACTION_REGISTERED, CACHE_ENTRY_INVALIDATED, DATA_REHASHED, 
TOPOLOGY_CHANGED, PARTITION_STATUS_CHANGED |  | String
 | *sync* (consumer) | If true, the consumer will receive notifications 
synchronously | true | boolean
+| *defaultValue* (producer) | Set a specific default value for some producer 
operations |  | Object
+| *key* (producer) | Set a specific key for producer operations |  | Object
 | *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 [...]
+| *oldValue* (producer) | Set a specific old value for some producer 
operations |  | Object
 | *operation* (producer) | The operation to perform. There are 21 enums and 
the value can be one of: PUT, PUTASYNC, PUTALL, PUTALLASYNC, PUTIFABSENT, 
PUTIFABSENTASYNC, GET, GETORDEFAULT, CONTAINSKEY, CONTAINSVALUE, REMOVE, 
REMOVEASYNC, REPLACE, REPLACEASYNC, SIZE, CLEAR, CLEARASYNC, QUERY, STATS, 
COMPUTE, COMPUTEASYNC | PUT | InfinispanOperation
+| *value* (producer) | Set a specific value for producer operations |  | Object
 | *basicPropertyBinding* (advanced) | *Deprecated* Whether the component 
should use basic property binding (Camel 2.x) or the newer property binding 
with additional capabilities | false | boolean
 | *cacheContainer* (advanced) | Specifies the cache Container to connect |  | 
BasicCacheContainer
 | *cacheContainerConfiguration* (advanced) | The CacheContainer configuration. 
Uses if the cacheContainer is not defined. Must be the following types: 
org.infinispan.client.hotrod.configuration.Configuration - for remote cache 
interaction configuration; org.infinispan.configuration.cache.Configuration - 
for embedded cache interaction configuration; |  | Object
@@ -116,7 +120,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (21 parameters):
+=== Query Parameters (25 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -132,8 +136,12 @@ with the following path and query parameters:
 | *sync* (consumer) | If true, the consumer will receive notifications 
synchronously | true | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom 
ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this 
option is not in use. By default the consumer will deal with exceptions, that 
will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer 
creates an exchange. There are 3 enums and the value can be one of: InOnly, 
InOut, InOptionalOut |  | ExchangePattern
+| *defaultValue* (producer) | Set a specific default value for some producer 
operations |  | Object
+| *key* (producer) | Set a specific key for producer operations |  | Object
 | *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 [...]
+| *oldValue* (producer) | Set a specific old value for some producer 
operations |  | Object
 | *operation* (producer) | The operation to perform. There are 21 enums and 
the value can be one of: PUT, PUTASYNC, PUTALL, PUTALLASYNC, PUTIFABSENT, 
PUTIFABSENTASYNC, GET, GETORDEFAULT, CONTAINSKEY, CONTAINSVALUE, REMOVE, 
REMOVEASYNC, REPLACE, REPLACEASYNC, SIZE, CLEAR, CLEARASYNC, QUERY, STATS, 
COMPUTE, COMPUTEASYNC | PUT | InfinispanOperation
+| *value* (producer) | Set a specific value for producer operations |  | Object
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
 | *cacheContainer* (advanced) | Specifies the cache Container to connect |  | 
BasicCacheContainer
 | *cacheContainerConfiguration* (advanced) | The CacheContainer configuration. 
Uses if the cacheContainer is not defined. Must be the following types: 
org.infinispan.client.hotrod.configuration.Configuration - for remote cache 
interaction configuration; org.infinispan.configuration.cache.Configuration - 
for embedded cache interaction configuration; |  | Object

Reply via email to