java.lang.Object
org.sentrysoftware.metricshub.engine.connector.parser.AbstractNodeProcessor
org.sentrysoftware.metricshub.engine.connector.parser.ExtendsProcessor

public class ExtendsProcessor extends AbstractNodeProcessor
Represents a processor that merges extended connectors specified under the 'extends' section of the given JSON node. This processor recursively merges extended connectors, applying the merging logic for arrays and objects. The merged result is then passed to the next processor in the chain.
  • Constructor Summary

    Constructors
    Constructor
    Description
    ExtendsProcessor(@NonNull Path connectorDirectory, @NonNull com.fasterxml.jackson.databind.ObjectMapper mapper, AbstractNodeProcessor next)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static com.fasterxml.jackson.databind.JsonNode
    merge(com.fasterxml.jackson.databind.JsonNode mainNode, com.fasterxml.jackson.databind.JsonNode updateNode)
    Merge the given mainNode and updateNode.
    com.fasterxml.jackson.databind.JsonNode
    processNode(com.fasterxml.jackson.databind.JsonNode node)
     

    Methods inherited from class org.sentrysoftware.metricshub.engine.connector.parser.AbstractNodeProcessor

    process

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ExtendsProcessor

      public ExtendsProcessor(@NonNull @NonNull Path connectorDirectory, @NonNull @NonNull com.fasterxml.jackson.databind.ObjectMapper mapper, AbstractNodeProcessor next)
  • Method Details

    • processNode

      public com.fasterxml.jackson.databind.JsonNode processNode(com.fasterxml.jackson.databind.JsonNode node) throws IOException
      Throws:
      IOException
    • merge

      public static com.fasterxml.jackson.databind.JsonNode merge(com.fasterxml.jackson.databind.JsonNode mainNode, com.fasterxml.jackson.databind.JsonNode updateNode)
      Merge the given mainNode and updateNode. Merge strategy:
      1. Arrays of objects are appended from updateNode to mainNode.
      2. Arrays of simple values from updateNode erase the ones in mainNode.
      3. updateNode object values overwrite mainNode object values.
      Parameters:
      mainNode - The main JSON node to merge into.
      updateNode - The update JSON node to merge.
      Returns:
      The merged JSON node.