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

zongwen 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 0645d1118 [Connector][Email] Add Email Sink Factory (#3326)
0645d1118 is described below

commit 0645d111800c1653684b0d3779dc11f891aa05a9
Author: Hisoka <[email protected]>
AuthorDate: Wed Nov 9 10:04:42 2022 +0800

    [Connector][Email] Add Email Sink Factory (#3326)
    
    * [Connector-V2] [Email] Add Email Sink Factory
    
    * [Connector-V2] [Email] change factoryIdentifier value
    
    * [Connector-V2] [Email] change factoryIdentifier value
---
 .../seatunnel/email/config/EmailConfig.java        | 44 +++++++++++++++++++
 .../seatunnel/email/config/EmailSinkConfig.java    | 50 +++++++++++-----------
 .../seatunnel/email/sink/EmailSinkFactory.java     | 47 ++++++++++++++++++++
 3 files changed, 116 insertions(+), 25 deletions(-)

diff --git 
a/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/config/EmailConfig.java
 
b/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/config/EmailConfig.java
new file mode 100644
index 000000000..c2ac9f90a
--- /dev/null
+++ 
b/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/config/EmailConfig.java
@@ -0,0 +1,44 @@
+/*
+ * 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.email.config;
+
+import org.apache.seatunnel.api.configuration.Option;
+import org.apache.seatunnel.api.configuration.Options;
+
+public class EmailConfig {
+
+    public static final Option<String> EMAIL_FROM_ADDRESS = 
Options.key("email_from_address").stringType().noDefaultValue()
+        .withDescription("Sender Email Address");
+
+    public static final Option<String> EMAIL_TO_ADDRESS = 
Options.key("email_to_address").stringType().noDefaultValue()
+        .withDescription("Address to receive mail");
+
+    public static final Option<String> EMAIL_AUTHORIZATION_CODE = 
Options.key("email_authorization_code").stringType()
+        .noDefaultValue().withDescription("Authorization code,You can obtain 
the authorization code from the mailbox Settings");
+    public static final Option<String> EMAIL_MESSAGE_HEADLINE = 
Options.key("email_message_headline").stringType()
+        .noDefaultValue().withDescription("The subject line of the entire 
message");
+
+    public static final Option<String> EMAIL_MESSAGE_CONTENT = 
Options.key("email_message_content").stringType()
+        .noDefaultValue().withDescription("The body of the entire message");
+    public static final Option<String> EMAIL_HOST = 
Options.key("email_host").stringType().noDefaultValue()
+        .withDescription("SMTP server to connect to");
+    public static final Option<String> EMAIL_TRANSPORT_PROTOCOL = 
Options.key("email_transport_protocol").stringType()
+        .noDefaultValue().withDescription("The protocol used to send the 
message");
+    public static final Option<String> EMAIL_SMTP_AUTH = 
Options.key("email_smtp_auth").stringType().noDefaultValue()
+        .withDescription("Whether to use SMTP authentication");
+}
diff --git 
a/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/config/EmailSinkConfig.java
 
b/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/config/EmailSinkConfig.java
index f7b69c1ff..c9ebfe9c2 100644
--- 
a/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/config/EmailSinkConfig.java
+++ 
b/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/config/EmailSinkConfig.java
@@ -17,6 +17,15 @@
 
 package org.apache.seatunnel.connectors.seatunnel.email.config;
 
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_AUTHORIZATION_CODE;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_FROM_ADDRESS;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_HOST;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_MESSAGE_CONTENT;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_MESSAGE_HEADLINE;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_SMTP_AUTH;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_TO_ADDRESS;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_TRANSPORT_PROTOCOL;
+
 import org.apache.seatunnel.shade.com.typesafe.config.Config;
 
 import lombok.Data;
@@ -24,15 +33,6 @@ import lombok.NonNull;
 
 @Data
 public class EmailSinkConfig {
-
-    private static final String EMAIL_FROM_ADDRESS = "email_from_address";
-    private static final String EMAIL_TO_ADDRESS = "email_to_address";
-    private static final String EMAIL_AUTHORIZATION_CODE = 
"email_authorization_code";
-    private static final String EMAIL_MESSAGE_HEADLINE = 
"email_message_headline";
-    private static final String EMAIL_MESSAGE_CONTENT = 
"email_message_content";
-    private static final String EMAIL_HOST = "email_host";
-    private static final String EMAIL_TRANSPORT_PROTOCOL = 
"email_transport_protocol";
-    private static final String EMAIL_SMTP_AUTH = "email_smtp_auth";
     private String emailFromAddress;
     private String emailToAddress;
     private String emailAuthorizationCode;
@@ -43,29 +43,29 @@ public class EmailSinkConfig {
     private String emailSmtpAuth;
 
     public EmailSinkConfig(@NonNull Config pluginConfig) {
-        if (pluginConfig.hasPath(EMAIL_FROM_ADDRESS)) {
-            this.emailFromAddress = pluginConfig.getString(EMAIL_FROM_ADDRESS);
+        if (pluginConfig.hasPath(EMAIL_FROM_ADDRESS.key())) {
+            this.emailFromAddress = 
pluginConfig.getString(EMAIL_FROM_ADDRESS.key());
         }
-        if (pluginConfig.hasPath(EMAIL_TO_ADDRESS)) {
-            this.emailToAddress = pluginConfig.getString(EMAIL_TO_ADDRESS);
+        if (pluginConfig.hasPath(EMAIL_TO_ADDRESS.key())) {
+            this.emailToAddress = 
pluginConfig.getString(EMAIL_TO_ADDRESS.key());
         }
-        if (pluginConfig.hasPath(EMAIL_AUTHORIZATION_CODE)) {
-            this.emailAuthorizationCode = 
pluginConfig.getString(EMAIL_AUTHORIZATION_CODE);
+        if (pluginConfig.hasPath(EMAIL_AUTHORIZATION_CODE.key())) {
+            this.emailAuthorizationCode = 
pluginConfig.getString(EMAIL_AUTHORIZATION_CODE.key());
         }
-        if (pluginConfig.hasPath(EMAIL_MESSAGE_HEADLINE)) {
-            this.emailMessageHeadline = 
pluginConfig.getString(EMAIL_MESSAGE_HEADLINE);
+        if (pluginConfig.hasPath(EMAIL_MESSAGE_HEADLINE.key())) {
+            this.emailMessageHeadline = 
pluginConfig.getString(EMAIL_MESSAGE_HEADLINE.key());
         }
-        if (pluginConfig.hasPath(EMAIL_MESSAGE_CONTENT)) {
-            this.emailMessageContent = 
pluginConfig.getString(EMAIL_MESSAGE_CONTENT);
+        if (pluginConfig.hasPath(EMAIL_MESSAGE_CONTENT.key())) {
+            this.emailMessageContent = 
pluginConfig.getString(EMAIL_MESSAGE_CONTENT.key());
         }
-        if (pluginConfig.hasPath(EMAIL_HOST)) {
-            this.emailHost = pluginConfig.getString(EMAIL_HOST);
+        if (pluginConfig.hasPath(EMAIL_HOST.key())) {
+            this.emailHost = pluginConfig.getString(EMAIL_HOST.key());
         }
-        if (pluginConfig.hasPath(EMAIL_TRANSPORT_PROTOCOL)) {
-            this.emailTransportProtocol = 
pluginConfig.getString(EMAIL_TRANSPORT_PROTOCOL);
+        if (pluginConfig.hasPath(EMAIL_TRANSPORT_PROTOCOL.key())) {
+            this.emailTransportProtocol = 
pluginConfig.getString(EMAIL_TRANSPORT_PROTOCOL.key());
         }
-        if (pluginConfig.hasPath(EMAIL_SMTP_AUTH)) {
-            this.emailSmtpAuth = pluginConfig.getString(EMAIL_SMTP_AUTH);
+        if (pluginConfig.hasPath(EMAIL_SMTP_AUTH.key())) {
+            this.emailSmtpAuth = pluginConfig.getString(EMAIL_SMTP_AUTH.key());
         }
     }
 }
diff --git 
a/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/sink/EmailSinkFactory.java
 
b/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/sink/EmailSinkFactory.java
new file mode 100644
index 000000000..c5962c2f4
--- /dev/null
+++ 
b/seatunnel-connectors-v2/connector-email/src/main/java/org/apache/seatunnel/connectors/seatunnel/email/sink/EmailSinkFactory.java
@@ -0,0 +1,47 @@
+/*
+ * 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.email.sink;
+
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_AUTHORIZATION_CODE;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_FROM_ADDRESS;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_HOST;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_MESSAGE_CONTENT;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_MESSAGE_HEADLINE;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_SMTP_AUTH;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_TO_ADDRESS;
+import static 
org.apache.seatunnel.connectors.seatunnel.email.config.EmailConfig.EMAIL_TRANSPORT_PROTOCOL;
+
+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 EmailSinkFactory implements TableSinkFactory {
+    @Override
+    public String factoryIdentifier() {
+        return "EmailSink";
+    }
+
+    @Override
+    public OptionRule optionRule() {
+        return OptionRule.builder().required(EMAIL_FROM_ADDRESS, 
EMAIL_TO_ADDRESS, EMAIL_HOST, EMAIL_TRANSPORT_PROTOCOL,
+            EMAIL_SMTP_AUTH, EMAIL_AUTHORIZATION_CODE, EMAIL_MESSAGE_HEADLINE, 
EMAIL_MESSAGE_CONTENT).build();
+    }
+}

Reply via email to