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