Uploaded image for project: 'Livy'
  1. Livy
  2. LIVY-654

Ability to validate string before creating state/kind of session/statement

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: In Progress
    • Minor
    • Resolution: Unresolved
    • None
    • 0.9.0
    • None
    • None

    Description

      Kind.scala, SessionState.scala and StatementState.java don't include a method for string validation. It might be very useful to verify if some string can be converted to an enum type.

       

      For example, to parse JSON string we need to write something like this (to prevent IllegalStateException):

       

      Try {
        value match {
        case JsString(state) => SessionState(state)
        case _ => throw MyException
        }
      } 
      match {
       case Success(state) => state
       case Failure(ex) => throw MyException
      }
      

      it can be simplified to:

      value match {
        case JsString(state) if SessionState.isValid(state) => SessionState(state)
        case _ => throw MyException
      }
      

       

      The second problem is StatementState.java enum use Pascal case instead of upper case
      https://github.com/apache/incubator-livy/blob/412ccc8fcf96854fedbe76af8e5a6fec2c542d25/rsc/src/main/java/org/apache/livy/rsc/driver/StatementState.java#L26

      For example, Waiting instead of WAITING. This isn't fit Java code style.

      In this case, we can't use StatementState.valueOf("waiting".toUpperCase()) as usually but

      StatementState.valueOf(state.toLowerCase().capitalize). Not sure if we can change it now.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              oshevchenko Oleksandr Shevchenko
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 10m
                  10m