下面列出了怎么用org.jsonschema2pojo.Jackson2Annotator的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Generates a Java Bean class for the given bean info. The bean info should
* have a name, package, and JSON Schema. This information will be used to
* generate a POJO.
* @param bean
* @param info
* @param codeWriter
* @throws IOException
*/
private void generateJavaBean(CodegenJavaBean bean, CodegenInfo info, IndexedCodeWriter codeWriter) throws IOException {
JCodeModel codeModel = new JCodeModel();
GenerationConfig config = new DefaultGenerationConfig() {
@Override
public boolean isUsePrimitives() {
return false;
}
@Override
public boolean isIncludeHashcodeAndEquals() {
return false;
}
@Override
public boolean isIncludeAdditionalProperties() {
return false;
}
@Override
public boolean isIncludeToString() {
return false;
}
};
SchemaMapper schemaMapper = new SchemaMapper(
new JaxRsRuleFactory(config, new Jackson2Annotator(config), new SchemaStore() {
@Override
public Schema create(Schema parent, String path, String refFragmentPathDelimiters) {
String beanClassname = schemaRefToFQCN(path);
for (CodegenJavaBean cgBean : info.getBeans()) {
String cgBeanFQCN = cgBean.getPackage() + "." + StringUtils.capitalize(cgBean.getName());
if (beanClassname.equals(cgBeanFQCN)) {
Schema schema = new Schema(classnameToUri(beanClassname), cgBean.get$schema(), null);
JType jclass = codeModel._getClass(beanClassname);
if (jclass == null) {
jclass = codeModel.directClass(beanClassname);
}
schema.setJavaType(jclass);
return schema;
}
}
System.out.println("!!!!! :: " + beanClassname);
// TODO if we get here, we probably want to return an empty schema
return super.create(parent, path, refFragmentPathDelimiters);
}
}),
new SchemaGenerator());
String source = mapper.writeValueAsString(bean.get$schema());
schemaMapper.generate(codeModel, bean.getName(), bean.getPackage(), source);
codeModel.build(codeWriter);
}