sangria-graphql/sangria

Support Java enumerations

Aperta

#262 aperta il 7 lug 2017

 (2 commenti) (0 reazioni) (0 assegnatari)Scala (219 fork)batch import
derive-macroshelp wantedimprovement

Metriche repository

Star
 (1961 stelle)
Metriche merge PR
 (Merge medio 8g 15h) (4 PR mergiate in 30 g)

Descrizione

It would be cool if they were supported out of the box. Otherwise you could easily add something like this

  /**
    * To be used similar to sangria derivation macros (though this is not a macro), e.g.
    *
    * // Java
    * public enum JavaEnum { A, B }
    *
    * // Scala
    * val GJavaEnum = deriveEnumTypeFromJavaEnumeration[JavaEnum]()
    */
  def deriveEnumTypeFromJavaEnumeration[A](name: String = null)(implicit ev: ClassTag[A]): EnumType[A] = {
    val javaEnumClass = ev.runtimeClass.asInstanceOf[Class[A]]
    EnumType(if(name == null) javaEnumClass.getSimpleName else name,
      values = javaEnumClass.getEnumConstants.map(value => EnumValue(value.toString, value = value)).toList)
  }

Guida contributor