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

tyrantlucifer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new 56be228ad [Improve][Connector-V2][DingTalk] Add DingTalk Sink Factory 
(#3324)
56be228ad is described below

commit 56be228ad2545d84740781292237c31bb6588fc3
Author: Hisoka <[email protected]>
AuthorDate: Tue Nov 8 17:56:05 2022 +0800

    [Improve][Connector-V2][DingTalk] Add DingTalk Sink Factory (#3324)
---
 docs/en/Connector-v2-release-state.md              |  2 +-
 .../connector-v2/sink/{dingtalk.md => DingTalk.md} |  0
 .../seatunnel/config/DingTalkConfig.java           | 29 ++++++++++++++++
 .../connectors/seatunnel/sink/DingTalkSink.java    | 15 ++++----
 .../seatunnel/sink/DingTalkSinkFactory.java        | 40 ++++++++++++++++++++++
 5 files changed, 78 insertions(+), 8 deletions(-)

diff --git a/docs/en/Connector-v2-release-state.md 
b/docs/en/Connector-v2-release-state.md
index 4e29be677..4d861d394 100644
--- a/docs/en/Connector-v2-release-state.md
+++ b/docs/en/Connector-v2-release-state.md
@@ -17,7 +17,7 @@ SeaTunnel uses a grading system for connectors to help you 
understand what to ex
 | [ClickHouseFile](connector-v2/sink/ClickhouseFile.md)       | Sink   | Beta  
 | 2.2.0-beta      |
 | [Console](connector-v2/sink/Console.md)                     | Sink   | Beta  
 | 2.2.0-beta      |
 | [DataHub](connector-v2/sink/Datahub.md)                     | Sink   | Alpha 
 | 2.2.0-beta      |
-| [DingTalk](connector-v2/sink/dingtalk.md)                   | Sink   | Alpha 
 | 2.2.0-beta      |
+| [DingTalk](connector-v2/sink/DingTalk.md)                   | Sink   | Alpha 
 | 2.2.0-beta      |
 | [Elasticsearch](connector-v2/sink/Elasticsearch.md)         | Sink   | Beta  
 | 2.2.0-beta      |
 | [Email](connector-v2/sink/Email.md)                         | Sink   | Alpha 
 | 2.2.0-beta      |
 | [Enterprise WeChat](connector-v2/sink/Enterprise-WeChat.md) | Sink   | Alpha 
 | 2.2.0-beta      |
diff --git a/docs/en/connector-v2/sink/dingtalk.md 
b/docs/en/connector-v2/sink/DingTalk.md
similarity index 100%
rename from docs/en/connector-v2/sink/dingtalk.md
rename to docs/en/connector-v2/sink/DingTalk.md
diff --git 
a/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/config/DingTalkConfig.java
 
b/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/config/DingTalkConfig.java
new file mode 100644
index 000000000..725de35d8
--- /dev/null
+++ 
b/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/config/DingTalkConfig.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.seatunnel.connectors.seatunnel.config;
+
+import org.apache.seatunnel.api.configuration.Option;
+import org.apache.seatunnel.api.configuration.Options;
+
+public class DingTalkConfig {
+
+    public static final Option<String> URL = 
Options.key("url").stringType().noDefaultValue()
+        .withDescription("DingTalk robot address format is 
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX";);
+    public static final Option<String> SECRET = 
Options.key("secret").stringType().noDefaultValue()
+        .withDescription("DingTalk robot secret");
+}
diff --git 
a/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkSink.java
 
b/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkSink.java
index 4a8d3cefa..27252b3b4 100644
--- 
a/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkSink.java
+++ 
b/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkSink.java
@@ -17,6 +17,9 @@
 
 package org.apache.seatunnel.connectors.seatunnel.sink;
 
+import static 
org.apache.seatunnel.connectors.seatunnel.config.DingTalkConfig.SECRET;
+import static 
org.apache.seatunnel.connectors.seatunnel.config.DingTalkConfig.URL;
+
 import org.apache.seatunnel.api.common.PrepareFailException;
 import org.apache.seatunnel.api.sink.SeaTunnelSink;
 import org.apache.seatunnel.api.sink.SinkWriter.Context;
@@ -42,8 +45,6 @@ public class DingTalkSink extends 
AbstractSimpleSink<SeaTunnelRow, Void> {
 
     private Config pluginConfig;
     private SeaTunnelRowType seaTunnelRowType;
-    private final String dtURL = "url";
-    private final String dtSecret = "secret";
 
     @Override
     public String getPluginName() {
@@ -52,13 +53,13 @@ public class DingTalkSink extends 
AbstractSimpleSink<SeaTunnelRow, Void> {
 
     @Override
     public void prepare(Config pluginConfig) throws PrepareFailException {
-        if (pluginConfig.getIsNull(dtURL)) {
+        if (pluginConfig.getIsNull(URL.key())) {
             throw new PrepareFailException(getPluginName(), PluginType.SINK,
-                String.format("Config must include column : %s", dtURL));
+                String.format("Config must include column : %s", URL.key()));
         }
-        if (pluginConfig.getIsNull(dtSecret)) {
+        if (pluginConfig.getIsNull(SECRET.key())) {
             throw new PrepareFailException(getPluginName(), PluginType.SINK,
-                String.format("Config must include column : %s", dtSecret));
+                String.format("Config must include column : %s", 
SECRET.key()));
         }
         this.pluginConfig = pluginConfig;
     }
@@ -75,6 +76,6 @@ public class DingTalkSink extends 
AbstractSimpleSink<SeaTunnelRow, Void> {
 
     @Override
     public AbstractSinkWriter<SeaTunnelRow, Void> createWriter(Context 
context) throws IOException {
-        return new DingTalkWriter(pluginConfig.getString(dtURL), 
pluginConfig.getString(dtSecret));
+        return new DingTalkWriter(pluginConfig.getString(URL.key()), 
pluginConfig.getString(SECRET.key()));
     }
 }
diff --git 
a/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkSinkFactory.java
 
b/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkSinkFactory.java
new file mode 100644
index 000000000..e72cac30e
--- /dev/null
+++ 
b/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkSinkFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.seatunnel.connectors.seatunnel.sink;
+
+import static 
org.apache.seatunnel.connectors.seatunnel.config.DingTalkConfig.SECRET;
+import static 
org.apache.seatunnel.connectors.seatunnel.config.DingTalkConfig.URL;
+
+import org.apache.seatunnel.api.configuration.util.OptionRule;
+import org.apache.seatunnel.api.table.factory.Factory;
+import org.apache.seatunnel.api.table.factory.TableSinkFactory;
+
+import com.google.auto.service.AutoService;
+
+@AutoService(Factory.class)
+public class DingTalkSinkFactory implements TableSinkFactory {
+    @Override
+    public String factoryIdentifier() {
+        return "DingTalkSink";
+    }
+
+    @Override
+    public OptionRule optionRule() {
+        return OptionRule.builder().required(URL, SECRET).build();
+    }
+}

Reply via email to