Interface DSContainer
- All Superinterfaces:
DSData,DSPacket,DSSerializable,Iterable<DSField>
DSData to provide helper methods for sending Container objects. The Container object maintains a
list of links to other objects (e.g. a Record) . These linked objects can be added to the end of the Container or
inserted at a specific position as required. Objects can also be removed from the container either individually by
name or by specifying a prefix that matches multiple objects.
DSContainer does not represent a container as such, rather it is a message containing
information about changes to be made to a container. Thus an instance of DSContainer can be used to
create new containers or to add, remove and insert objects into an existing container maintained in the cache of
another Caplin DataSource such as a Liberator or Transformer.
If the DSContainer message is sent with the DSData.F_IMAGE flag set, the cached container in
the receiving DataSource will be cleared and any objects added and inserted in this container update will replace
them. If multiple DataSources are contributing updates to the same container then it may be preferable to use the
cleardownObjectsWithPrefix(String) method instead of sending an image. Assuming the DataSources
are providing objects with different namespaces this will allow the DataSource to clear its own objects from the
container without affecting objects provided by other DataSources.
If the DSData.F_IMAGE flag is not set, the adds, removes and inserts specified in the
DSContainer will adjust the contents of the existing cached container accordingly.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intField used to identify that the object (identified by the field value) should be added to this container and a request should be made by the receiving DataSource for the object.static final intField used to identify that the object (identified by the field value) should be added to this container.static final intField used to identify that any objects that match the prefix provided as a field value should be removed from the container.static final intField used to identify that the object (identified by the field value) should be removed from this container.Fields inherited from interface com.caplin.datasource.interfaces.DSData
CONTAINER_TYPE, F_AUTH_UPDATE, F_AUTHGLOBAL, F_CHANGEDFIELDS, F_CLEAR_PERMISSIONS, F_CLEAR_TYPE2, F_CLEAR_TYPE3, F_CREATEOBJECT, F_CREATEPARENT, F_DELETE_PERMISSION, F_FILTER_TYPE2, F_FILTER_TYPE3, F_IMAGE, F_NONACTIVE, GENERIC_TYPE, NEWS_TYPE, PAGE_TYPE, PERMISSION_TYPE, RECORD_TYPE, STORY_TYPE, TYPE2_RECORD_TYPE, TYPE3_RECORD_TYPE, UNKNOWN_TYPE -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds an instruction to append an object to this container.voidDeprecated.voidcleardownObjectsWithPrefix(String prefix) Adds an instruction to remove all objects from the container that have an object name that matches the provided prefix.voidinsertObject(String objectName, int position) Adds an instruction to insert an object into this container, pushing any object currently at that position, and all objects at successive positions, up one place (to the next higher index position).voidremoveObject(String objectName) Adds an instruction to remove an object from this container.Methods inherited from interface com.caplin.datasource.interfaces.DSData
addBinaryData, addBinaryData, addBinaryData, addBinaryData, addBinaryData, addBinaryData, addBinaryData, addBinaryData, addData, addData, addData, addData, addData, addData, addData, addData, clearFields, count, elements, getFieldByFieldNumber, getFieldByFieldNumber, getFlags, getKeys, getSubject, getType, getValues, iterator, removeField, setFlags, setSubject, setType, updateData, updateDataMethods inherited from interface com.caplin.datasource.interfaces.DSPacket
send, sendDirect, sendToPeerMethods inherited from interface com.caplin.datasource.interfaces.DSSerializable
toBytesMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
ADD_OBJECT_FIELDNUM
static final int ADD_OBJECT_FIELDNUMField used to identify that the object (identified by the field value) should be added to this container.- See Also:
-
ADD_OBJECT_AND_REQUEST_FIELDNUM
static final int ADD_OBJECT_AND_REQUEST_FIELDNUMField used to identify that the object (identified by the field value) should be added to this container and a request should be made by the receiving DataSource for the object.- See Also:
-
REMOVE_OBJECT_FIELDNUM
static final int REMOVE_OBJECT_FIELDNUMField used to identify that the object (identified by the field value) should be removed from this container.- See Also:
-
CLEARDOWN_WITH_PREFIX_FIELDNUM
static final int CLEARDOWN_WITH_PREFIX_FIELDNUMField used to identify that any objects that match the prefix provided as a field value should be removed from the container.- See Also:
-
-
Method Details
-
addObject
Adds an instruction to append an object to this container.- Parameters:
objectName- the name of the object to be appended to this container (e.g. /OBJ1).
-
addObject
Deprecated.UseaddObject(String)instead.Adds an instruction to append an object to this container.- Parameters:
objectName- the name of the object to be appended to this container (e.g. /OBJ1).makeRequest- true if the receiving DataSource should make a request for this object, false if thisDataSourcewill automatically send the object without it needing to be requested.
-
removeObject
Adds an instruction to remove an object from this container.- Parameters:
objectName- the name of the object to be removed from this container (e.g. /OBJ1).
-
insertObject
Adds an instruction to insert an object into this container, pushing any object currently at that position, and all objects at successive positions, up one place (to the next higher index position).If
insertObjectis called more than once on the same DSContainer, the subsequent inserts are relative to the earlier ones. For example, assume a container has objectXat position9and objectYat position10. Now insert objectAat position5, followed by objectBat position10. The insertion of objectAmovesXto position10andYto position11. WhenBis subsequently inserted at position10, it goes immediately beforeX, not beforeY;Xmoves to position11andYmoves to position12.- Parameters:
objectName- the name of the object to be inserted into this container (e.g. /OBJ1).position- the position in the container where the object is to be inserted, where position0(zero) represents the position of the first object.- Throws:
IndexOutOfBoundsException- ifpositionis negative.
-
cleardownObjectsWithPrefix
Adds an instruction to remove all objects from the container that have an object name that matches the provided prefix.Instructions are processed in the order that they are added to the container and affect earlier instructions. For example, if in the same message you add object
/A/1, clear down based on the prefix/Aand add object/A/2then the processed container will only contain object/A/2because object/A/1will be cleared.- Parameters:
prefix- The prefix to match object names against and remove from the container.
-
addObject(String)instead.