类 YamlProcessor

java.lang.Object
cn.taketoday.core.YamlProcessor

public class YamlProcessor extends Object
Base class for YAML factories.

Requires SnakeYAML 2.0 or higher

从以下版本开始:
4.0
作者:
Dave Syer, Juergen Hoeller, Sam Brannen, Brian Clozel, TODAY 2021/9/30 23:33
  • 字段详细资料

  • 构造器详细资料

    • YamlProcessor

      public YamlProcessor()
  • 方法详细资料

    • setDocumentMatchers

      public void setDocumentMatchers(YamlProcessor.DocumentMatcher... matchers)
      A map of document matchers allowing callers to selectively use only some of the documents in a YAML resource. In YAML documents are separated by --- lines, and each document is converted to properties before the match is made. E.g.
       environment: dev
       url: https://dev.bar.com
       name: Developer Setup
       ---
       environment: prod
       url:https://foo.bar.com
       name: My Cool App
       
      when mapped with
       setDocumentMatchers(properties ->
           ("prod".equals(properties.getProperty("environment")) ? MatchStatus.FOUND : MatchStatus.NOT_FOUND));
       
      would end up as
       environment=prod
       url=https://foo.bar.com
       name=My Cool App
       
    • setMatchDefault

      public void setMatchDefault(boolean matchDefault)
      Flag indicating that a document for which all the document matchers abstain will nevertheless match. Default is true.
    • setResolutionMethod

      public void setResolutionMethod(YamlProcessor.ResolutionMethod resolutionMethod)
      Method to use for resolving resources. Each resource will be converted to a Map, so this property is used to decide which map entries to keep in the final output from this factory. Default is YamlProcessor.ResolutionMethod.OVERRIDE.
    • setResources

      public void setResources(Resource... resources)
      Set locations of YAML resources to be loaded.
      另请参阅:
    • setSupportedTypes

      public void setSupportedTypes(Class<?>... supportedTypes)
      Set the supported types that can be loaded from YAML documents.

      If no supported types are configured, only Java standard classes (as defined in SafeConstructor) encountered in YAML documents will be supported. If an unsupported type is encountered, an IllegalStateException will be thrown when the corresponding YAML node is processed.

      参数:
      supportedTypes - the supported types, or an empty array to clear the supported types
      另请参阅:
    • process

      protected void process(YamlProcessor.MatchCallback callback)
      Provide an opportunity for subclasses to process the Yaml parsed from the supplied resources. Each resource is parsed in turn and the documents inside checked against the matchers. If a document matches it is passed into the callback, along with its representation as Properties. Depending on the setResolutionMethod(ResolutionMethod) not all of the documents will be parsed.
      参数:
      callback - a callback to delegate to once matching documents are found
      另请参阅:
    • createYaml

      protected org.yaml.snakeyaml.Yaml createYaml()
      Create the Yaml instance to use.

      The default implementation sets the "allowDuplicateKeys" flag to false, enabling built-in duplicate key handling in SnakeYAML 1.18+.

      If custom supported types have been configured, the default implementation creates a Yaml instance that filters out unsupported types encountered in YAML documents. If an unsupported type is encountered, an IllegalStateException will be thrown when the node is processed.

      另请参阅:
      • LoaderOptions.setAllowDuplicateKeys(boolean)
    • process

      private boolean process(YamlProcessor.MatchCallback callback, org.yaml.snakeyaml.Yaml yaml, Resource resource)
    • handleProcessError

      private void handleProcessError(Resource resource, IOException ex)
    • asMap

      private Map<String,Object> asMap(Object object)
    • process

      private boolean process(Map<String,Object> map, YamlProcessor.MatchCallback callback)
    • getFlattenedMap

      protected final Map<String,Object> getFlattenedMap(Map<String,Object> source)
      Return a flattened version of the given map, recursively following any nested Map or Collection values. Entries from the resulting map retain the same order as the source. When called with the Map from a YamlProcessor.MatchCallback the result will contain the same values as the YamlProcessor.MatchCallback Properties.
      参数:
      source - the source map
      返回:
      a flattened map
    • buildFlattenedMap

      private void buildFlattenedMap(Map<String,Object> result, Map<String,Object> source, @Nullable String path)
    • merge

      protected void merge(Map<String,Object> output, Map<String,Object> map)