java 22位_Java Configuration.VERSION_2_3_22属性代码示例

这段代码展示了如何使用Java的Configuration类处理版本2.3.22的配置,并结合FreeMarker模板(binding.ftl)生成源文件。它处理IntentBinding对象,设置默认编码为UTF-8,并在出现错误时重新抛出异常。同时,如果存在SimpleModel对象,会进行相应的属性绑定和模型类型渲染。
摘要由CSDN通过智能技术生成

void renderModelBindings() throws Exception {

if (bindings.size() == 0 && allModels.size() == 0)

return;

Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);

cfg.setDefaultEncoding("UTF-8");

cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

cfg.setClassLoaderForTemplateLoading(getClass().getClassLoader(), "/");

Template bindingTemplate = cfg.getTemplate("templates/java/binding.ftl");

for (IntentBinding binding : bindings) {

String name = (binding.getPackageName() != null ? binding.getPackageName() + "." : "")

+ binding.getName() + "Binding";

JavaFileObject file = this.processingEnv.getFiler()

.createSourceFile(name, binding.getElement());

Writer writer = file.openWriter();

try {

Map model = new HashMap<>();

model.put("binding", binding);

model.put("cyto", "true".equals(processingEnv.getOptions().get(UI)));

bindingTemplate.process(model, writer);

writer.flush();

} catch (TemplateException err) {

throw new IOException(err);

}

writer.close();

}

if (allModels.size() > 0) {

Element[] elements = new Element[allModels.size()];

int ix = 0;

for (SimpleModel simpleModel : allModels.values()) {

elements[ix++] = simpleModel.getElement();

if (simpleModel instanceof ArrayModel) {

ArrayModel arrayModel = (ArrayModel) simpleModel;

if (arrayModel.getModel() == null)

((ArrayModel) simpleModel).setModel(allModels.get(arrayModel.getModelId()));

continue;

}

if (simpleModel.getParentId() != null && simpleModel.getParent() == null) {

simpleModel.setParent(allModels.get(simpleModel.getParentId()));

simpleModel.getProperties().addAll(simpleModel.getParent().getProperties());

}

for (Property property : simpleModel.getProperties()) {

if (property.getModelId() != null) {

property.setModel(allModels.get(property.getModelId()));

if (property.getModel() == null)

throw new Exception("Model (" + property.getModelId() + ") not found");

}

}

}

String modelTypes = processingEnv.getOptions().get(MODEL_TYPES);

if (modelTypes != null) {

for (String modelType : modelTypes.split(",")) {

String packageName = processingEnv.getOptions().get(DEFAULT_PACKAGE);

if (packageName == null)

packageName = "nuclei.data";

Context context = new Context(allModels.values(), packageName, null);

context.render(cfg, modelType, processingEnv.getFiler());

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值