sangria-graphql/sangria

Support Java enumerations

Open

#262 opened on Jul 7, 2017

View on GitHub
 (2 comments) (0 reactions) (0 assignees)Scala (1,961 stars) (219 forks)batch import
derive-macroshelp wantedimprovement

Description

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)
  }

Contributor guide