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

healchow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 8998b244c [INLONG-4711][Manager] Fix JSON parse failed in client 
(#4712)
8998b244c is described below

commit 8998b244c8a1bfe503e911bc1c1aa04cf53586f1
Author: kipshi <[email protected]>
AuthorDate: Wed Jun 22 10:12:45 2022 +0800

    [INLONG-4711][Manager] Fix JSON parse failed in client (#4712)
---
 .../java/org/apache/inlong/common/enums/MetaField.java | 17 +++++++++++++++--
 .../manager/client/api/impl/InlongGroupImpl.java       | 18 +++++++++++++++++-
 .../client/api/inner/InnerInlongManagerClient.java     | 18 ++++++++++++++++--
 .../manager/client/api/service/InlongGroupApi.java     |  3 +--
 .../manager/client/api/service/InlongStreamApi.java    |  4 ++--
 .../manager/client/api/service/StreamTransformApi.java | 10 +++++-----
 .../inlong/manager/common/enums/GroupStatus.java       |  3 ++-
 .../common/pojo/transform/filter/FilterDefinition.java |  2 +-
 .../apache/inlong/manager/common/util/JsonUtils.java   |  2 ++
 9 files changed, 61 insertions(+), 16 deletions(-)

diff --git 
a/inlong-common/src/main/java/org/apache/inlong/common/enums/MetaField.java 
b/inlong-common/src/main/java/org/apache/inlong/common/enums/MetaField.java
index fbfd2773b..bbc3d6bd7 100644
--- a/inlong-common/src/main/java/org/apache/inlong/common/enums/MetaField.java
+++ b/inlong-common/src/main/java/org/apache/inlong/common/enums/MetaField.java
@@ -27,62 +27,75 @@ public enum MetaField {
      * The process time of flink
      */
     PROCESS_TIME,
+
     /**
      * Name of the schema that contain the row, currently used for Oracle, 
PostgreSQL, SQLSERVER
      */
     SCHEMA_NAME,
+
     /**
      * Name of the database that contain the row.
      */
     DATABASE_NAME,
+
     /**
      * Name of the table that contain the row.
      */
     TABLE_NAME,
+
     /**
      * It indicates the time that the change was made in the database.
      * If the record is read from snapshot of the table instead of the change 
stream, the value is always 0
      */
     OP_TS,
+
     /**
      * Whether the DDL statement. Currently, it is used for MySQL database.
      */
     IS_DDL,
+
     /**
      * Type of database operation, such as INSERT/DELETE, etc. Currently, it 
is used for MySQL database.
      */
     OP_TYPE,
+
     /**
      * MySQL binlog data Row. Currently, it is used for MySQL database.
      */
     DATA,
+
     /**
      * The value of the field before update. Currently, it is used for MySQL 
database.
      */
     UPDATE_BEFORE,
+
     /**
      * Batch id of binlog. Currently, it is used for MySQL database.
      */
     BATCH_ID,
+
     /**
      * Mapping of sql_type table fields to java data type IDs. Currently, it 
is used for MySQL database.
      */
     SQL_TYPE,
+
     /**
      * The current time when the ROW was received and processed. Currently, it 
is used for MySQL database.
      */
     TS,
+
     /**
      * The table structure. It is only used for MySQL database
      */
     MYSQL_TYPE,
+
     /**
      * Primary key field name. Currently, it is used for MySQL database.
      */
     PK_NAMES,
 
     /**
-     * Name of the collection that contain the row. For MongoDB
+     * Name of the collection that contain the row, it is only used for 
MongoDB.
      */
     COLLECTION_NAME;
 
@@ -92,6 +105,6 @@ public enum MetaField {
                 return metaField;
             }
         }
-        throw new UnsupportedOperationException(String.format("Unsupported 
MetaField=%s for Inlong", name));
+        throw new UnsupportedOperationException(String.format("Unsupported 
MetaField=%s", name));
     }
 }
diff --git 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongGroupImpl.java
 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongGroupImpl.java
index 3472b7141..214f95df6 100644
--- 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongGroupImpl.java
+++ 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongGroupImpl.java
@@ -45,6 +45,7 @@ import 
org.apache.inlong.manager.common.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.common.pojo.workflow.form.NewGroupProcessForm;
 import org.apache.inlong.manager.common.util.AssertUtils;
 import org.apache.inlong.manager.common.util.JsonUtils;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
 
 import java.util.List;
 import java.util.Map;
@@ -55,6 +56,10 @@ import java.util.stream.Collectors;
  */
 public class InlongGroupImpl implements InlongGroup {
 
+    public static final String GROUP_FIELD = "groupInfo";
+    public static final String MQ_FIELD_OLD = "middlewareType";
+    public static final String MQ_FIELD = "mqType";
+
     private final InnerGroupContext groupContext;
     private InlongGroupInfo groupInfo;
     private InnerInlongManagerClient managerClient;
@@ -102,8 +107,19 @@ public class InlongGroupImpl implements InlongGroup {
                         processView.getStatus()));
 
         // init must be NewGroupProcessForm
+        // compile with old cluster
+        JSONObject formDataJson =
+                
JsonUtils.parseObject(JsonUtils.toJsonString(JsonUtils.toJsonString(processView.getFormData())),
+                        JSONObject.class);
+        if (formDataJson.has(GROUP_FIELD)) {
+            JSONObject groupInfoJson = formDataJson.getJSONObject(GROUP_FIELD);
+            if (groupInfoJson.has(MQ_FIELD_OLD) && 
!groupInfoJson.has(MQ_FIELD)) {
+                groupInfoJson.put(MQ_FIELD, groupInfoJson.get(MQ_FIELD_OLD));
+            }
+        }
+        String formDataNew = formDataJson.toString();
         NewGroupProcessForm newGroupProcessForm = JsonUtils.parseObject(
-                JsonUtils.toJsonString(processView.getFormData()), 
NewGroupProcessForm.class);
+                formDataNew, NewGroupProcessForm.class);
         AssertUtils.notNull(newGroupProcessForm, "NewGroupProcessForm cannot 
be null");
 
         groupContext.setInitMsg(newGroupProcessForm);
diff --git 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/InnerInlongManagerClient.java
 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/InnerInlongManagerClient.java
index f05d9f00e..7a2391e39 100644
--- 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/InnerInlongManagerClient.java
+++ 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/InnerInlongManagerClient.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.github.pagehelper.PageInfo;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
@@ -58,6 +59,7 @@ import 
org.apache.inlong.manager.common.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.common.pojo.workflow.form.NewGroupProcessForm;
 import org.apache.inlong.manager.common.util.AssertUtils;
 import org.apache.inlong.manager.common.util.JsonUtils;
+import org.springframework.boot.configurationprocessor.json.JSONObject;
 import retrofit2.Call;
 import retrofit2.Retrofit;
 import retrofit2.converter.jackson.JacksonConverterFactory;
@@ -66,6 +68,9 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
+import static 
org.apache.inlong.manager.client.api.impl.InlongGroupImpl.MQ_FIELD;
+import static 
org.apache.inlong.manager.client.api.impl.InlongGroupImpl.MQ_FIELD_OLD;
+
 /**
  * InnerInlongManagerClient is used to invoke http api of inlong manager.
  */
@@ -144,12 +149,21 @@ public class InnerInlongManagerClient {
     /**
      * Get information of group.
      */
+    @SneakyThrows
     public InlongGroupInfo getGroupInfo(String inlongGroupId) {
         AssertUtils.notEmpty(inlongGroupId, "InlongGroupId should not be 
empty");
 
-        Response<InlongGroupInfo> responseBody = 
executeHttpCall(inlongGroupApi.getGroupInfo(inlongGroupId));
+        Response<Object> responseBody = 
executeHttpCall(inlongGroupApi.getGroupInfo(inlongGroupId));
         if (responseBody.isSuccess()) {
-            return responseBody.getData();
+            JSONObject groupInfoJson = JsonUtils.parseObject(
+                    
JsonUtils.toJsonString(JsonUtils.toJsonString(responseBody.getData())),
+                    JSONObject.class);
+            if (groupInfoJson.has(MQ_FIELD_OLD) && 
!groupInfoJson.has(MQ_FIELD)) {
+                groupInfoJson.put(MQ_FIELD, groupInfoJson.get(MQ_FIELD_OLD));
+            }
+            InlongGroupInfo inlongGroupInfo = JsonUtils.parseObject(
+                    groupInfoJson.toString(), InlongGroupInfo.class);
+            return inlongGroupInfo;
         }
 
         if (responseBody.getErrMsg().contains("not exist")) {
diff --git 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
index 1cb860764..202c2f7c7 100644
--- 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
+++ 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.client.api.service;
 
 import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.beans.Response;
-import org.apache.inlong.manager.common.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.common.pojo.group.InlongGroupListResponse;
 import org.apache.inlong.manager.common.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.common.pojo.group.InlongGroupRequest;
@@ -37,7 +36,7 @@ public interface InlongGroupApi {
     Call<Response<Boolean>> isGroupExists(@Path("id") String id);
 
     @GET("group/get/{id}")
-    Call<Response<InlongGroupInfo>> getGroupInfo(@Path("id") String id);
+    Call<Response<Object>> getGroupInfo(@Path("id") String id);
 
     @POST("group/list")
     Call<Response<PageInfo<InlongGroupListResponse>>> listGroups(@Body 
InlongGroupPageRequest request);
diff --git 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
index 022972c17..c8af43598 100644
--- 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
+++ 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
@@ -42,8 +42,8 @@ public interface InlongStreamApi {
     Call<Response<Boolean>> updateStream(@Body InlongStreamInfo stream);
 
     @GET("stream/get")
-    Call<Response<InlongStreamInfo>> getStream(@Query("inlongGroupId") String 
groupId,
-            @Query("inlongStreamId") String streamId);
+    Call<Response<InlongStreamInfo>> getStream(@Query("groupId") String 
groupId,
+            @Query("streamId") String streamId);
 
     @POST("stream/listAll")
     Call<Response<PageInfo<FullStreamResponse>>> listStream(@Body 
InlongStreamPageRequest request);
diff --git 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamTransformApi.java
 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamTransformApi.java
index ea4221e79..9ae9f7796 100644
--- 
a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamTransformApi.java
+++ 
b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamTransformApi.java
@@ -25,7 +25,7 @@ import retrofit2.http.Body;
 import retrofit2.http.DELETE;
 import retrofit2.http.GET;
 import retrofit2.http.POST;
-import retrofit2.http.Path;
+import retrofit2.http.Query;
 
 import java.util.List;
 
@@ -35,14 +35,14 @@ public interface StreamTransformApi {
     Call<Response<Integer>> createTransform(@Body TransformRequest request);
 
     @GET("transform/list")
-    Call<Response<List<TransformResponse>>> 
listTransform(@Path("inlongGroupId") String groupId,
-            @Path("inlongStreamId") String streamId);
+    Call<Response<List<TransformResponse>>> 
listTransform(@Query("inlongGroupId") String groupId,
+            @Query("inlongStreamId") String streamId);
 
     @POST("transform/update")
     Call<Response<Boolean>> updateTransform(@Body TransformRequest request);
 
     @DELETE("transform/delete")
-    Call<Response<Boolean>> deleteTransform(@Path("inlongGroupId") String 
groupId,
-            @Path("inlongStreamId") String streamId, @Path("transformName") 
String transformName);
+    Call<Response<Boolean>> deleteTransform(@Query("inlongGroupId") String 
groupId,
+            @Query("inlongStreamId") String streamId, @Query("transformName") 
String transformName);
 
 }
diff --git 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/GroupStatus.java
 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/GroupStatus.java
index 51fc52268..dafcfe747 100644
--- 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/GroupStatus.java
+++ 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/GroupStatus.java
@@ -60,7 +60,8 @@ public enum GroupStatus {
     static {
         GROUP_STATE_AUTOMATON.put(DRAFT, Sets.newHashSet(DRAFT, TO_BE_SUBMIT, 
DELETING));
         GROUP_STATE_AUTOMATON.put(TO_BE_SUBMIT, Sets.newHashSet(TO_BE_SUBMIT, 
TO_BE_APPROVAL, DELETING));
-        GROUP_STATE_AUTOMATON.put(TO_BE_APPROVAL, 
Sets.newHashSet(TO_BE_APPROVAL, APPROVE_REJECTED, APPROVE_PASSED));
+        GROUP_STATE_AUTOMATON.put(TO_BE_APPROVAL,
+                Sets.newHashSet(TO_BE_APPROVAL, APPROVE_REJECTED, 
APPROVE_PASSED, DELETING));
 
         GROUP_STATE_AUTOMATON.put(APPROVE_REJECTED, 
Sets.newHashSet(APPROVE_REJECTED, TO_BE_APPROVAL, DELETING));
         GROUP_STATE_AUTOMATON.put(APPROVE_PASSED, 
Sets.newHashSet(APPROVE_PASSED, CONFIG_ING, DELETING));
diff --git 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/transform/filter/FilterDefinition.java
 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/transform/filter/FilterDefinition.java
index 248347d15..61aec547b 100644
--- 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/transform/filter/FilterDefinition.java
+++ 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/transform/filter/FilterDefinition.java
@@ -77,7 +77,7 @@ public class FilterDefinition extends TransformDefinition {
         /**
          * If target value is constant, set targetConstant, or set targetField 
if not;
          */
-        private boolean isConstant;
+        private boolean constant;
 
         private StreamField targetField;
 
diff --git 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/util/JsonUtils.java
 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/util/JsonUtils.java
index de9f22e03..d60077d71 100644
--- 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/util/JsonUtils.java
+++ 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/util/JsonUtils.java
@@ -20,6 +20,7 @@ package org.apache.inlong.manager.common.util;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -50,6 +51,7 @@ public class JsonUtils {
 
     static {
         OBJECT_MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, 
false);
+        
OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, 
false);
         initJsonTypeDefine(OBJECT_MAPPER);
     }
 

Reply via email to