You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2019/12/21 11:53:13 UTC

[camel] 01/04: CAMEL-14314 - Camel-AWS Translate: Being able of set source and target language as endpoint options

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

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

commit 348e803f9df658808d91ab91f696eaeff2ca7bfc
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Sat Dec 21 12:06:22 2019 +0100

    CAMEL-14314 - Camel-AWS Translate: Being able of set source and target language as endpoint options
---
 .../src/main/docs/aws-translate-component.adoc     |  4 +++-
 .../aws/translate/TranslateConfiguration.java      | 28 +++++++++++++++++++++-
 .../component/aws/translate/TranslateProducer.java | 12 +++++++++-
 .../dsl/TranslateEndpointBuilderFactory.java       | 22 +++++++++++++++++
 4 files changed, 63 insertions(+), 3 deletions(-)

diff --git a/components/camel-aws-translate/src/main/docs/aws-translate-component.adoc b/components/camel-aws-translate/src/main/docs/aws-translate-component.adoc
index c5c45d8..f88ba1c 100644
--- a/components/camel-aws-translate/src/main/docs/aws-translate-component.adoc
+++ b/components/camel-aws-translate/src/main/docs/aws-translate-component.adoc
@@ -69,7 +69,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (12 parameters):
+=== Query Parameters (14 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -84,6 +84,8 @@ with the following path and query parameters:
 | *proxyProtocol* (producer) | To define a proxy protocol when instantiating the Translate client | HTTPS | Protocol
 | *region* (producer) | The region in which Translate client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() |  | String
 | *secretKey* (producer) | Amazon AWS Secret Key |  | String
+| *sourceLanguage* (producer) | Source language to use |  | String
+| *targetLanguage* (producer) | Target language to use |  | String
 | *translateClient* (producer) | To use a existing configured AWS Translate as client |  | AmazonTranslate
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
diff --git a/components/camel-aws-translate/src/main/java/org/apache/camel/component/aws/translate/TranslateConfiguration.java b/components/camel-aws-translate/src/main/java/org/apache/camel/component/aws/translate/TranslateConfiguration.java
index 2456745..d36a97e 100644
--- a/components/camel-aws-translate/src/main/java/org/apache/camel/component/aws/translate/TranslateConfiguration.java
+++ b/components/camel-aws-translate/src/main/java/org/apache/camel/component/aws/translate/TranslateConfiguration.java
@@ -44,6 +44,10 @@ public class TranslateConfiguration implements Cloneable {
     @UriParam(label = "producer")
     private String proxyHost;
     @UriParam(label = "producer")
+    private String sourceLanguage;
+    @UriParam(label = "producer")
+    private String targetLanguage;
+    @UriParam(label = "producer")
     private Integer proxyPort;
     @UriParam
     private String region;
@@ -151,12 +155,34 @@ public class TranslateConfiguration implements Cloneable {
     public void setAutodetectSourceLanguage(boolean autodetectSourceLanguage) {
         this.autodetectSourceLanguage = autodetectSourceLanguage;
     }
+    
+    public String getSourceLanguage() {
+		return sourceLanguage;
+	}
+
+    /**
+     * Source language to use
+     */
+	public void setSourceLanguage(String sourceLanguage) {
+		this.sourceLanguage = sourceLanguage;
+	}
+
+	public String getTargetLanguage() {
+		return targetLanguage;
+	}
+	
+    /**
+     * Target language to use
+     */
+	public void setTargetLanguage(String targetLanguage) {
+		this.targetLanguage = targetLanguage;
+	}
 
     // *************************************************
     //
     // *************************************************
 
-    public TranslateConfiguration copy() {
+	public TranslateConfiguration copy() {
         try {
             return (TranslateConfiguration)super.clone();
         } catch (CloneNotSupportedException e) {
diff --git a/components/camel-aws-translate/src/main/java/org/apache/camel/component/aws/translate/TranslateProducer.java b/components/camel-aws-translate/src/main/java/org/apache/camel/component/aws/translate/TranslateProducer.java
index 2896bf9..44b1a75 100644
--- a/components/camel-aws-translate/src/main/java/org/apache/camel/component/aws/translate/TranslateProducer.java
+++ b/components/camel-aws-translate/src/main/java/org/apache/camel/component/aws/translate/TranslateProducer.java
@@ -80,21 +80,31 @@ public class TranslateProducer extends DefaultProducer {
     private void translateText(AmazonTranslate translateClient, Exchange exchange) {
         TranslateTextRequest request = new TranslateTextRequest();
         if (!getConfiguration().isAutodetectSourceLanguage()) {
+        	if (ObjectHelper.isEmpty(getConfiguration().getSourceLanguage()) && ObjectHelper.isEmpty(getConfiguration().getTargetLanguage())) {
             String source = exchange.getIn().getHeader(TranslateConstants.SOURCE_LANGUAGE, String.class);
             String target = exchange.getIn().getHeader(TranslateConstants.TARGET_LANGUAGE, String.class);
             if (ObjectHelper.isEmpty(source) || ObjectHelper.isEmpty(target)) {
-                throw new IllegalArgumentException("Source and target language must be specified");
+                throw new IllegalArgumentException("Source and target language must be specified as headers or endpoint options");
             }
             request.setSourceLanguageCode(source);
             request.setTargetLanguageCode(target);
+        	} else {
+                request.setSourceLanguageCode(getConfiguration().getSourceLanguage());
+                request.setTargetLanguageCode(getConfiguration().getTargetLanguage());
+        	}
         } else {
             String source = "auto";
+            if (ObjectHelper.isEmpty(getConfiguration().getTargetLanguage())) {
             String target = exchange.getIn().getHeader(TranslateConstants.TARGET_LANGUAGE, String.class);
             if (ObjectHelper.isEmpty(source) || ObjectHelper.isEmpty(target)) {
                 throw new IllegalArgumentException("Target language must be specified when autodetection of source language is enabled");
             }
             request.setSourceLanguageCode(source);
             request.setTargetLanguageCode(target);
+            } else {
+            	request.setSourceLanguageCode(source);
+                request.setTargetLanguageCode(getConfiguration().getTargetLanguage());
+            }
         }
         if (!ObjectHelper.isEmpty(exchange.getIn().getHeader(TranslateConstants.TERMINOLOGY_NAMES, Collection.class))) {
             Collection<String> terminologies = exchange.getIn().getHeader(TranslateConstants.TERMINOLOGY_NAMES, Collection.class);
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/TranslateEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/TranslateEndpointBuilderFactory.java
index df2f8f1..3ebfa13 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/TranslateEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/TranslateEndpointBuilderFactory.java
@@ -221,6 +221,28 @@ public interface TranslateEndpointBuilderFactory {
             return this;
         }
         /**
+         * Source language to use.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         */
+        default TranslateEndpointBuilder sourceLanguage(String sourceLanguage) {
+            doSetProperty("sourceLanguage", sourceLanguage);
+            return this;
+        }
+        /**
+         * Target language to use.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         */
+        default TranslateEndpointBuilder targetLanguage(String targetLanguage) {
+            doSetProperty("targetLanguage", targetLanguage);
+            return this;
+        }
+        /**
          * To use a existing configured AWS Translate as client.
          * 
          * The option is a: