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

peacewong pushed a commit to branch dev-1.4.0
in repository https://gitbox.apache.org/repos/asf/linkis.git


The following commit(s) were added to refs/heads/dev-1.4.0 by this push:
     new 1e25954be support map string value (#4409)
1e25954be is described below

commit 1e25954be41238d7773136a3a4752223f92f0d72
Author: GuoPhilipse <[email protected]>
AuthorDate: Mon Mar 27 19:59:51 2023 +0800

    support map string value (#4409)
---
 .../label/entity/engine/EngineTypeLabel.java       | 30 +++++++++++-----
 .../label/entity/engine/EngineTypeLabelTest.java   | 42 +++++++++++++++-------
 2 files changed, 51 insertions(+), 21 deletions(-)

diff --git 
a/linkis-computation-governance/linkis-manager/linkis-label-common/src/main/java/org/apache/linkis/manager/label/entity/engine/EngineTypeLabel.java
 
b/linkis-computation-governance/linkis-manager/linkis-label-common/src/main/java/org/apache/linkis/manager/label/entity/engine/EngineTypeLabel.java
index 912f6c9f9..d588515b9 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-label-common/src/main/java/org/apache/linkis/manager/label/entity/engine/EngineTypeLabel.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-label-common/src/main/java/org/apache/linkis/manager/label/entity/engine/EngineTypeLabel.java
@@ -23,6 +23,7 @@ import org.apache.linkis.manager.label.entity.EngineNodeLabel;
 import org.apache.linkis.manager.label.entity.Feature;
 import org.apache.linkis.manager.label.entity.GenericLabel;
 import org.apache.linkis.manager.label.entity.annon.ValueSerialNum;
+import org.apache.linkis.manager.label.utils.LabelUtils;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -77,16 +78,27 @@ public class EngineTypeLabel extends GenericLabel 
implements EngineNodeLabel, EM
 
   @Override
   protected void setStringValue(String stringValue) {
-    String version;
-    String engineType = stringValue.split("-")[0];
-
-    if (engineType.equals("*")) {
-      version = stringValue.replaceFirst("[" + engineType + "]-", "");
+    if (StringUtils.isNotBlank(stringValue)) {
+      HashMap<String, String> valueMap = 
LabelUtils.Jackson.fromJson(stringValue, HashMap.class);
+      if (valueMap == null) {
+        String version;
+        String engineType = stringValue.split("-")[0];
+
+        if (engineType.equals("*")) {
+          version = stringValue.replaceFirst("[" + engineType + "]-", "");
+        } else {
+          version = stringValue.replaceFirst(engineType + "-", "");
+        }
+
+        setEngineType(engineType);
+        setVersion(version);
+      } else {
+        setEngineType(valueMap.get("engineType"));
+        setVersion(valueMap.get("version"));
+      }
     } else {
-      version = stringValue.replaceFirst(engineType + "-", "");
+      setEngineType("*");
+      setVersion("*");
     }
-
-    setEngineType(engineType);
-    setVersion(version);
   }
 }
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-label-common/src/test/java/org/apache/linkis/manager/label/entity/engine/EngineTypeLabelTest.java
 
b/linkis-computation-governance/linkis-manager/linkis-label-common/src/test/java/org/apache/linkis/manager/label/entity/engine/EngineTypeLabelTest.java
index cc4171b43..e429a6092 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-label-common/src/test/java/org/apache/linkis/manager/label/entity/engine/EngineTypeLabelTest.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-label-common/src/test/java/org/apache/linkis/manager/label/entity/engine/EngineTypeLabelTest.java
@@ -28,20 +28,38 @@ public class EngineTypeLabelTest {
 
   @Test
   public void testSetStringValue() {
-    String engineType = "hive";
-    String version = "1.1.0-cdh5.12.0";
-
-    String engineType1 = "*";
-    String version1 = "*";
-
     LabelBuilderFactory labelBuilderFactory = 
LabelBuilderFactoryContext.getLabelBuilderFactory();
     EngineTypeLabel engineTypeLabel = 
labelBuilderFactory.createLabel(EngineTypeLabel.class);
-    engineTypeLabel.setStringValue(engineType + "-" + version);
-    Assertions.assertEquals(engineTypeLabel.getEngineType(), engineType);
-    Assertions.assertEquals(engineTypeLabel.getVersion(), version);
 
-    engineTypeLabel.setStringValue(engineType1 + "-" + version1);
-    Assertions.assertEquals(engineTypeLabel.getEngineType(), engineType1);
-    Assertions.assertEquals(engineTypeLabel.getVersion(), version1);
+    // str value
+    String hiveEngineType = "hive";
+    String hiveVersion = "1.1.0-cdh5.12.0";
+    engineTypeLabel.setStringValue(hiveEngineType + "-" + hiveVersion);
+    Assertions.assertEquals(engineTypeLabel.getEngineType(), hiveEngineType);
+    Assertions.assertEquals(engineTypeLabel.getVersion(), hiveVersion);
+
+    // any value
+    String anyEngineType = "*";
+    String anyVersion = "*";
+    engineTypeLabel.setStringValue(anyEngineType + "-" + anyVersion);
+    Assertions.assertEquals(engineTypeLabel.getEngineType(), anyEngineType);
+    Assertions.assertEquals(engineTypeLabel.getVersion(), anyVersion);
+
+    // map value
+    String mapStringValue = "{\"engineType\":\"shell\",\"version\":\"1\"}";
+    engineTypeLabel.setStringValue(mapStringValue);
+    Assertions.assertEquals(engineTypeLabel.getEngineType(), "shell");
+    Assertions.assertEquals(engineTypeLabel.getVersion(), "1");
+
+    // empty value will treat as *
+    String emptyStringValue = "";
+    engineTypeLabel.setStringValue(emptyStringValue);
+    Assertions.assertEquals(engineTypeLabel.getEngineType(), "*");
+    Assertions.assertEquals(engineTypeLabel.getVersion(), "*");
+
+    // null value will treat as *
+    engineTypeLabel.setStringValue(null);
+    Assertions.assertEquals(engineTypeLabel.getEngineType(), "*");
+    Assertions.assertEquals(engineTypeLabel.getVersion(), "*");
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to