sangria-graphql/sangria

Support Java enumerations

开放

#262 创建于 2017年7月7日

 (2 条评论) (0 个反应) (0 位负责人)Scala (219 个派生)batch import
derive-macroshelp wantedimprovement

仓库指标

星标
 (1,961 个星标)
PR 合并指标
 (平均合并 8天 15小时) (30 天内合并 4 个 PR)

描述

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

贡献者指南