Мне нужно добавить реализацию интерфейса к заполненному объекту JCodeModel
, прежде чем сохранять его в файл .java
, используя codeModel.build("FilePath");
.Я использую библиотеку jsonschema2pojo для создания JCodeModel
объекта.
Код такой:
JCodeModel codeModel = new JCodeModel();
GenerationConfig config = new DefaultGenerationConfig() {
@Override
public SourceType getSourceType() {
return SourceType.JSON;
}
};
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
mapper.generate(codeModel, action, packageName, apiResultAsString);
codeModel.build(new File("src").getAbsoluteFile());
JCodeModel
имеет возможность реализовать интерфейс вкласс (_implements()
), но я не могу использовать его в приведенном выше коде (см. комментарии ниже в коде):
// _implements() works on a JDefinedClass,
// To get JDefinedClass we need to run _getClass() on a generated codeModel (after mapper.generate() ),
// But What should be provided as a fully qualiflied class name for the argumanet of _getClass(),
// where or .java file isn't built yet, so the class file.
codeModel._getClass("com.foo.Bar")._implements(JsonResponseObject.class);