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