public static interface UpdateConstraint.Factory
An instance can be obtained by calling
Diffusion.updateConstraints()
.
Modifier and Type | Method and Description |
---|---|
UpdateConstraint.PartialJSON |
jsonValue()
Create a constraint that partially matches the current topic value.
|
UpdateConstraint |
locked(Session.SessionLock lock)
Create a constraint requiring a lock to be held by the session.
|
UpdateConstraint |
noTopic()
Create a constraint requiring the path to have no topic.
|
UpdateConstraint |
noValue()
Create a constraint requiring the topic to have no value.
|
default UpdateConstraint |
value(Object value)
Create a constraint requiring the current value of a topic to exactly
match the supplied value.
|
UpdateConstraint |
value(UpdateConstraint.Operator operator,
Object value)
Create a constraint comparing the current value of a topic to a
supplied value.
|
UpdateConstraint locked(Session.SessionLock lock)
This can be used to coordinate operations between multiple sessions.
lock
- the lockdefault UpdateConstraint value(Object value) throws IllegalArgumentException
This is exactly equivalent to calling
value(UpdateConstraint.Operator, Object)
specifying the
IS
operator.
value
- the valueIllegalArgumentException
- if the value type is not supportedUpdateConstraint value(UpdateConstraint.Operator operator, Object value)
If a String
value is supplied and the operator is
EQ
or
NE
, the string representation of
the topic will be compared to the supplied value. This can only be
used with primitive topic types (or TIME_SERIES
topics with a primitive event type). Other operators
(other than IS
) are not
permitted with String values.
If a number value is supplied (Integer
, Long
or
Double
) the value will be compared with the number value of
the topic. This will work with STRING
,
INT64
or DOUBLE
topics (or TIME_SERIES
topics with a
primitive event type) only. STRING
topics
can only be compared if they contain a value that can be parsed as a
number. If the value of a STRING
topic
cannot be parsed as a number, or the topic is of any other non-number
type the constraint will be unsatisfied. Any of the operators (other
than IS
) can be used with such
number comparisons. Decimal numbers can be compared with integral
numbers so 1
is equal to 1.0
, "1"
, or
"1.0"
.
If the IS
operator is specified
the specified value will be compared to the topic value for strict
binary equality. The value type can be any value type supported by
DataTypes
(Integer
is allowed and is treated as a
Long
) or any Bytes
value and can be used to compare
against any topic type.
When a STRING
, INT64
or DOUBLE
topic is updated to a null
value, the topic is set to have no value. Use the noValue()
constraint to check if the topic has no value.
This constraint is unsatisfied if no topic is present at the path.
operator
- the operator that determines the type of comparisonvalue
- the valueIllegalArgumentException
- if the the operator is not
compatible with the value type or the value type is not
supportedUpdateConstraint noValue()
This constraint is unsatisfied if no topic is present at the path.
UpdateConstraint noTopic()
This is useful when setting the first value of a topic being added
using addAndSet
without changing the
value if the topic already exists. This constraint is unsatisfied if
a topic is present at the path.
UpdateConstraint.PartialJSON jsonValue()
The topic must be a JSON
topic (or a
TIME_SERIES
topic with a json event
type). The UpdateConstraint.PartialJSON
partially describes the structure of a
JSON
value. The
with
or without
methods must be used to
fully qualify the constraint.
The constraint is unsatisfied if no topic is present at the path.
Copyright © 2024 DiffusionData Ltd. All Rights Reserved.