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

wuchunfu 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 77f68f1ee [Improve][Connector-V2][Gitlab] Unified excetion for Gitlab 
connector and improve optione rule (#3533)
77f68f1ee is described below

commit 77f68f1eefc9e2978f6a0947a08bf1a0072172eb
Author: TaoZex <[email protected]>
AuthorDate: Thu Nov 24 12:03:55 2022 +0800

    [Improve][Connector-V2][Gitlab] Unified excetion for Gitlab connector and 
improve optione rule (#3533)
---
 .../seatunnel/gitlab/source/GitlabSource.java      |  6 +++-
 .../gitlab/source/GitlabSourceFactory.java         | 23 ++++++++++----
 .../source/exception/GitlabConnectorException.java | 35 ++++++++++++++++++++++
 3 files changed, 57 insertions(+), 7 deletions(-)

diff --git 
a/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSource.java
 
b/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSource.java
index 4ca4f23a7..70ab55a80 100644
--- 
a/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSource.java
+++ 
b/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSource.java
@@ -18,6 +18,7 @@
 package org.apache.seatunnel.connectors.seatunnel.gitlab.source;
 
 import org.apache.seatunnel.api.common.PrepareFailException;
+import org.apache.seatunnel.api.common.SeaTunnelAPIErrorCode;
 import org.apache.seatunnel.api.source.Boundedness;
 import org.apache.seatunnel.api.source.SeaTunnelSource;
 import org.apache.seatunnel.api.table.type.SeaTunnelRow;
@@ -29,6 +30,7 @@ import 
org.apache.seatunnel.connectors.seatunnel.common.source.AbstractSingleSpl
 import 
org.apache.seatunnel.connectors.seatunnel.common.source.SingleSplitReaderContext;
 import 
org.apache.seatunnel.connectors.seatunnel.gitlab.source.config.GitlabSourceConfig;
 import 
org.apache.seatunnel.connectors.seatunnel.gitlab.source.config.GitlabSourceParameter;
+import 
org.apache.seatunnel.connectors.seatunnel.gitlab.source.exception.GitlabConnectorException;
 import org.apache.seatunnel.connectors.seatunnel.http.source.HttpSource;
 import org.apache.seatunnel.connectors.seatunnel.http.source.HttpSourceReader;
 
@@ -60,7 +62,9 @@ public class GitlabSource extends HttpSource {
         CheckResult result = CheckConfigUtil.checkAllExists(pluginConfig, 
GitlabSourceConfig.URL.key(),
             GitlabSourceConfig.ACCESS_TOKEN.key());
         if (!result.isSuccess()) {
-            throw new PrepareFailException(getPluginName(), PluginType.SOURCE, 
result.getMsg());
+            throw new 
GitlabConnectorException(SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
+                    String.format("PluginName: %s, PluginType: %s, Message: 
%s",
+                            getPluginName(), PluginType.SOURCE, 
result.getMsg()));
         }
         this.gitlabSourceParameter.buildWithConfig(pluginConfig);
         buildSchemaWithConfig(pluginConfig);
diff --git 
a/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSourceFactory.java
 
b/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSourceFactory.java
index af1ca91dd..3f1d33b71 100644
--- 
a/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSourceFactory.java
+++ 
b/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSourceFactory.java
@@ -17,10 +17,14 @@
 
 package org.apache.seatunnel.connectors.seatunnel.gitlab.source;
 
+import org.apache.seatunnel.api.configuration.util.Condition;
 import org.apache.seatunnel.api.configuration.util.OptionRule;
 import org.apache.seatunnel.api.table.factory.Factory;
 import org.apache.seatunnel.api.table.factory.TableSourceFactory;
+import org.apache.seatunnel.connectors.seatunnel.common.schema.SeaTunnelSchema;
 import 
org.apache.seatunnel.connectors.seatunnel.gitlab.source.config.GitlabSourceConfig;
+import org.apache.seatunnel.connectors.seatunnel.http.config.HttpConfig;
+import org.apache.seatunnel.connectors.seatunnel.http.config.HttpRequestMethod;
 
 import com.google.auto.service.AutoService;
 
@@ -34,11 +38,18 @@ public class GitlabSourceFactory implements 
TableSourceFactory {
     @Override
     public OptionRule optionRule() {
         return OptionRule.builder()
-            .required(GitlabSourceConfig.URL)
-            .required(GitlabSourceConfig.ACCESS_TOKEN)
-            .optional(GitlabSourceConfig.RETRY)
-            .optional(GitlabSourceConfig.RETRY_BACKOFF_MAX_MS)
-            .optional(GitlabSourceConfig.RETRY_BACKOFF_MULTIPLIER_MS)
-            .build();
+                .required(GitlabSourceConfig.URL)
+                .required(GitlabSourceConfig.ACCESS_TOKEN)
+                .optional(GitlabSourceConfig.METHOD)
+                .optional(GitlabSourceConfig.HEADERS)
+                .optional(GitlabSourceConfig.PARAMS)
+                .conditional(Condition.of(HttpConfig.METHOD, 
HttpRequestMethod.POST), GitlabSourceConfig.BODY)
+                .conditional(Condition.of(HttpConfig.FORMAT, "json"), 
SeaTunnelSchema.SCHEMA)
+                .optional(GitlabSourceConfig.FORMAT)
+                .optional(GitlabSourceConfig.POLL_INTERVAL_MILLS)
+                .optional(GitlabSourceConfig.RETRY)
+                .optional(GitlabSourceConfig.RETRY_BACKOFF_MAX_MS)
+                .optional(GitlabSourceConfig.RETRY_BACKOFF_MULTIPLIER_MS)
+                .build();
     }
 }
diff --git 
a/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/exception/GitlabConnectorException.java
 
b/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/exception/GitlabConnectorException.java
new file mode 100644
index 000000000..4eb01403c
--- /dev/null
+++ 
b/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/exception/GitlabConnectorException.java
@@ -0,0 +1,35 @@
+/*
+ * 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.gitlab.source.exception;
+
+import org.apache.seatunnel.common.exception.SeaTunnelErrorCode;
+import org.apache.seatunnel.common.exception.SeaTunnelRuntimeException;
+
+public class GitlabConnectorException extends SeaTunnelRuntimeException {
+    public GitlabConnectorException(SeaTunnelErrorCode seaTunnelErrorCode, 
String errorMessage) {
+        super(seaTunnelErrorCode, errorMessage);
+    }
+
+    public GitlabConnectorException(SeaTunnelErrorCode seaTunnelErrorCode, 
String errorMessage, Throwable cause) {
+        super(seaTunnelErrorCode, errorMessage, cause);
+    }
+
+    public GitlabConnectorException(SeaTunnelErrorCode seaTunnelErrorCode, 
Throwable cause) {
+        super(seaTunnelErrorCode, cause);
+    }
+}

Reply via email to