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

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

commit 7c34b78b8ba0aba1020ac87c626615222a49859a
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Jan 28 06:54:25 2022 +0100

    CAMEL-17321: Add HuaweiCloud FaceRecognitionService(FRS) Component (#6838)
---
 .../frs/FaceRecognitionComponentConfigurer.java    |  55 +++++++
 .../frs/FaceRecognitionEndpointConfigurer.java     | 172 +++++++++++++++++++++
 .../frs/FaceRecognitionEndpointUriFactory.java     |  97 ++++++++++++
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/hwcloud-frs         |   2 +
 .../apache/camel/configurer/hwcloud-frs-component  |   2 +
 .../apache/camel/configurer/hwcloud-frs-endpoint   |   2 +
 .../apache/camel/urifactory/hwcloud-frs-endpoint   |   2 +
 .../component/huaweicloud/frs/hwcloud-frs.json     |  54 +++++++
 .../src/main/docs/hwcloud-frs-component.adoc       |   8 +-
 ...ceDetectionWithImageBae64AndMockClientTest.java |  12 +-
 .../modules/ROOT/examples/json/hwcloud-frs.json    |   1 +
 docs/components/modules/ROOT/nav.adoc              |   1 +
 .../modules/ROOT/pages/hwcloud-frs-component.adoc  |   1 +
 14 files changed, 406 insertions(+), 10 deletions(-)

diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionComponentConfigurer.java
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionComponentConfigurer.java
new file mode 100644
index 0000000..837c1d8
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionComponentConfigurer.java
@@ -0,0 +1,55 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.huaweicloud.frs;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class FaceRecognitionComponentConfigurer extends 
PropertyConfigurerSupport implements GeneratedPropertyConfigurer, 
PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
+        FaceRecognitionComponent target = (FaceRecognitionComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": 
target.setAutowiredEnabled(property(camelContext, boolean.class, value)); 
return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        FaceRecognitionComponent target = (FaceRecognitionComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        default: return null;
+        }
+    }
+}
+
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpointConfigurer.java
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpointConfigurer.java
new file mode 100644
index 0000000..bc52715
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpointConfigurer.java
@@ -0,0 +1,172 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.huaweicloud.frs;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class FaceRecognitionEndpointConfigurer extends 
PropertyConfigurerSupport implements GeneratedPropertyConfigurer, 
PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
+        FaceRecognitionEndpoint target = (FaceRecognitionEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": target.setAccessKey(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "actiontimes":
+        case "actionTimes": target.setActionTimes(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "actions": target.setActions(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "anotherimagebase64":
+        case "anotherImageBase64": 
target.setAnotherImageBase64(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "anotherimagefilepath":
+        case "anotherImageFilePath": 
target.setAnotherImageFilePath(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "anotherimageurl":
+        case "anotherImageUrl": 
target.setAnotherImageUrl(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "endpoint": target.setEndpoint(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "ignoresslverification":
+        case "ignoreSslVerification": 
target.setIgnoreSslVerification(property(camelContext, boolean.class, value)); 
return true;
+        case "imagebase64":
+        case "imageBase64": target.setImageBase64(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "imagefilepath":
+        case "imageFilePath": target.setImageFilePath(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "imageurl":
+        case "imageUrl": target.setImageUrl(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        case "projectid":
+        case "projectId": target.setProjectId(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "proxyhost":
+        case "proxyHost": target.setProxyHost(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "proxypassword":
+        case "proxyPassword": target.setProxyPassword(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "proxyport":
+        case "proxyPort": target.setProxyPort(property(camelContext, 
int.class, value)); return true;
+        case "proxyuser":
+        case "proxyUser": target.setProxyUser(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "region": target.setRegion(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "secretkey":
+        case "secretKey": target.setSecretKey(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "servicekeys":
+        case "serviceKeys": target.setServiceKeys(property(camelContext, 
org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class, 
value)); return true;
+        case "videobase64":
+        case "videoBase64": target.setVideoBase64(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "videofilepath":
+        case "videoFilePath": target.setVideoFilePath(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "videourl":
+        case "videoUrl": target.setVideoUrl(property(camelContext, 
java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": return java.lang.String.class;
+        case "actiontimes":
+        case "actionTimes": return java.lang.String.class;
+        case "actions": return java.lang.String.class;
+        case "anotherimagebase64":
+        case "anotherImageBase64": return java.lang.String.class;
+        case "anotherimagefilepath":
+        case "anotherImageFilePath": return java.lang.String.class;
+        case "anotherimageurl":
+        case "anotherImageUrl": return java.lang.String.class;
+        case "endpoint": return java.lang.String.class;
+        case "ignoresslverification":
+        case "ignoreSslVerification": return boolean.class;
+        case "imagebase64":
+        case "imageBase64": return java.lang.String.class;
+        case "imagefilepath":
+        case "imageFilePath": return java.lang.String.class;
+        case "imageurl":
+        case "imageUrl": return java.lang.String.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "projectid":
+        case "projectId": return java.lang.String.class;
+        case "proxyhost":
+        case "proxyHost": return java.lang.String.class;
+        case "proxypassword":
+        case "proxyPassword": return java.lang.String.class;
+        case "proxyport":
+        case "proxyPort": return int.class;
+        case "proxyuser":
+        case "proxyUser": return java.lang.String.class;
+        case "region": return java.lang.String.class;
+        case "secretkey":
+        case "secretKey": return java.lang.String.class;
+        case "servicekeys":
+        case "serviceKeys": return 
org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class;
+        case "videobase64":
+        case "videoBase64": return java.lang.String.class;
+        case "videofilepath":
+        case "videoFilePath": return java.lang.String.class;
+        case "videourl":
+        case "videoUrl": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        FaceRecognitionEndpoint target = (FaceRecognitionEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": return target.getAccessKey();
+        case "actiontimes":
+        case "actionTimes": return target.getActionTimes();
+        case "actions": return target.getActions();
+        case "anotherimagebase64":
+        case "anotherImageBase64": return target.getAnotherImageBase64();
+        case "anotherimagefilepath":
+        case "anotherImageFilePath": return target.getAnotherImageFilePath();
+        case "anotherimageurl":
+        case "anotherImageUrl": return target.getAnotherImageUrl();
+        case "endpoint": return target.getEndpoint();
+        case "ignoresslverification":
+        case "ignoreSslVerification": return target.isIgnoreSslVerification();
+        case "imagebase64":
+        case "imageBase64": return target.getImageBase64();
+        case "imagefilepath":
+        case "imageFilePath": return target.getImageFilePath();
+        case "imageurl":
+        case "imageUrl": return target.getImageUrl();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "projectid":
+        case "projectId": return target.getProjectId();
+        case "proxyhost":
+        case "proxyHost": return target.getProxyHost();
+        case "proxypassword":
+        case "proxyPassword": return target.getProxyPassword();
+        case "proxyport":
+        case "proxyPort": return target.getProxyPort();
+        case "proxyuser":
+        case "proxyUser": return target.getProxyUser();
+        case "region": return target.getRegion();
+        case "secretkey":
+        case "secretKey": return target.getSecretKey();
+        case "servicekeys":
+        case "serviceKeys": return target.getServiceKeys();
+        case "videobase64":
+        case "videoBase64": return target.getVideoBase64();
+        case "videofilepath":
+        case "videoFilePath": return target.getVideoFilePath();
+        case "videourl":
+        case "videoUrl": return target.getVideoUrl();
+        default: return null;
+        }
+    }
+}
+
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpointUriFactory.java
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpointUriFactory.java
new file mode 100644
index 0000000..03ccd7f
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpointUriFactory.java
@@ -0,0 +1,97 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.huaweicloud.frs;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class FaceRecognitionEndpointUriFactory extends 
org.apache.camel.support.component.EndpointUriFactorySupport implements 
EndpointUriFactory {
+
+    private static final String BASE = ":operation";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    private static final Set<String> MULTI_VALUE_PREFIXES;
+    static {
+        Set<String> props = new HashSet<>(24);
+        props.add("serviceKeys");
+        props.add("videoFilePath");
+        props.add("secretKey");
+        props.add("proxyPassword");
+        props.add("imageFilePath");
+        props.add("ignoreSslVerification");
+        props.add("proxyHost");
+        props.add("anotherImageUrl");
+        props.add("imageBase64");
+        props.add("proxyPort");
+        props.add("endpoint");
+        props.add("lazyStartProducer");
+        props.add("videoUrl");
+        props.add("accessKey");
+        props.add("actionTimes");
+        props.add("videoBase64");
+        props.add("anotherImageFilePath");
+        props.add("imageUrl");
+        props.add("proxyUser");
+        props.add("anotherImageBase64");
+        props.add("region");
+        props.add("operation");
+        props.add("actions");
+        props.add("projectId");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        Set<String> secretProps = new HashSet<>(5);
+        secretProps.add("serviceKeys");
+        secretProps.add("secretKey");
+        secretProps.add("accessKey");
+        secretProps.add("proxyPassword");
+        secretProps.add("proxyUser");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
+        MULTI_VALUE_PREFIXES = Collections.emptySet();
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "hwcloud-frs".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, 
boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "operation", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> multiValuePrefixes() {
+        return MULTI_VALUE_PREFIXES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/component.properties
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/component.properties
new file mode 100644
index 0000000..5945d24
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/component.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+components=hwcloud-frs
+groupId=org.apache.camel
+artifactId=camel-huaweicloud-frs
+version=3.15.0-SNAPSHOT
+projectName=Camel :: Huawei Cloud :: FaceRecognition
+projectDescription=A Camel Huawei Face Recognition Service component
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/component/hwcloud-frs
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/component/hwcloud-frs
new file mode 100644
index 0000000..b639a97
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/component/hwcloud-frs
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.huaweicloud.frs.FaceRecognitionComponent
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-frs-component
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-frs-component
new file mode 100644
index 0000000..3f37e2e
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-frs-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.huaweicloud.frs.FaceRecognitionComponentConfigurer
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-frs-endpoint
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-frs-endpoint
new file mode 100644
index 0000000..107a86f
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-frs-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.huaweicloud.frs.FaceRecognitionEndpointConfigurer
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/urifactory/hwcloud-frs-endpoint
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/urifactory/hwcloud-frs-endpoint
new file mode 100644
index 0000000..d1623ff
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/services/org/apache/camel/urifactory/hwcloud-frs-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.huaweicloud.frs.FaceRecognitionEndpointUriFactory
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/org/apache/camel/component/huaweicloud/frs/hwcloud-frs.json
 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/org/apache/camel/component/huaweicloud/frs/hwcloud-frs.json
new file mode 100644
index 0000000..b4495c8
--- /dev/null
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/org/apache/camel/component/huaweicloud/frs/hwcloud-frs.json
@@ -0,0 +1,54 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "hwcloud-frs",
+    "title": "Huawei Cloud Face Recognition Service",
+    "description": "Face Recognition Service (FRS) is an intelligent service 
that uses computers to process, analyze, and understand facial images based on 
human facial features.",
+    "deprecated": false,
+    "firstVersion": "3.15.0",
+    "label": "cloud,messaging",
+    "javaType": 
"org.apache.camel.component.huaweicloud.frs.FaceRecognitionComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-huaweicloud-frs",
+    "version": "3.15.0-SNAPSHOT",
+    "scheme": "hwcloud-frs",
+    "extendsScheme": "",
+    "syntax": "hwcloud-frs:operation",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "lazyStartProducer": { "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 during star [...]
+    "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
+  },
+  "properties": {
+    "operation": { "kind": "path", "displayName": "Operation name", "group": 
"producer", "label": "producer", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Name of Face Recognition 
operation to perform, including faceDetection, faceVerification and 
faceLiveDetection" },
+    "accessKey": { "kind": "parameter", "displayName": "Account access key 
(AK)", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "description": "Access key for the cloud 
user" },
+    "actions": { "kind": "parameter", "displayName": "actions", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "This param is mandatory when the 
operation is faceLiveDetection, indicating the action code sequence list. 
Actions are separated by commas (,). Currently, the following actions are 
supported: 1: Shake the head to the left. 2: Sh [...]
+    "actionTimes": { "kind": "parameter", "displayName": "actionTime", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "This param can be used 
when the operation is faceLiveDetection, indicating the action time array. The 
length of the array is the same as the number of actions. Each item contains 
the start time and end time of the action  [...]
+    "anotherImageBase64": { "kind": "parameter", "displayName": 
"anotherImageBase64", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"This param can be used when operation is faceVerification, indicating the 
Base64 character string converted from the other image. It needs to be 
configured if imageBase64 is set. The image size cannot excee [...]
+    "anotherImageFilePath": { "kind": "parameter", "displayName": 
"anotherImageFilePath", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"This param can be used when operation is faceVerification, indicating the 
local file path of the other image. It needs to be configured if imageFilePath 
is set. Image size cannot exceed 8 MB, and it is  [...]
+    "anotherImageUrl": { "kind": "parameter", "displayName": 
"anotherImageUrl", "group": "producer", "label": "", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"This param can be used when operation is faceVerification, indicating the URL 
of the other image. It needs to be configured if imageUrl is set. The options 
are as follows: 1.HTTP\/HTTPS URLs on the public network [...]
+    "endpoint": { "kind": "parameter", "displayName": "Service endpoint", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Fully qualified Face 
Recognition service url. Carries higher precedence than region based 
configuration." },
+    "imageBase64": { "kind": "parameter", "displayName": "imageBase64", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "This param can be used 
when operation is faceDetection or faceVerification, indicating the Base64 
character string converted from an image. Any one of imageBase64, imageUrl and 
imageFilePath needs to be set, and the prio [...]
+    "imageFilePath": { "kind": "parameter", "displayName": "imageFilePath", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "This param can be used 
when operation is faceDetection or faceVerification, indicating the local image 
file path. Any one of imageBase64, imageUrl and imageFilePath needs to be set, 
and the priority is imageBase64 im [...]
+    "imageUrl": { "kind": "parameter", "displayName": "imageUrl", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "This param can be used when operation 
is faceDetection or faceVerification, indicating the URL of an image. Any one 
of imageBase64, imageUrl and imageFilePath needs to be set, and the priority is 
imageBase64 imageUrl imageFile [...]
+    "lazyStartProducer": { "kind": "parameter", "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 during sta [...]
+    "projectId": { "kind": "parameter", "displayName": "Project ID", "group": 
"producer", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Cloud project ID" },
+    "proxyHost": { "kind": "parameter", "displayName": "Proxy server host", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Proxy server ip\/hostname" 
},
+    "proxyPassword": { "kind": "parameter", "displayName": "Proxy password", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "description": "Proxy authentication 
password" },
+    "proxyPort": { "kind": "parameter", "displayName": "Proxy server port", 
"group": "producer", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Proxy server port" },
+    "proxyUser": { "kind": "parameter", "displayName": "Proxy user", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": true, "description": "Proxy authentication user" },
+    "region": { "kind": "parameter", "displayName": "Service region", "group": 
"producer", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Face Recognition service region. 
Currently only cn-north-1 and cn-north-4 are supported. This is lower 
precedence than endpoint based configuration." },
+    "secretKey": { "kind": "parameter", "displayName": "Account secret key 
(SK)", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "description": "Secret key for the cloud 
user" },
+    "serviceKeys": { "kind": "parameter", "displayName": "Service 
Configuration", "group": "producer", "label": "", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.huaweicloud.common.models.ServiceKeys", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, 
"description": "Configuration object for cloud service authentication" },
+    "videoBase64": { "kind": "parameter", "displayName": "videoBase64", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "This param can be used 
when operation is faceLiveDetection, indicating the Base64 character string 
converted from a video. Any one of videoBase64, videoUrl and videoFilePath 
needs to be set, and the priority is videoBase [...]
+    "videoFilePath": { "kind": "parameter", "displayName": "videoFilePath", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "This param can be used 
when operation is faceLiveDetection, indicating the local video file path. Any 
one of videoBase64, videoUrl and videoFilePath needs to be set, and the 
priority is videoBase64 videoUrl videoFile [...]
+    "videoUrl": { "kind": "parameter", "displayName": "videoUrl", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "This param can be used when operation 
is faceLiveDetection, indicating the URL of a video. Any one of videoBase64, 
videoUrl and videoFilePath needs to be set, and the priority is videoBase64 
videoUrl videoFilePath. Currently,  [...]
+    "ignoreSslVerification": { "kind": "parameter", "displayName": "SSL 
Verification Ignored", "group": "security", "label": "security", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
false, "description": "Ignore SSL verification" }
+  }
+}
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/main/docs/hwcloud-frs-component.adoc
 
b/components/camel-huawei/camel-huaweicloud-frs/src/main/docs/hwcloud-frs-component.adoc
index 003c141..8c1be0d 100644
--- 
a/components/camel-huawei/camel-huaweicloud-frs/src/main/docs/hwcloud-frs-component.adoc
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/main/docs/hwcloud-frs-component.adoc
@@ -1,10 +1,10 @@
 = Huawei Cloud Face Recognition Service Component
-:doctitle: Huawei Cloud Face Recognition Service(FRS)
+:doctitle: Huawei Cloud Face Recognition Service
 :shortname: hwcloud-frs
 :artifactid: camel-huaweicloud-frs
-:description: Face Recognition Service(FRS) is an intelligent service that 
uses computers to process, analyze and understand facial images based on human 
facial features
-:since: 3.15.0
-:supportlevel: Stable
+:description: Face Recognition Service (FRS) is an intelligent service that 
uses computers to process, analyze, and understand facial images based on human 
facial features.
+:since: 3.15
+:supportlevel: Preview
 :component-header: Only producer is supported
 //Manually maintained attributes
 :group: Huawei Cloud
diff --git 
a/components/camel-huawei/camel-huaweicloud-frs/src/test/java/org/apache/camel/component/huaweicloud/frs/FaceDetectionWithImageBae64AndMockClientTest.java
 
b/components/camel-huawei/camel-huaweicloud-frs/src/test/java/org/apache/camel/component/huaweicloud/frs/FaceDetectionWithImageBae64AndMockClientTest.java
index 917ac9d..00a7959 100644
--- 
a/components/camel-huawei/camel-huaweicloud-frs/src/test/java/org/apache/camel/component/huaweicloud/frs/FaceDetectionWithImageBae64AndMockClientTest.java
+++ 
b/components/camel-huawei/camel-huaweicloud-frs/src/test/java/org/apache/camel/component/huaweicloud/frs/FaceDetectionWithImageBae64AndMockClientTest.java
@@ -41,12 +41,12 @@ public class FaceDetectionWithImageBae64AndMockClientTest 
extends CamelTestSuppo
                         
.setProperty(FaceRecognitionProperties.FACE_IMAGE_BASE64,
                                 
constant(testConfiguration.getProperty("imageContent")))
                         .to("hwcloud-frs:faceDetection?"
-                                + "accessKey=" + 
testConfiguration.getProperty("accessKey")
-                                + "&secretKey=" + 
testConfiguration.getProperty("secretKey")
-                                + "&projectId=" + 
testConfiguration.getProperty("projectId")
-                                + "&region=" + 
testConfiguration.getProperty("region")
-                                + "&ignoreSslVerification=true"
-                                + "&frsClient=#frsClient")
+                            + "accessKey=" + 
testConfiguration.getProperty("accessKey")
+                            + "&secretKey=" + 
testConfiguration.getProperty("secretKey")
+                            + "&projectId=" + 
testConfiguration.getProperty("projectId")
+                            + "&region=" + 
testConfiguration.getProperty("region")
+                            + "&ignoreSslVerification=true"
+                            + "&frsClient=#frsClient")
                         .log("perform faceDetection successful")
                         .to("mock:perform_face_detection_result");
             }
diff --git a/docs/components/modules/ROOT/examples/json/hwcloud-frs.json 
b/docs/components/modules/ROOT/examples/json/hwcloud-frs.json
new file mode 120000
index 0000000..115316b
--- /dev/null
+++ b/docs/components/modules/ROOT/examples/json/hwcloud-frs.json
@@ -0,0 +1 @@
+../../../../../../components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/org/apache/camel/component/huaweicloud/frs/hwcloud-frs.json
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/nav.adoc 
b/docs/components/modules/ROOT/nav.adoc
index a432179..1f88c27 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -151,6 +151,7 @@
 ** xref:hdfs-component.adoc[HDFS]
 ** xref:http-component.adoc[HTTP]
 ** xref:hwcloud-summary.adoc[Huawei Cloud]
+*** xref:hwcloud-frs-component.adoc[Huawei Cloud Face Recognition Service]
 *** xref:hwcloud-imagerecognition-component.adoc[Huawei Cloud Image 
Recognition]
 *** xref:hwcloud-dms-component.adoc[Huawei Distributed Message Service (DMS)]
 *** xref:hwcloud-functiongraph-component.adoc[Huawei FunctionGraph]
diff --git a/docs/components/modules/ROOT/pages/hwcloud-frs-component.adoc 
b/docs/components/modules/ROOT/pages/hwcloud-frs-component.adoc
new file mode 120000
index 0000000..a2bd94a
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/hwcloud-frs-component.adoc
@@ -0,0 +1 @@
+../../../../../components/camel-huawei/camel-huaweicloud-frs/src/main/docs/hwcloud-frs-component.adoc
\ No newline at end of file

Reply via email to