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

davsclaus pushed a commit to branch CAMEL-26500-bedrock-deprecate-streaming-ops
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 41513ecd493de806ee7cea667d5826932b75a652
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Nov 2 21:13:46 2026 +0100

    CAMEL-26500: camel-aws-bedrock - deprecate the invokeImageModelStreaming 
and invokeEmbeddingsModelStreaming operations
    
    The image generation and embedding models on Amazon Bedrock do not stream 
their
    response. Since CAMEL-26069 these two operations fail for such a model and 
point to
    invokeImageModel / invokeEmbeddingsModel, and with a text model they are 
the same as
    invokeTextModelStreaming. Deprecate both enum constants for removal in a 
later
    release; they keep working. The operation option description, the component 
doc and
    the 4.24 upgrade guide say so.
    
    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../org/apache/camel/catalog/components/aws-bedrock.json   |  4 ++--
 .../apache/camel/catalog/docs/aws-bedrock-component.adoc   |  8 ++++++--
 .../camel/component/aws2/bedrock/runtime/aws-bedrock.json  |  4 ++--
 .../src/main/docs/aws-bedrock-component.adoc               |  8 ++++++--
 .../aws2/bedrock/runtime/BedrockConfiguration.java         |  4 +++-
 .../component/aws2/bedrock/runtime/BedrockOperations.java  | 10 ++++++++++
 .../component/aws2/bedrock/runtime/BedrockProducer.java    |  1 +
 .../aws2/bedrock/runtime/BedrockProducerRequestTest.java   | 14 ++++++++++++++
 .../modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc    |  7 +++++++
 .../component/dsl/AwsBedrockComponentBuilderFactory.java   |  6 +++++-
 .../endpoint/dsl/BedrockEndpointBuilderFactory.java        | 12 ++++++++++--
 11 files changed, 66 insertions(+), 12 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock.json
index 2f94d59671b3..2cff71bd642c 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock.json
@@ -31,7 +31,7 @@
     "includeStreamingMetadata": { "index": 4, "kind": "property", 
"displayName": "Include Streaming Metadata", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "Whether to include 
streaming metadata in the response hea [...]
     "lazyStartProducer": { "index": 5, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
     "modelId": { "index": 6, "kind": "property", "displayName": "Model Id", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"java.lang.String", "enum": [ "amazon.titan-text-express-v1", 
"amazon.titan-text-lite-v1", "amazon.titan-image-generator-v1", 
"amazon.titan-embed-text-v1", "amazon.titan-embed-image-v1", 
"amazon.titan-text-premier-v1:0", "amazon.titan-embed-text-v2:0", 
"amazon.titan-image-generator-v2:0", "amazon.nova-canvas-v1:0", 
"amazon.nova-lite-v [...]
-    "operation": { "index": 7, "kind": "property", "displayName": "Operation", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ 
"invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", 
"invokeTextModelStreaming", "invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming", "converse", "converseStream", 
"applyGuardrail" ], "deprecated": false, "deprecationNote": "", "auto [...]
+    "operation": { "index": 7, "kind": "property", "displayName": "Operation", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ 
"invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", 
"invokeTextModelStreaming", "invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming", "converse", "converseStream", 
"applyGuardrail" ], "deprecated": false, "deprecationNote": "", "auto [...]
     "overrideEndpoint": { "index": 8, "kind": "property", "displayName": 
"Override Endpoint", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "Set the need for 
overriding the endpoint. This option needs to be used in [...]
     "pojoRequest": { "index": 9, "kind": "property", "displayName": "Pojo 
Request", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "If we want to use a POJO 
request as body or not" },
     "profileCredentialsName": { "index": 10, "kind": "property", 
"displayName": "Profile Credentials Name", "group": "producer", "label": "", 
"required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
"false", "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "If using a profile 
credentials provider, this par [...]
@@ -90,7 +90,7 @@
     "guardrailVersion": { "index": 3, "kind": "parameter", "displayName": 
"Guardrail Version", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "DRAFT", 
"configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "The version of the 
guardrail to use. Defaults to DRAFT." },
     "includeStreamingMetadata": { "index": 4, "kind": "parameter", 
"displayName": "Include Streaming Metadata", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "Whether to include 
streaming metadata in the response he [...]
     "modelId": { "index": 5, "kind": "parameter", "displayName": "Model Id", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"java.lang.String", "enum": [ "amazon.titan-text-express-v1", 
"amazon.titan-text-lite-v1", "amazon.titan-image-generator-v1", 
"amazon.titan-embed-text-v1", "amazon.titan-embed-image-v1", 
"amazon.titan-text-premier-v1:0", "amazon.titan-embed-text-v2:0", 
"amazon.titan-image-generator-v2:0", "amazon.nova-canvas-v1:0", 
"amazon.nova-lite- [...]
-    "operation": { "index": 6, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "", "required": true, "type": 
"enum", "javaType": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ 
"invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", 
"invokeTextModelStreaming", "invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming", "converse", "converseStream", 
"applyGuardrail" ], "deprecated": false, "deprecationNote": "", "aut [...]
+    "operation": { "index": 6, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "", "required": true, "type": 
"enum", "javaType": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ 
"invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", 
"invokeTextModelStreaming", "invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming", "converse", "converseStream", 
"applyGuardrail" ], "deprecated": false, "deprecationNote": "", "aut [...]
     "overrideEndpoint": { "index": 7, "kind": "parameter", "displayName": 
"Override Endpoint", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "Set the need for 
overriding the endpoint. This option needs to be used i [...]
     "pojoRequest": { "index": 8, "kind": "parameter", "displayName": "Pojo 
Request", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "If we want to use a POJO 
request as body or not" },
     "profileCredentialsName": { "index": 9, "kind": "parameter", 
"displayName": "Profile Credentials Name", "group": "producer", "label": "", 
"required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
"false", "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "If using a profile 
credentials provider, this par [...]
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-bedrock-component.adoc
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-bedrock-component.adoc
index a58d10e8b11c..dfc5e17b4020 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-bedrock-component.adoc
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-bedrock-component.adoc
@@ -77,8 +77,8 @@ Camel-AWS Bedrock component provides the following operation 
on the producer sid
 - invokeImageModel
 - invokeEmbeddingsModel
 - invokeTextModelStreaming
-- invokeImageModelStreaming
-- invokeEmbeddingsModelStreaming
+- invokeImageModelStreaming (deprecated)
+- invokeEmbeddingsModelStreaming (deprecated)
 - converse
 - converseStream
 - applyGuardrail
@@ -108,6 +108,10 @@ The streaming operations give the generated text. The 
image generation and embed
 response, so the three streaming operations work the same way, and an image or 
embedding model fails with an
 `IllegalArgumentException` that points to `invokeImageModel` or 
`invokeEmbeddingsModel`.
 
+NOTE: The `invokeImageModelStreaming` and `invokeEmbeddingsModelStreaming` 
operations are deprecated and will be removed
+in a later release. Use `invokeImageModel` or `invokeEmbeddingsModel` with an 
image generation or embedding model, and
+`invokeTextModelStreaming` to stream the text of a text model.
+
 ==== Streaming Output Modes
 
 Two streaming modes are supported:
diff --git 
a/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/runtime/aws-bedrock.json
 
b/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/runtime/aws-bedrock.json
index 2f94d59671b3..2cff71bd642c 100644
--- 
a/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/runtime/aws-bedrock.json
+++ 
b/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/runtime/aws-bedrock.json
@@ -31,7 +31,7 @@
     "includeStreamingMetadata": { "index": 4, "kind": "property", 
"displayName": "Include Streaming Metadata", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "Whether to include 
streaming metadata in the response hea [...]
     "lazyStartProducer": { "index": 5, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
     "modelId": { "index": 6, "kind": "property", "displayName": "Model Id", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"java.lang.String", "enum": [ "amazon.titan-text-express-v1", 
"amazon.titan-text-lite-v1", "amazon.titan-image-generator-v1", 
"amazon.titan-embed-text-v1", "amazon.titan-embed-image-v1", 
"amazon.titan-text-premier-v1:0", "amazon.titan-embed-text-v2:0", 
"amazon.titan-image-generator-v2:0", "amazon.nova-canvas-v1:0", 
"amazon.nova-lite-v [...]
-    "operation": { "index": 7, "kind": "property", "displayName": "Operation", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ 
"invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", 
"invokeTextModelStreaming", "invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming", "converse", "converseStream", 
"applyGuardrail" ], "deprecated": false, "deprecationNote": "", "auto [...]
+    "operation": { "index": 7, "kind": "property", "displayName": "Operation", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ 
"invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", 
"invokeTextModelStreaming", "invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming", "converse", "converseStream", 
"applyGuardrail" ], "deprecated": false, "deprecationNote": "", "auto [...]
     "overrideEndpoint": { "index": 8, "kind": "property", "displayName": 
"Override Endpoint", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "Set the need for 
overriding the endpoint. This option needs to be used in [...]
     "pojoRequest": { "index": 9, "kind": "property", "displayName": "Pojo 
Request", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "If we want to use a POJO 
request as body or not" },
     "profileCredentialsName": { "index": 10, "kind": "property", 
"displayName": "Profile Credentials Name", "group": "producer", "label": "", 
"required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
"false", "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "If using a profile 
credentials provider, this par [...]
@@ -90,7 +90,7 @@
     "guardrailVersion": { "index": 3, "kind": "parameter", "displayName": 
"Guardrail Version", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "DRAFT", 
"configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "The version of the 
guardrail to use. Defaults to DRAFT." },
     "includeStreamingMetadata": { "index": 4, "kind": "parameter", 
"displayName": "Include Streaming Metadata", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "Whether to include 
streaming metadata in the response he [...]
     "modelId": { "index": 5, "kind": "parameter", "displayName": "Model Id", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"java.lang.String", "enum": [ "amazon.titan-text-express-v1", 
"amazon.titan-text-lite-v1", "amazon.titan-image-generator-v1", 
"amazon.titan-embed-text-v1", "amazon.titan-embed-image-v1", 
"amazon.titan-text-premier-v1:0", "amazon.titan-embed-text-v2:0", 
"amazon.titan-image-generator-v2:0", "amazon.nova-canvas-v1:0", 
"amazon.nova-lite- [...]
-    "operation": { "index": 6, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "", "required": true, "type": 
"enum", "javaType": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ 
"invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", 
"invokeTextModelStreaming", "invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming", "converse", "converseStream", 
"applyGuardrail" ], "deprecated": false, "deprecationNote": "", "aut [...]
+    "operation": { "index": 6, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "", "required": true, "type": 
"enum", "javaType": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations", "enum": [ 
"invokeTextModel", "invokeImageModel", "invokeEmbeddingsModel", 
"invokeTextModelStreaming", "invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming", "converse", "converseStream", 
"applyGuardrail" ], "deprecated": false, "deprecationNote": "", "aut [...]
     "overrideEndpoint": { "index": 7, "kind": "parameter", "displayName": 
"Override Endpoint", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "Set the need for 
overriding the endpoint. This option needs to be used i [...]
     "pojoRequest": { "index": 8, "kind": "parameter", "displayName": "Pojo 
Request", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "If we want to use a POJO 
request as body or not" },
     "profileCredentialsName": { "index": 9, "kind": "parameter", 
"displayName": "Profile Credentials Name", "group": "producer", "label": "", 
"required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
"false", "configurationClass": 
"org.apache.camel.component.aws2.bedrock.runtime.BedrockConfiguration", 
"configurationField": "configuration", "description": "If using a profile 
credentials provider, this par [...]
diff --git 
a/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc
 
b/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc
index a58d10e8b11c..dfc5e17b4020 100644
--- 
a/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc
+++ 
b/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc
@@ -77,8 +77,8 @@ Camel-AWS Bedrock component provides the following operation 
on the producer sid
 - invokeImageModel
 - invokeEmbeddingsModel
 - invokeTextModelStreaming
-- invokeImageModelStreaming
-- invokeEmbeddingsModelStreaming
+- invokeImageModelStreaming (deprecated)
+- invokeEmbeddingsModelStreaming (deprecated)
 - converse
 - converseStream
 - applyGuardrail
@@ -108,6 +108,10 @@ The streaming operations give the generated text. The 
image generation and embed
 response, so the three streaming operations work the same way, and an image or 
embedding model fails with an
 `IllegalArgumentException` that points to `invokeImageModel` or 
`invokeEmbeddingsModel`.
 
+NOTE: The `invokeImageModelStreaming` and `invokeEmbeddingsModelStreaming` 
operations are deprecated and will be removed
+in a later release. Use `invokeImageModel` or `invokeEmbeddingsModel` with an 
image generation or embedding model, and
+`invokeTextModelStreaming` to stream the text of a text model.
+
 ==== Streaming Output Modes
 
 Two streaming modes are supported:
diff --git 
a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java
 
b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java
index a026a3f1c389..b382a3810236 100644
--- 
a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java
+++ 
b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockConfiguration.java
@@ -146,7 +146,9 @@ public class BedrockConfiguration implements Cloneable, 
AwsCommonConfiguration {
     }
 
     /**
-     * The operation to perform
+     * The operation to perform. The invokeImageModelStreaming and 
invokeEmbeddingsModelStreaming operations are
+     * deprecated, as the image generation and embedding models do not stream: 
use invokeImageModel,
+     * invokeEmbeddingsModel or invokeTextModelStreaming instead.
      */
     public void setOperation(BedrockOperations operation) {
         this.operation = operation;
diff --git 
a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockOperations.java
 
b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockOperations.java
index 36fd2a9cdfd9..6955aeaa28b7 100644
--- 
a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockOperations.java
+++ 
b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockOperations.java
@@ -26,8 +26,18 @@ public enum BedrockOperations {
 
     invokeTextModelStreaming,
 
+    /**
+     * @deprecated the image generation models do not stream their response, 
use {@link #invokeImageModel} instead. With
+     *             a text model, this operation is the same as {@link 
#invokeTextModelStreaming}.
+     */
+    @Deprecated(since = "4.24")
     invokeImageModelStreaming,
 
+    /**
+     * @deprecated the embedding models do not stream their response, use 
{@link #invokeEmbeddingsModel} instead. With a
+     *             text model, this operation is the same as {@link 
#invokeTextModelStreaming}.
+     */
+    @Deprecated(since = "4.24")
     invokeEmbeddingsModelStreaming,
 
     converse,
diff --git 
a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java
 
b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java
index 66681709f276..74b8bed364c5 100644
--- 
a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java
+++ 
b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java
@@ -78,6 +78,7 @@ public class BedrockProducer extends DefaultProducer {
     }
 
     @Override
+    @SuppressWarnings("deprecation")
     public void process(Exchange exchange) throws Exception {
         switch (determineOperation(exchange)) {
             case invokeTextModel:
diff --git 
a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducerRequestTest.java
 
b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducerRequestTest.java
index 5a2d2d0ad653..a084baeb0382 100644
--- 
a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducerRequestTest.java
+++ 
b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducerRequestTest.java
@@ -273,6 +273,20 @@ public class BedrockProducerRequestTest {
                 exchange.getException().getMessage());
     }
 
+    @Test
+    public void deprecatedStreamingOperationsStillStreamATextModel() throws 
Exception {
+        // CAMEL-26500: deprecated, but they keep working as 
invokeTextModelStreaming until they are removed
+        stream("{\"outputText\":\"Hello\"}", "{\"outputText\":\" 
world\",\"completionReason\":\"FINISH\"}");
+        for (String operation : List.of("invokeImageModelStreaming", 
"invokeEmbeddingsModelStreaming")) {
+            
assertNotNull(BedrockOperations.class.getField(operation).getAnnotation(Deprecated.class),
 operation);
+
+            Exchange exchange = send(invokeUri(operation, TITAN), REQUEST);
+
+            assertNull(exchange.getException(), operation);
+            assertEquals("Hello world", exchange.getMessage().getBody(), 
operation);
+        }
+    }
+
     @Test
     public void novaStreamingGivesTheText() {
         stream("{\"messageStart\":{\"role\":\"assistant\"}}",
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
index c6c2feb52962..3d6a6132c525 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
@@ -713,6 +713,13 @@ Other changes of `aws-bedrock`:
 * `converseStream` with `guardrailTrace=true` now asks for the guardrail trace.
 * `invokeTextModel` with an AI21 Jamba model gives the `choices` of the 
response, which was null before.
 
+=== camel-aws-bedrock - invokeImageModelStreaming and 
invokeEmbeddingsModelStreaming are deprecated
+
+The `invokeImageModelStreaming` and `invokeEmbeddingsModelStreaming` 
operations of `aws-bedrock` are deprecated, and
+will be removed in a later release. The image generation and embedding models 
do not stream their response, so these
+operations fail for such a model, and with a text model they are the same as 
`invokeTextModelStreaming`. Use
+`invokeImageModel`, `invokeEmbeddingsModel` or `invokeTextModelStreaming` 
instead.
+
 === camel-weather - the CamelWeatherLocation header is the location that is 
queried
 
 The latitude and longitude of the current geolocation (a location of 
`current`, or no location) are no longer written
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsBedrockComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsBedrockComponentBuilderFactory.java
index 9308add1cedf..df4ab78c0f20 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsBedrockComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsBedrockComponentBuilderFactory.java
@@ -175,7 +175,11 @@ public interface AwsBedrockComponentBuilderFactory {
         }
     
         /**
-         * The operation to perform.
+         * The operation to perform. The invokeImageModelStreaming and
+         * invokeEmbeddingsModelStreaming operations are deprecated, as the
+         * image generation and embedding models do not stream: use
+         * invokeImageModel, invokeEmbeddingsModel or invokeTextModelStreaming
+         * instead.
          * 
          * The option is a:
          * 
&lt;code&gt;org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations&lt;/code&gt;
 type.
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BedrockEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BedrockEndpointBuilderFactory.java
index b5c168375220..5b1771b1f6d6 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BedrockEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BedrockEndpointBuilderFactory.java
@@ -152,7 +152,11 @@ public interface BedrockEndpointBuilderFactory {
             return this;
         }
         /**
-         * The operation to perform.
+         * The operation to perform. The invokeImageModelStreaming and
+         * invokeEmbeddingsModelStreaming operations are deprecated, as the
+         * image generation and embedding models do not stream: use
+         * invokeImageModel, invokeEmbeddingsModel or invokeTextModelStreaming
+         * instead.
          * 
          * The option is a:
          * 
<code>org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations</code> 
type.
@@ -168,7 +172,11 @@ public interface BedrockEndpointBuilderFactory {
             return this;
         }
         /**
-         * The operation to perform.
+         * The operation to perform. The invokeImageModelStreaming and
+         * invokeEmbeddingsModelStreaming operations are deprecated, as the
+         * image generation and embedding models do not stream: use
+         * invokeImageModel, invokeEmbeddingsModel or invokeTextModelStreaming
+         * instead.
          * 
          * The option will be converted to a
          * 
<code>org.apache.camel.component.aws2.bedrock.runtime.BedrockOperations</code> 
type.

Reply via email to