sangria-graphql/sangria

Support Java enumerations

Open

#262 opened on Jul 7, 2017

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

Repository metrics

Stars
 (1,961 stars)
PR merge metrics
 (Avg merge 8d 15h) (4 merged PRs in 30d)

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