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: