Class PropertyTree
java.lang.Object
com.inductiveautomation.perspective.gateway.property.PropertyTree
This class represents a tree structure of properties. Based on the JSON format, the structure is built up of nodes that are:
- Name/Value pairs, where the name is a string and the value is another node in the tree
- Ordered list of nodes, where each node has an index starting with zero (an array)
- A primitive value, which may be null, string, or number.
Each node in the tree also contains quality and timestamp information. Therefore, any node may be read as a
QualifiedValue.
Any element contained within this structure is represented by a path. The format of the path is identical to the
javascript expression you would use to reference the element. For example, you could reference a root property with
"foo", a sub-property with "foo.bar", an indexed property with "foo.bar[5]"
and a property whose name is not a legal javascript identifier with "foo['sub property here']
This tree is observable in two ways:
-
Interested parties may register a listener for a specific path using
subscribe(String, Set, Consumer, boolean). Whenever the value at that path has changed, the listener will receive aPropertyTreeChangeEventwhich contains theOriginand aSupplierof the new value as aQualifiedValue. -
One may also listen to all changes made to the property collection using
subscribeAll(Consumer). This listener will be notified of any changes.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic interface -
Constructor Summary
ConstructorsConstructorDescriptionPropertyTree(com.inductiveautomation.ignition.common.gson.JsonObject json, ExecutionQueue queue) PropertyTree(com.inductiveautomation.ignition.common.gson.JsonObject json, ExecutionQueue queue, PropertyTreePermissionModel permissionModel) -
Method Summary
Modifier and TypeMethodDescriptiongetQueue()booleanhasProperty(String path) static booleanisQualifiedValueArray(Object object) static booleanisQualifiedValueMap(Object object) voidmerge(com.inductiveautomation.ignition.common.gson.JsonObject tree) Merges the given tree's values and structure with this tree.voidmerge(com.inductiveautomation.ignition.common.gson.JsonObject tree, boolean prune, boolean fireChange) Merge, with options.static com.inductiveautomation.ignition.common.gson.JsonObjectnewDollarQualifiedObject(String type, QualityCode quality, long timestamp) voidvoidreset(com.inductiveautomation.ignition.common.gson.JsonObject tree) Subscribes to a specific path in the tree.subscribe(JsonPath path, Set<Origin> acceptableOrigins, Consumer<PropertyTreeChangeEvent> consumer, boolean coalesce) Subscribes to a specific path in the tree.subscribe(String pathString, Set<Origin> acceptableOrigins, Consumer<PropertyTreeChangeEvent> consumer) Subscribes to a specific path in the tree.subscribe(String pathString, Set<Origin> acceptableOrigins, Consumer<PropertyTreeChangeEvent> consumer, boolean coalesce) Subscribes to a specific path in the tree.voidsubscribeAll(Consumer<PropertyTreeChangeEvent> listener) com.inductiveautomation.ignition.common.gson.JsonObjecttoJson()Creates a JSON representation of the values in this property tree, encoded in our $-qualified format.voidwrite(JsonPath path, QualifiedValue value, Origin origin, Object source) voidwrite(String pathString, com.inductiveautomation.ignition.common.gson.JsonElement element, Origin origin, Object source) voidwrite(String pathString, QualifiedValue value, Origin origin, Object source) voidwriteAll(com.inductiveautomation.ignition.common.gson.JsonObject writes, Origin origin, Object source) Performs multiple writes into this property tree
-
Constructor Details
-
PropertyTree
public PropertyTree(@Nonnull com.inductiveautomation.ignition.common.gson.JsonObject json, @Nonnull ExecutionQueue queue) -
PropertyTree
public PropertyTree(@Nonnull com.inductiveautomation.ignition.common.gson.JsonObject json, @Nonnull ExecutionQueue queue, @Nonnull PropertyTreePermissionModel permissionModel)
-
-
Method Details
-
subscribe
public PropertyTree.Subscription subscribe(String pathString, Set<Origin> acceptableOrigins, Consumer<PropertyTreeChangeEvent> consumer, boolean coalesce) Subscribes to a specific path in the tree. The provided consumer will be called with aPropertyTreeChangeEventwhich contains aSupplierthat can fetch theQualifiedValuewhen it changes.- Parameters:
pathString- The path to the property to subscribe toacceptableOrigins- Set of origins that this listener is interested inconsumer- The listener that will be called when a change that affects the given path occurscoalesce- If true, the listener will be invoked only once for operations that may have generated multiple changes the listener is interested in.- Returns:
- Object that contains unsubscribe() method to remove this listener
-
subscribe
public PropertyTree.Subscription subscribe(String pathString, Set<Origin> acceptableOrigins, Consumer<PropertyTreeChangeEvent> consumer) Subscribes to a specific path in the tree. The provided consumer will be called with aPropertyTreeChangeEventwhich contains aSupplierthat can fetch theQualifiedValuewhen it changes.- Parameters:
pathString- The path to the property to subscribe toacceptableOrigins- Set of origins that this listener is interested inconsumer- The listener that will be called when a change that affects the given path occurs- Returns:
- Object that contains unsubscribe() method to remove this listener
-
subscribe
public PropertyTree.Subscription subscribe(JsonPath path, Set<Origin> acceptableOrigins, Consumer<PropertyTreeChangeEvent> consumer, boolean coalesce) Subscribes to a specific path in the tree. The provided consumer will be called with aPropertyTreeChangeEventwhich contains aSupplierthat can fetch theQualifiedValuewhen it changes.- Parameters:
path- TheJsonPathto the property to subscribe toacceptableOrigins- Set of origins that this listener is interested inconsumer- The listener that will be called when a change that affects the given path occurscoalesce- If true, the listener will be invoked only once for operations that may have generated multiple changes the listener is interested in.- Returns:
- Object that contains unsubscribe() method to remove this listener
-
subscribe
public PropertyTree.Subscription subscribe(JsonPath path, Set<Origin> acceptableOrigins, Consumer<PropertyTreeChangeEvent> consumer) Subscribes to a specific path in the tree. The provided consumer will be called with aPropertyTreeChangeEventwhich contains aSupplierthat can fetch theQualifiedValuewhen it changes.- Parameters:
path- TheJsonPathto the property to subscribe toacceptableOrigins- Set of origins that this listener is interested inconsumer- The listener that will be called when a change that affects the given path occurs- Returns:
- Object that contains unsubscribe() method to remove this listener
-
subscribeAll
-
merge
public void merge(com.inductiveautomation.ignition.common.gson.JsonObject tree) Merges the given tree's values and structure with this tree. New structure and values from the given tree may be added to this one. No changes fired. -
merge
public void merge(com.inductiveautomation.ignition.common.gson.JsonObject tree, boolean prune, boolean fireChange) Merge, with options.- Parameters:
prune- If true, existing nodes that aren't in the new merge tree will be removedfireChange- If true, the change listeners will be notified of the changes due to the merge.
-
reset
public void reset(com.inductiveautomation.ignition.common.gson.JsonObject tree) -
getQueue
-
read
-
read
-
writeAll
public void writeAll(com.inductiveautomation.ignition.common.gson.JsonObject writes, Origin origin, Object source) Performs multiple writes into this property tree- Parameters:
writes- An object containing paths of properties to write to and the values to write to themorigin- where the write came from
-
write
-
write
-
write
-
remove
-
hasProperty
- Parameters:
path- Path to look for - should be parseable byJsonPath.parse(java.lang.String)- Returns:
- true if there is a property for the given path
-
getRootKeys
-
toJson
public com.inductiveautomation.ignition.common.gson.JsonObject toJson()Creates a JSON representation of the values in this property tree, encoded in our $-qualified format. Will not include properties marked as access=PRIVATE -
newDollarQualifiedObject
public static com.inductiveautomation.ignition.common.gson.JsonObject newDollarQualifiedObject(String type, QualityCode quality, long timestamp) -
isQualifiedValueMap
-
isQualifiedValueArray
-