Class AbstractBindingHarness

java.lang.Object
com.inductiveautomation.perspective.gateway.model.AbstractBindingHarness
All Implemented Interfaces:
AuditingContext, BindingContext, LoggingContext
Direct Known Subclasses:
ElementBindingHarness

public abstract class AbstractBindingHarness extends Object implements BindingContext
Wraps up the logic of creating bindings and transform chains, and linking up the values as they get created, eventually making their way back onto the target property.
  • Field Details

    • typeCode

      protected final String typeCode
    • binding

      protected final Binding binding
    • targetComponent

      protected final PerspectiveElement targetComponent
    • targetProperty

      protected final PropertyKey targetProperty
    • transforms

      @Nullable protected final Transform[] transforms
      List of transforms or null if no transforms (never empty)
    • shutdown

      protected boolean shutdown
  • Method Details

    • getTargetElement

      public PerspectiveElement getTargetElement()
      Specified by:
      getTargetElement in interface BindingContext
    • getLogger

      public LoggerEx getLogger()
      Specified by:
      getLogger in interface LoggingContext
    • getMdcParent

      @Nullable public LoggingContext getMdcParent()
      Specified by:
      getMdcParent in interface LoggingContext
    • mdcSetup

      public void mdcSetup()
      Description copied from interface: LoggingContext
      Set up the MDC keys for this context
      Specified by:
      mdcSetup in interface LoggingContext
    • mdcTeardown

      public void mdcTeardown()
      Description copied from interface: LoggingContext
      Tear down the MDC keys that are added in #mdcSetup
      Specified by:
      mdcTeardown in interface LoggingContext
    • getTargetProperty

      public PropertyKey getTargetProperty()
      Specified by:
      getTargetProperty in interface BindingContext
    • resolveReferences

      public Collection<PropertyReference> resolveReferences()
    • startup

      public void startup()
      Must be called on-queue
    • subscribeToTarget

      @Nullable protected abstract Runnable subscribeToTarget(Consumer<PropertyTreeChangeEvent> callback)
      Attempt to subscribe to the target property.
      Parameters:
      callback - When the target property changes, call this consumer and give it a way to fetch the new value
      Returns:
      A runnable which when called will tear down the subscription. May be null if the subscription wasn't able to be established.
    • shutdown

      public void shutdown()
      Must be called on-queue
    • publish

      public void publish(QualifiedValue value, boolean pending)
      Description copied from interface: BindingContext
      Called from the binding when it has a value to push onto the target property ( or through its transforms )
      Specified by:
      publish in interface BindingContext
      pending - true if this value is temporary and will be replaced (within a reasonable span of time) with a new value
    • processPublishedValue

      public void processPublishedValue()
      Description copied from interface: BindingContext
      Takes the most recently published value from the binding and runs it through the transforms or delivers it to the target if there are no transforms.
      Specified by:
      processPublishedValue in interface BindingContext
    • getLastValue

      public QualifiedValue getLastValue()
      Specified by:
      getLastValue in interface BindingContext
    • refresh

      public void refresh()
    • onBindingProducedValue

      protected void onBindingProducedValue(long sequence, QualifiedValue value)
    • onTransformProducedValue

      protected void onTransformProducedValue(int transformIndex, long sequence, QualifiedValue transformedValue)
    • writeToTarget

      protected abstract void writeToTarget(QualifiedValue value)
      Write the given value to the target property.
    • getInitialValueFuture

      public CompletableFuture<QualifiedValue> getInitialValueFuture()
    • getAuditSnapshot

      @Nonnull public AuditContext.Builder getAuditSnapshot()
      Specified by:
      getAuditSnapshot in interface AuditingContext
      Returns:
      A new, or extended, AuditContext.Builder, with qualified information about the current scope.