You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampark.apache.org by mu...@apache.org on 2023/03/05 06:28:33 UTC
[incubator-streampark] branch dev updated: string converter improvement (#2399)
This is an automated email from the ASF dual-hosted git repository.
muchunjin pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev by this push:
new fcf227e98 string converter improvement (#2399)
fcf227e98 is described below
commit fcf227e989772873bbf0ae54da9fc5fdc1432ccd
Author: benjobs <be...@apache.org>
AuthorDate: Sun Mar 5 14:28:27 2023 +0800
string converter improvement (#2399)
---
.../streampark/common/conf/ConfigOption.scala | 9 +++--
...{Converter.scala => InternalConfigHolder.scala} | 30 ++-------------
.../apache/streampark/common/conf/Workspace.scala | 6 +--
.../org/apache/streampark/common/util/Utils.scala | 44 +++++++++++++++++++++-
4 files changed, 55 insertions(+), 34 deletions(-)
diff --git a/streampark-common/src/main/scala/org/apache/streampark/common/conf/ConfigOption.scala b/streampark-common/src/main/scala/org/apache/streampark/common/conf/ConfigOption.scala
index 76208ee4b..5046ed76c 100644
--- a/streampark-common/src/main/scala/org/apache/streampark/common/conf/ConfigOption.scala
+++ b/streampark-common/src/main/scala/org/apache/streampark/common/conf/ConfigOption.scala
@@ -16,8 +16,9 @@
*/
package org.apache.streampark.common.conf
-import java.util.Properties
+import org.apache.streampark.common.util.Utils.StringCasts
+import java.util.Properties
import scala.util.{Failure, Success, Try}
/**
@@ -40,12 +41,12 @@ case class ConfigOption[T](key: String, defaultValue: T = null, required: Boolea
if (required) {
prop.get(fullKey) match {
case null => throw error("is require")
- case v => Converter.convert[T](v.toString, classType)
+ case v => v.toString.cast[T](classType)
}
} else {
prop.getProperty(fullKey) match {
case null => defaultValue
- case v => Converter.convert[T](v, classType)
+ case v => v.cast[T](classType)
}
}
case _ =>
@@ -57,7 +58,7 @@ case class ConfigOption[T](key: String, defaultValue: T = null, required: Boolea
} else {
Try(handle(fullKey)) match {
case Success(v) => v
- case Failure(e) => defaultValue
+ case Failure(_) => defaultValue
}
}
}
diff --git a/streampark-common/src/main/scala/org/apache/streampark/common/conf/Converter.scala b/streampark-common/src/main/scala/org/apache/streampark/common/conf/InternalConfigHolder.scala
similarity index 81%
rename from streampark-common/src/main/scala/org/apache/streampark/common/conf/Converter.scala
rename to streampark-common/src/main/scala/org/apache/streampark/common/conf/InternalConfigHolder.scala
index abd90d2ec..893801c79 100644
--- a/streampark-common/src/main/scala/org/apache/streampark/common/conf/Converter.scala
+++ b/streampark-common/src/main/scala/org/apache/streampark/common/conf/InternalConfigHolder.scala
@@ -17,14 +17,13 @@
package org.apache.streampark.common.conf
-import java.lang.{Boolean => JavaBool, Double => JavaDouble, Float => JavaFloat, Integer => JavaInt, Long => JavaLong}
+import org.apache.streampark.common.util.Utils.StringCasts
+
import java.util
import java.util.concurrent.ConcurrentHashMap
import javax.annotation.{Nonnull, Nullable}
-
import scala.collection.JavaConversions._
import scala.language.postfixOps
-
import org.apache.streampark.common.util.{Logger, SystemPropertyUtils}
/**
@@ -80,7 +79,7 @@ object InternalConfigHolder extends Logger {
confData.get(conf.key) match {
case null =>
SystemPropertyUtils.get(conf.key) match {
- case v if v != null => Converter.convert[T](v, conf.classType)
+ case v if v != null => v.cast[T](conf.classType)
case _ => conf.defaultValue.asInstanceOf[T]
}
case v: T => v
@@ -109,7 +108,7 @@ object InternalConfigHolder extends Logger {
case null =>
val config = getConfig(key)
SystemPropertyUtils.get(key) match {
- case v if v != null => Converter.convert[T](v, config.classType)
+ case v if v != null => v.cast[T](config.classType)
case _ => throw new IllegalArgumentException(s"config key has not been registered: $key")
}
case conf: InternalOption => conf.defaultValue.asInstanceOf[T]
@@ -175,24 +174,3 @@ object InternalConfigHolder extends Logger {
}
}
-
-object Converter {
-
- def convert[T](v: String, classType: Class[_]): T = {
- classType match {
- case c if c == classOf[Int] => v.toInt.asInstanceOf[T]
- case c if c == classOf[Long] => v.toLong.asInstanceOf[T]
- case c if c == classOf[Boolean] => v.toBoolean.asInstanceOf[T]
- case c if c == classOf[Float] => v.toFloat.asInstanceOf[T]
- case c if c == classOf[Double] => v.toDouble.asInstanceOf[T]
- case c if c == classOf[String] => v.asInstanceOf[T]
- case c if c == classOf[JavaInt] => JavaInt.valueOf(v).asInstanceOf[T]
- case c if c == classOf[JavaLong] => JavaLong.valueOf(v).asInstanceOf[T]
- case c if c == classOf[JavaBool] => JavaBool.valueOf(v).asInstanceOf[T]
- case c if c == classOf[JavaFloat] => JavaFloat.valueOf(v).asInstanceOf[T]
- case c if c == classOf[JavaDouble] => JavaDouble.valueOf(v).asInstanceOf[T]
- case _ =>
- throw new IllegalArgumentException(s"Unsupported type: $classType")
- }
- }
-}
diff --git a/streampark-common/src/main/scala/org/apache/streampark/common/conf/Workspace.scala b/streampark-common/src/main/scala/org/apache/streampark/common/conf/Workspace.scala
index 40a1009fb..57e7afc47 100644
--- a/streampark-common/src/main/scala/org/apache/streampark/common/conf/Workspace.scala
+++ b/streampark-common/src/main/scala/org/apache/streampark/common/conf/Workspace.scala
@@ -17,8 +17,8 @@
package org.apache.streampark.common.conf
import java.net.URI
-
import org.apache.streampark.common.enums.StorageType
+import org.apache.streampark.common.util.Utils.StringCasts
import org.apache.streampark.common.util.{HdfsUtils, SystemPropertyUtils}
object Workspace {
@@ -72,8 +72,8 @@ case class Workspace(storageType: StorageType) {
(s, v) match {
case (null, null) => d
case (null, b) => b
- case (a, null) => Converter.convert(a, option.classType).asInstanceOf[T]
- case (a, b) => if (b == d) Converter.convert(a, option.classType).asInstanceOf[T] else b
+ case (a, null) => a.cast[T](option.classType)
+ case (a, b) => if (b == d) a.cast[T](option.classType) else b
}
}
diff --git a/streampark-common/src/main/scala/org/apache/streampark/common/util/Utils.scala b/streampark-common/src/main/scala/org/apache/streampark/common/util/Utils.scala
index 1737c48ec..c1d3cf97c 100644
--- a/streampark-common/src/main/scala/org/apache/streampark/common/util/Utils.scala
+++ b/streampark-common/src/main/scala/org/apache/streampark/common/util/Utils.scala
@@ -16,7 +16,23 @@
*/
package org.apache.streampark.common.util
-import java.io.{BufferedInputStream, File, FileInputStream, IOException, PrintWriter, StringWriter}
+import java.io.{
+ BufferedInputStream,
+ File,
+ FileInputStream,
+ IOException,
+ PrintWriter,
+ StringWriter
+}
+import java.lang.{
+ Boolean => JavaBool,
+ Double => JavaDouble,
+ Float => JavaFloat,
+ Integer => JavaInt,
+ Long => JavaLong,
+ Short => JavaShort,
+ Byte => JavaByte
+}
import java.net.URL
import java.util.{Properties, UUID, jar, Collection => JavaCollection, Map => JavaMap}
import java.util.jar.{JarFile, JarInputStream}
@@ -164,4 +180,30 @@ object Utils {
}
}
+ implicit class StringCasts(v: String) {
+ def cast[T](classType: Class[_]): T = {
+ Utils.required(classType.isPrimitive, "target class must be a primitive type")
+ classType match {
+ case c if c == classOf[String] => v.asInstanceOf[T]
+ case c if c == classOf[Byte] => v.toByte.asInstanceOf[T]
+ case c if c == classOf[Int] => v.toInt.asInstanceOf[T]
+ case c if c == classOf[Long] => v.toLong.asInstanceOf[T]
+ case c if c == classOf[Float] => v.toFloat.asInstanceOf[T]
+ case c if c == classOf[Double] => v.toDouble.asInstanceOf[T]
+ case c if c == classOf[Short] => v.toShort.asInstanceOf[T]
+ case c if c == classOf[Boolean] => v.toBoolean.asInstanceOf[T]
+ case c if c == classOf[String] => v.asInstanceOf[T]
+ case c if c == classOf[JavaByte] => v.toByte.asInstanceOf[T]
+ case c if c == classOf[JavaInt] => JavaInt.valueOf(v).asInstanceOf[T]
+ case c if c == classOf[JavaLong] => JavaLong.valueOf(v).asInstanceOf[T]
+ case c if c == classOf[JavaFloat] => JavaFloat.valueOf(v).asInstanceOf[T]
+ case c if c == classOf[JavaDouble] => JavaDouble.valueOf(v).asInstanceOf[T]
+ case c if c == classOf[JavaShort] => JavaShort.valueOf(v).asInstanceOf[T]
+ case c if c == classOf[JavaBool] => JavaBool.valueOf(v).asInstanceOf[T]
+ case _ =>
+ throw new IllegalArgumentException(s"Unsupported type: $classType")
+ }
+ }
+ }
+
}