Заставить объект CodeModel реализовать / наследовать родительский объект до того, как он будет сохранен как фактический класс на диске - PullRequest
1 голос
/ 25 мая 2019

Мне нужно добавить реализацию интерфейса к заполненному объекту 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);
...