Github user fhueske commented on a diff in the pull request:
https://github.com/apache/flink/pull/5564#discussion_r170230962
--- Diff:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/descriptors/DescriptorProperties.scala
---
@@ -178,46 +244,128 @@ class DescriptorProperties(normalizeKeys: Boolean =
true) {
}
}
+ /**
+ * Adds an indexed mapping of properties under a common key.
+ *
+ * For example:
+ *
+ * schema.fields.0.type = INT, schema.fields.0.name = test
+ * schema.fields.1.name = test2
+ *
+ * The arity of the propertySets can differ.
+ *
+ * This method is intended for Java code.
+ */
+ def putIndexedVariableProperties(
+ key: String,
+ propertySets: JList[JMap[String, String]])
+ : Unit = {
+ checkNotNull(key)
+ checkNotNull(propertySets)
+ putIndexedVariableProperties(key,
propertySets.asScala.map(_.asScala.toMap))
+ }
+
//
----------------------------------------------------------------------------------------------
+ /**
+ * Returns a string value under the given key if it exists.
+ */
def getString(key: String): Option[String] = {
properties.get(key)
}
- def getCharacter(key: String): Option[Character] = getString(key) match {
- case Some(c) =>
- if (c.length != 1) {
- throw new ValidationException(s"The value of $key must only
contain one character.")
- }
- Some(c.charAt(0))
+ /**
+ * Returns a string value under the given key if it exists.
+ * This method is intended for Java code.
+ */
+ def getOptionalString(key: String): Optional[String] =
toJava(getString(key))
- case None => None
+ /**
+ * Returns a character value under the given key if it exists.
+ */
+ def getCharacter(key: String): Option[Character] = getString(key).map {
c =>
+ if (c.length != 1) {
+ throw new ValidationException(s"The value of $key must only contain
one character.")
+ }
+ c.charAt(0)
}
- def getBoolean(key: String): Option[Boolean] = getString(key) match {
- case Some(b) => Some(JBoolean.parseBoolean(b))
-
- case None => None
+ /**
+ * Returns a class value under the given key if it exists.
+ */
+ def getClass[T](key: String, superClass: Class[T]): Option[Class[T]] = {
+ properties.get(key).map { name =>
+ val clazz = try {
+ Class.forName(
+ name,
+ true,
+
Thread.currentThread().getContextClassLoader).asInstanceOf[Class[T]]
+ } catch {
+ case e: Exception =>
+ throw new ValidationException(s"Coult not get class for key
'$key'.", e)
--- End diff --
Add name of class?
---