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();
+ }
+}