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

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


The following commit(s) were added to refs/heads/master by this push:
     new 7215d4e9bb When submitting, parameter values containing spaces are 
supported (#5272)
7215d4e9bb is described below

commit 7215d4e9bb7b80331abfd8a840c1c90cb1ce21b4
Author: LiuGuoHua <[email protected]>
AuthorDate: Tue Oct 28 10:30:13 2025 +0800

    When submitting, parameter values containing spaces are supported (#5272)
---
 .../linkis/common/conf/DWCArgumentsParser.scala    | 23 ++++---------
 .../linkis/common/utils/ParameterUtils.scala       | 40 ++++++++++++++++++++++
 .../common/utils/EngineConnArguments.scala         | 30 ++++------------
 .../ecm/core/launch/ProcessEngineConnLaunch.scala  |  3 +-
 4 files changed, 56 insertions(+), 40 deletions(-)

diff --git 
a/linkis-commons/linkis-common/src/main/scala/org/apache/linkis/common/conf/DWCArgumentsParser.scala
 
b/linkis-commons/linkis-common/src/main/scala/org/apache/linkis/common/conf/DWCArgumentsParser.scala
index 998db145e4..00f91d101b 100644
--- 
a/linkis-commons/linkis-common/src/main/scala/org/apache/linkis/common/conf/DWCArgumentsParser.scala
+++ 
b/linkis-commons/linkis-common/src/main/scala/org/apache/linkis/common/conf/DWCArgumentsParser.scala
@@ -17,6 +17,8 @@
 
 package org.apache.linkis.common.conf
 
+import org.apache.linkis.common.utils.{ParameterUtils, Logging}
+
 import org.apache.commons.lang3.StringUtils
 
 import scala.collection.JavaConverters.mapAsJavaMapConverter
@@ -34,24 +36,13 @@ object DWCArgumentsParser {
   def getDWCOptionMap: Map[String, String] = dwcOptionMap
 
   def parse(args: Array[String]): DWCArgumentsParser = {
-    val keyValueRegex = "([^=]+)=(.+)".r
-    var i = 0
     val optionParser = new DWCArgumentsParser
-    while (i < args.length - 1) {
-      args(i) match {
-        case DWC_CONF | SPRING_CONF =>
-          args(i + 1) match {
-            case keyValueRegex(key, value) =>
-              optionParser.setConf(args(i), key, value)
-              i += 1
-            case _ =>
-              throw new IllegalArgumentException("illegal commond line, 
format: --conf key=value.")
-          }
-        case _ =>
-          throw new IllegalArgumentException(s"illegal commond line, 
${args(i)} cannot recognize.")
+    ParameterUtils.parseStartupParams(
+      args,
+      (prefix, key, value) => {
+        optionParser.setConf(s"--$prefix-conf", key, value)
       }
-      i += 1
-    }
+    )
     optionParser.validate()
     optionParser
   }
diff --git 
a/linkis-commons/linkis-common/src/main/scala/org/apache/linkis/common/utils/ParameterUtils.scala
 
b/linkis-commons/linkis-common/src/main/scala/org/apache/linkis/common/utils/ParameterUtils.scala
new file mode 100644
index 0000000000..100529a771
--- /dev/null
+++ 
b/linkis-commons/linkis-common/src/main/scala/org/apache/linkis/common/utils/ParameterUtils.scala
@@ -0,0 +1,40 @@
+/*
+ * 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.linkis.common.utils
+
+object ParameterUtils {
+
+  private val startupConfRegex =
+    
"""--([a-z]+)-conf\s+(\S+)=([^=]+?)(?=\s*(?:--engineconn-conf|--spring-conf|$))""".r
+
+  def parseStartupParams(args: Array[String], handler: (String, String, 
String) => Unit): Unit = {
+    val argString = args.mkString(" ")
+    startupConfRegex.findAllMatchIn(argString).foreach { m =>
+      val prefix = m.group(1).trim
+      val key = m.group(2).trim
+      val value = m.group(3).trim
+      prefix match {
+        case "engineconn" | "spring" =>
+          handler(prefix, key, value)
+        case _ =>
+          throw new IllegalArgumentException(s"illegal command line, $prefix 
cannot recognize.")
+      }
+    }
+  }
+
+}
diff --git 
a/linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/utils/EngineConnArguments.scala
 
b/linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/utils/EngineConnArguments.scala
index 31d9b1e9b2..adb34b98aa 100644
--- 
a/linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/utils/EngineConnArguments.scala
+++ 
b/linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/utils/EngineConnArguments.scala
@@ -17,6 +17,8 @@
 
 package org.apache.linkis.governance.common.utils
 
+import org.apache.linkis.common.utils.{ParameterUtils, Logging}
+
 import org.apache.commons.lang3.StringUtils
 
 import scala.collection.mutable
@@ -105,31 +107,13 @@ class DefaultEngineConnArgumentsParser extends 
EngineConnArgumentsParser {
   protected val keyValueRegex = "([^=]+)=(.+)".r
 
   override def parseToObj(args: Array[String]): EngineConnArguments = {
-    var i = 0
     val argumentsBuilder = new DefaultEngineConnArgumentsBuilder
-    while (i < args.length) {
-      args(i) match {
-        case ENGINE_CONN_CONF =>
-          addKeyValue(
-            args(i + 1),
-            (key, value) => {
-              argumentsBuilder.addEngineConnConf(key, value)
-              i += 1
-            }
-          )
-        case SPRING_CONF =>
-          addKeyValue(
-            args(i + 1),
-            (key, value) => {
-              argumentsBuilder.addSpringConf(key, value)
-              i += 1
-            }
-          )
-        case _ =>
-          throw new IllegalArgumentException(s"illegal command line, 
${args(i)} cannot recognize.")
+    ParameterUtils.parseStartupParams(
+      args,
+      (prefix, key, value) => {
+        argumentsBuilder.addEngineConnConf(key, value)
       }
-      i += 1
-    }
+    )
     argumentsBuilder.build()
   }
 
diff --git 
a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineConnLaunch.scala
 
b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineConnLaunch.scala
index 4dfb96b3d5..2a466cc208 100644
--- 
a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineConnLaunch.scala
+++ 
b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineConnLaunch.scala
@@ -170,7 +170,7 @@ trait ProcessEngineConnLaunch extends EngineConnLaunch with 
Logging {
   protected def getCommandArgs: Array[String] = {
     if (
         request.creationDesc.properties.asScala.exists { case (k, v) =>
-          k.contains(" ") || (v != null && v.contains(" "))
+          k.contains(" ")
         }
     ) {
       throw new ErrorException(
@@ -223,6 +223,7 @@ trait ProcessEngineConnLaunch extends EngineConnLaunch with 
Logging {
     engineConnConf += (ENGINE_CONN_CONTAINERIZATION_MAPPING_PORTS.key -> 
mappingPorts)
     engineConnConf += (ENGINE_CONN_CONTAINERIZATION_MAPPING_HOST.key -> 
mappingHost)
 
+    engineConnConf = engineConnConf.map(m => (m._1, s""""${m._2}""""))
     arguments.addEngineConnConf(engineConnConf)
     
EngineConnArgumentsParser.getEngineConnArgumentsParser.parseToArgs(arguments.build())
   }


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

Reply via email to