Play Scala 2.2 + swagger 1.3.3 とかだと以下で対処できるようですが、タイトルの組み合わせではこのやり方は使えなかったので、試行錯誤の結果を残しておきます。
java - Swagger is showing _ebean_intercept with everymodel in my play application - Stack Overflow
import com.wordnik.swagger.converter.SwaggerSchemaConverter class IgnoreConverter extends SwaggerSchemaConverter{ override def skippedClasses: Set[String] = Set("com.avaje.ebean.bean.EntityBeanIntercept") override def ignoredClasses: Set[String] = Set("com.avaje.ebean.bean.EntityBeanIntercept") override def ignoredPackages: Set[String] = Set("com.avaje.ebean") }
public class Global extends GlobalSettings { @Override public void beforeStart(Application app) { Logger.info("Registering custom converter"); ModelConverters.addConverter(new IgnoreConverter(), true); } }
変更点
Play 2.5
GlobalSettings - 2.5.x - Play Framework
GlobalSettings が非推奨になりました。各クラスのコンストラクタで設定しましょう。
Swagger 1.5
Overriding Models · swagger-api/swagger-core Wiki
公式ドキュメントは現時点 (2017-04-10) で 1.3 系のままなので、テストクラスを参考にしてくれとのことみたいです。
How do you override models with swagger-core 1.5.3? · Issue #1499 · swagger-api/swagger-core
実装
public class IgnoreConverter implements ModelConverter { @Override public Property resolveProperty(Type type, ModelConverterContext context, Annotation[] annotations, Iterator<ModelConverter> chain) { JavaType _type = Json.mapper().constructType(type); if (_type != null) { Class<?> cls = _type.getRawClass(); // Ebean class (_ebean_intercept) if (EntityBeanIntercept.class.isAssignableFrom(cls)) { return null; } } if (chain.hasNext()) { return chain.next().resolveProperty(type, context, annotations, chain); } else { return null; } } @Override public Model resolve(Type type, ModelConverterContext context, Iterator<ModelConverter> chain) { if (chain.hasNext()) { return chain.next().resolve(type, context, chain); } else { return null; } } }
@Api public class HomeController extends Controller { @Inject public HomeController(MessagesApi messagesApi) { ModelConverters.getInstance().addConverter(new IgnoreConverter()); } public Result index() { return ok("Hello, World!"); } }