[ 
https://issues.apache.org/jira/browse/FLINK-8538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16376692#comment-16376692
 ] 

ASF GitHub Bot commented on FLINK-8538:
---------------------------------------

Github user twalthr commented on a diff in the pull request:

    https://github.com/apache/flink/pull/5564#discussion_r170561781
  
    --- 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]] = {
    --- End diff --
    
    We need to provide the superclass to validate what we just deserialized 
otherwise it would lead to class cast exception.


> Add a Kafka table source factory with JSON format support
> ---------------------------------------------------------
>
>                 Key: FLINK-8538
>                 URL: https://issues.apache.org/jira/browse/FLINK-8538
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table API & SQL
>            Reporter: Timo Walther
>            Assignee: Xingcan Cui
>            Priority: Major
>
> Similar to CSVTableSourceFactory a Kafka table source factory for JSON should 
> be added. This issue includes improving the existing JSON descriptor with 
> validation that can be used for other connectors as well. It is up for 
> discussion if we want to split the KafkaJsonTableSource into connector and 
> format such that we can reuse the format for other table sources as well.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to