Как генерировать классы, используя jsonschema2pojo, которые включают в себя класс под названием «Система»? - PullRequest
1 голос
/ 11 апреля 2019

Я пытаюсь сгенерировать Java-классы из сторонней JSON-схемы, используя jsonschema2pojo , поэтому мне нужно использовать имена классов.Один из классов называется System.В результате для всех классов, кроме этого класса, в методе toString() имеется ошибка:

package com.example;

// within a class

@Override
public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append(Status.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
    ...
}

Проблема заключается в вызове System.identityHashCode(), поскольку класс System разрешен вбыть классом в одном пакете, а не классом java.lang.System.Вызов в генерируемом классе System выглядит следующим образом:

sb.append(System.class.getName()).append('@').append(Integer.toHexString(java.lang.System.identityHashCode(this))).append('[');

JSON может быть любым JSON вообще, то есть даже { "type": "object" } для 2 классов, один называется System, а другой - Foo вызовет ошибку.Я генерирую код, используя Java API, например:

String packageName = "com.example";
JCodeModel codeModel = new JCodeModel();
GenerationConfig config = new DefaultGenerationConfig() {
    @Override
    public boolean isGenerateBuilders() { // set config option by overriding method
        return true;
    }
};
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());

mapper.generate(codeModel, #NAME_OF_CLASS#, packageName, SOME_URL);
codeModel.build(outputDir);

Как я могу сгенерировать код таким образом, чтобы полностью квалифицированный класс java.lang.System использовался для всех классов?

1 Ответ

0 голосов
/ 11 апреля 2019

На самом деле, это была проблема с Intellij.Сгенерированные классы были правильными, я просто скопировал их из сгенерированного каталога в исходный каталог, и Intellij подумал, что это будет полезно и упростит класс как часть копии.В результате это фактически сломало сгенерированные классы.

...