public class UpdateImpl extends ConnectorAPIOperationRunner implements UpdateApiOp
NO_TIMEOUT
Constructor and Description |
---|
UpdateImpl(ConnectorOperationalContext context,
Connector connector)
Determines which type of update a connector supports and then uses that
handler.
|
Modifier and Type | Method and Description |
---|---|
Uid |
addAttributeValues(ObjectClass objclass,
Uid uid,
Set<Attribute> valuesToAdd,
OperationOptions options)
Update the object specified by the
ObjectClass and Uid ,
adding to the current values of each attribute the values provided. |
Set<Attribute> |
merge(Set<Attribute> updateAttrs,
Set<Attribute> baseAttrs,
boolean add)
Merges two connector objects into a single updated object.
|
Uid |
removeAttributeValues(ObjectClass objclass,
Uid uid,
Set<Attribute> valuesToRemove,
OperationOptions options)
Update the object specified by the
ObjectClass and Uid ,
removing from the current values of each attribute the values provided. |
Uid |
update(ObjectClass objectClass,
Uid uid,
Set<Attribute> replaceAttributes,
OperationOptions options)
Update the object specified by the
ObjectClass and Uid ,
replacing the current values of each attribute with the values provided. |
static void |
validateInput(ObjectClass objectClass,
Uid uid,
Set<Attribute> replaceAttributes,
boolean isDelta)
Makes things easier if you can trust the input.
|
getConnector, getNormalizer, getOperationalContext
public UpdateImpl(ConnectorOperationalContext context, Connector connector)
public Uid update(ObjectClass objectClass, Uid uid, Set<Attribute> replaceAttributes, OperationOptions options)
UpdateApiOp
ObjectClass
and Uid
,
replacing the current values of each attribute with the values provided.
For each input attribute, replace all of the current values of that attribute in the target object with the values of that attribute.
If the target object does not currently contain an attribute that the input set contains, then add this attribute (along with the provided values) to the target object.
If the value of an attribute in the input set is null
, then do
one of the following, depending on which is most appropriate for the
target:
null
.update
in interface UpdateApiOp
objectClass
- the type of object to modify. Must not be null.uid
- the uid of the object to modify. Must not be null.replaceAttributes
- set of new Attribute
. the values in this set represent
the new, merged values to be applied to the object. This set
may also include operational
attributes
. Must not be null.options
- additional options that impact the way this operation is run.
May be null.Uid
of the updated object in case the update changes
the formation of the unique identifier.public Uid addAttributeValues(ObjectClass objclass, Uid uid, Set<Attribute> valuesToAdd, OperationOptions options)
UpdateApiOp
ObjectClass
and Uid
,
adding to the current values of each attribute the values provided.
For each attribute that the input set contains, add to the current values of that attribute in the target object all of the values of that attribute in the input set.
NOTE that this does not specify how to handle duplicate values. The
general assumption for an attribute of a ConnectorObject
is that
the values for an attribute may contain duplicates. Therefore, in general
simply append the provided values to the current value for each
attribute.
IMPLEMENTATION NOTE: for connectors that merely implement
UpdateOp
and not UpdateAttributeValuesOp
this method will
be simulated by fetching, merging, and calling
UpdateOp.update(ObjectClass, Uid, Set, OperationOptions)
.
Therefore, connector implementations are encourage to implement
UpdateAttributeValuesOp
from a performance and atomicity
standpoint.
addAttributeValues
in interface UpdateApiOp
objclass
- the type of object to modify. Must not be null.uid
- the uid of the object to modify. Must not be null.valuesToAdd
- set of Attribute
deltas. The values for the attributes
in this set represent the values to add to attributes in the
object. merged. This set must not include
operational attributes
. Must not
be null.options
- additional options that impact the way this operation is run.
May be null.Uid
of the updated object in case the update changes
the formation of the unique identifier.public Uid removeAttributeValues(ObjectClass objclass, Uid uid, Set<Attribute> valuesToRemove, OperationOptions options)
UpdateApiOp
ObjectClass
and Uid
,
removing from the current values of each attribute the values provided.
For each attribute that the input set contains, remove from the current values of that attribute in the target object any value that matches one of the values of the attribute from the input set.
NOTE that this does not specify how to handle unmatched values. The
general assumption for an attribute of a ConnectorObject
is that
the values for an attribute are merely representational state.
Therefore, the implementer should simply ignore any provided value that
does not match a current value of that attribute in the target object.
Deleting an unmatched value should always succeed.
IMPLEMENTATION NOTE: for connectors that merely implement
UpdateOp
and not UpdateAttributeValuesOp
this method will
be simulated by fetching, merging, and calling
UpdateOp.update(ObjectClass, Uid, Set, OperationOptions)
.
Therefore, connector implementations are encourage to implement
UpdateAttributeValuesOp
from a performance and atomicity
standpoint.
removeAttributeValues
in interface UpdateApiOp
objclass
- the type of object to modify. Must not be null.uid
- the uid of the object to modify. Must not be null.valuesToRemove
- set of Attribute
deltas. The values for the attributes
in this set represent the values to remove from attributes in
the object. merged. This set must not include
operational attributes
. Must not
be null.options
- additional options that impact the way this operation is run.
May be null.Uid
of the updated object in case the update changes
the formation of the unique identifier.public Set<Attribute> merge(Set<Attribute> updateAttrs, Set<Attribute> baseAttrs, boolean add)
public static void validateInput(ObjectClass objectClass, Uid uid, Set<Attribute> replaceAttributes, boolean isDelta)
Copyright © 2022. All rights reserved.