org.stringtemplate.v4.STGroup.registerModelAdaptor()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(3.1k)|赞(0)|评价(0)|浏览(101)

本文整理了Java中org.stringtemplate.v4.STGroup.registerModelAdaptor()方法的一些代码示例,展示了STGroup.registerModelAdaptor()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。STGroup.registerModelAdaptor()方法的具体详情如下:
包路径:org.stringtemplate.v4.STGroup
类名称:STGroup
方法名:registerModelAdaptor

STGroup.registerModelAdaptor介绍

[英]Add an adaptor for a kind of object so ST knows how to pull properties from them. Add adaptors in increasing order of specificity. ST adds Object, Map, ST, and Aggregate model adaptors for you first. Adaptors you add have priority over default adaptors.

If an adaptor for type T already exists, it is replaced by the adaptor argument.

This must invalidate cache entries, so set your adaptors up before calling ST#render for efficiency.
[中]为一种对象添加适配器,让ST知道如何从中提取属性。按专一性的增加顺序添加适配器。ST首先为您添加对象、贴图、ST和聚合模型适配器。您添加的适配器优先于默认适配器。
如果类型T的适配器已经存在,它将被适配器参数替换。
这必须使缓存条目无效,因此在调用ST#render之前设置适配器以提高效率。

代码示例

代码示例来源:origin: io.protostuff/protostuff-generator

private void addPropertyExtensions(STGroup group, ExtensionProvider extensionProvider) {
  Map<Class<?>, PropertyProvider> extenderMap = extensionProvider.propertyProviders();
  for (Map.Entry<Class<?>, PropertyProvider> entry : extenderMap.entrySet()) {
    Class<?> objectClass = entry.getKey();
    PropertyProvider extender = entry.getValue();
    group.registerModelAdaptor(objectClass, new ObjectModelAdaptor() {
      @Override
      public synchronized Object getProperty(Interpreter interp, ST self, Object o, Object property, String propertyName) {
        if (extender.hasProperty(propertyName)) {
          return extender.getProperty(o, propertyName);
        }
        return super.getProperty(interp, self, o, property, propertyName);
      }
    });
  }
}

代码示例来源:origin: protostuff/protostuff-compiler

private void addPropertyExtensions(STGroup group, ExtensionProvider extensionProvider) {
  Map<Class<?>, PropertyProvider> extenderMap = extensionProvider.propertyProviders();
  for (Map.Entry<Class<?>, PropertyProvider> entry : extenderMap.entrySet()) {
    Class<?> objectClass = entry.getKey();
    PropertyProvider extender = entry.getValue();
    group.registerModelAdaptor(objectClass, new ObjectModelAdaptor() {
      @Override
      public synchronized Object getProperty(Interpreter interp, ST self, Object o, Object property, String propertyName) {
        if (extender.hasProperty(propertyName)) {
          return extender.getProperty(o, propertyName);
        }
        return super.getProperty(interp, self, o, property, propertyName);
      }
    });
  }
}

代码示例来源:origin: com.tunnelvisionlabs/runtime-testsuite

public void execute() {
  STGroup targetGroup = new STGroupFile(runtimeTemplates.getPath());
  targetGroup.registerModelAdaptor(STGroup.class, new STGroupModelAdaptor());
  targetGroup.registerRenderer(String.class, new StringRenderer(), true);
  targetGroup.defineDictionary("escape", new JavaEscapeStringMap());
  targetGroup.defineDictionary("lines", new LinesStringMap());
  targetGroup.defineDictionary("strlen", new StrlenStringMap());
  String rootFolder = "org/antlr/v4/test/runtime/templates";
  generateCodeForFoldersInIndex(targetGroup, rootFolder);
}

代码示例来源:origin: tunnelvisionlabs/antlr4cs

result.registerModelAdaptor(Map.class, new MapModelAdaptor() {
  @Override
  public Object getProperty(Interpreter interp, ST self, Object o, Object property, String propertyName) throws STNoSuchPropertyException {

相关文章

微信公众号

最新文章

更多