Packagemx.data
Classpublic class DataService
InheritanceDataService Inheritance Object
Implements IEventDispatcher
Subclasses DataService

The DataService class provides the top-level functionality for Data Management Service. The DataService provides synchronization, replication, and occasionally connected services.

A DataService is constructed specifying the desired destination. These destinations are configured from the services-config.xml file.

There are two different sets of methods that retrieve data from the specified remote destination. The first are for collection managed objects. The second are for Single Managed Objects or SMO.

For the collection managed objects the DataService.fill() method is used. This method populates an ArrayCollection with objects that this services will manage.

To get Single Managed Objects the DataService.getItem() and DataService.createItem() methods are used.

When a previously filled ArrayCollection is no longer needed, or the items within that collection should no longer receive or create updates, the DataService.releaseCollection() method is called.

When an item previously retrieved using DataService.getItem() or DataService.createItem() is no longer needed or should not receive or create updates, the DataService.releaseItem() method should be called. The DataService.createItem() and DataService.getItem() methods return an ItemReference. This object can be used to release a specific instance of a single managed object. Unlike the DataService.releaseItem() method, calling ItemReference.releaseItem() will release a specific instance of an SMO. DataService.releaseItem() will release the first SMO that it finds with a matching identity to that specified. This is normally okay as long as the number of calls to DataService.getItem() and DataService.createItem() matches the number of calls to DataService.releaseItem().

A connection to the remote destination is created automatically the first time any methods that require a connection are called. For example, calling the DataService.fill() method or DataService.commit() operation when there are uncommitted updates will attempt to establish a connection to the remote destination. To force a DataService to become disconnected use the DataService.disconnect() method. This method can be used to clean up remote destination resources when no longer needed. Because other services may be using the same physical connection calling DataService.disconnect() may terminate the connection.

The bindable property connected indicates the current state of the associated DataService connection.

If a remote destination has declared any security constraints for an operation, credentials must be provided. Credentials are set via the DataService.setCredentials() call. This turns into a login command at the remote destination. To change credentials or invalidate the current session DataService.logout() can be called. When called the DataService.logout() method will release all local managed data. It is equivalent to calling DataService.release().

Each DataService has a dataStore property that returns an object of type mx.data.DataStore. This object stores the uncommitted changes for one or more DataService objects. By default, a DataService shares the same DataService with other data services if they have managed association properties and share the same set of channels. When sharing DataStores, a commit() method call on one DataService commits changes for all DataService using the shared data store. This preserves the order of operations in the event there are dependencies between the changes in the associated DataService objects.

DataService and DataService dispatch result and fault events for all operations that require a remote call. NOTE: if you create two DataService instances that point to the same destination both of those instances will share the same collection of managed objects, and will dispatch the same set of events. For example, if you add an event listener to one DataService instance for a destination, and you use a different instance to initiate an operation, the first DataService instance will still receive those events. Each operation you initiate on a DataService returns an AsyncToken. You can add an event responder to that token to receive a result event specific for that operation. This approach often produces cleaner code than adding a result or fault event handler globally for a given destination.

Data binding can be used on properties of any managed instances for a DataService. DataService will also dispatch a "message" event when a remote operation occurs for any managed object. For example when a locally managed item is updated by a remote process a message will be pushed to all DataService instances that are still managing that item. This message is dispatched as a MessageEvent.MESSAGE event.

When a conflict is detected either at the remote destination in response to a change committed by the DataService, or due to a pushed change which conflicts with a local uncommitted change, a conflict event is dispatched. These events can be handled by listening for the DataConflictEvent.CONFLICT. Data binding can be employed to update UI controls by binding to the DataService.conflicts.resolved property.

DataService supports the following data synchronization configuration modes:

The DataService.revertChanges() method is used to revert changes for a specific item or for all items. When an error occurs for a remote destination operation, the committed changes are put back into the uncommitted queue so the data stays in sync with the remote destination data. If the changes are in error, typically a call to DataService.revertChanges() is made to undo the changes as part of a fault handler.

The mx.data.mxml.DataService class is an MXML-specific subclass of mx.data.DataService that allows binding to the properties of a DataService.

MXML SyntaxexpandedHide MXML Syntax

The <mx:DataService> tag accepts the following tag attributes:

  <mx:DataService
   Properties
   autoCommit="true"
   autoMerge="true"
   autoSaveCache="false"
   autoSyncEnabled="true"
   conflictDetector="No default."
   dataStore="No default."
   destination="No default."
   pageSize="No default."
   id="No default."
 
   Events
   conflict="No default."
   fault="No default."
   message="No default."
   propertyChange="No default."
   result="No default."
 />
 

See also

mx.data.mxml.DataService
mx.data.Conflicts
mx.data.Conflict
mx.data.ItemReference
mx.data.IManaged
mx.data.utils.Managed
mx.data.IChangeObject


Public Properties
 PropertyDefined By
  autoCommit : Boolean
Indicates if changes to the local cache are automatically committed.
DataService
  autoConnect : Boolean
Indicates if this service should attempt to connect for any operations that require a connection.
DataService
  autoMerge : Boolean
If set to false, when changes are pushed from the remote destination to the client they are not immediately applied.
DataService
  autoSaveCache : Boolean
The local cache of data and changes can be stored to disk.
DataService
  autoSyncEnabled : Boolean
When true, fill(), createItem() and getItem() requests return items which listen for updates made to these items from the remote destination.
DataService
  cacheID : String
Provides access to the cache identifier for this service.
DataService
  channelSet : ChannelSet
Provides access to the ChannelSet used by the service.
DataService
  commitRequired : Boolean
[read-only] Indicates if there are changes that have not been committed and the commit() method should be called.
DataService
  conflictDetector : ConflictDetector
Provides access to the current implementation being used to detect conflicts for remote operations pushed to this DataService.
DataService
  conflicts : Conflicts
[read-only] Returns the Conflicts object, an ArrayList of Conflict instances.
DataService
  connected : Boolean
[read-only] Indicates if the DataService is connected to the remote destination.
DataService
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
  dataStore : DataStore
Returns an object of type mx.data.DataStore.
DataService
  deleteItemOnRemoveFromFill : Boolean
By default when you call the removeItemAt() method on a managed filled collection, it issues a delete item call to the server to physically remove the item.
DataService
  destination : String
[read-only] Indicates which remote destination this service is associated with.
DataService
  hierarchicalEventsDefault : Boolean
Associations optionally list for property change events on properties of the associated instances.
DataService
  indexReferences : Boolean
To tune the speed of your application, set this to false if you have a small number of fills or references to items managed by this data service from association properties of other items.
DataService
  isInitialized : Boolean
[read-only] Indicates if the metadata associated with this service is initialized.
DataService
  manualSync : ManualSyncConfiguration
The manualSync property provides access to the ManualSyncConfiguration instance for each data service.
DataService
  mergeRequired : Boolean
[read-only] Indicates if there are any pending changes that must be merged.
DataService
  pageSize : int
Provides access to the current page size setting for all collections.
DataService
  pagingEnabled : Boolean
[read-only] Indicates if the remote destination is configured to allow paged requests.
DataService
 Inheritedprototype : Object
[static] A reference to the prototype object of a class or function object.
Object
  requestTimeout : int
Provides access to the request timeout in seconds for an operation.
DataService
  resubscribeAttempts : int
Controls the number of times a disconnected data service will attempt to resubscribe.
DataService
  resubscribeInterval : int
Controls the delay between resubscribe attempts.
DataService
  subscribed : Boolean
[read-only]
DataService
  throwItemPendingErrors : Boolean
Set this to false if you want to suppress the throwing of item pending errors when lazily fetched or unpaged data is accessed.
DataService
Public Methods
 MethodDefined By
  
DataService(destination:String)
Constructs an instance of the DataService with the specified destination.
DataService
  
Clears any data stored to disk with a previous call to saveCache() or when autoSaveCache was set to true
DataService
  
Clears the data specified by the passed descriptor from the local store.
DataService
  
commit(itemsOrCollections:Array = null, cascadeCommit:Boolean = false):AsyncToken
Commits pending changes for all collections currently managed by the DataStore associated with this data service.
DataService
  
Forces a connection attempt by this service to the remote destination.
DataService
  
Calls a count method on the remote destination.
DataService
  
Requests that the specified item be created in the remote store.
DataService
  
Requests that the specified item be deleted from the remote store.
DataService
  
Disconnects the DataService's network connection.
DataService
  
Fills the specified ListCollectionView based on the associated <fill-method> elements.
DataService
  
Returns an ArrayCollection or a single managed object (SMO) from the the local store.
DataService
  
This method will fill the specified ListCollectionView with CacheDataDescriptor(s).
DataService
  
This method will fill the specified ListCollectionView with all cache identifiers previously used in the application.
DataService
  
getItem(identity:Object, defaultValue:Object = null):ItemReference
Makes an asynchronous request for an item matching the specified identity.
DataService
  
Looks up the supplied item with the given identity.
DataService
  
Returns the pending operation in the message cache for the specified item.
DataService
 Inherited
Indicates whether an object has a specified property defined.
Object
  
Forces initialization of the DataStore.
DataService
  
Returns true if the passed collection is managed by this service.
DataService
  
Returns true if the passed collection is using paging features.
DataService
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
  
isRangeResident(view:ListCollectionView, startIndex:int, numberOfItems:int):Boolean
Returns true if the supplied range of items is all paged in.
DataService
  
Logs the user out of the destination for the DataService.
DataService
  
Merges any pending updates into the managed set of objects.
DataService
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
  
Refreshes all data managed by this data service.
DataService
  
Refreshes an array collection previously filled with the fill method or managed as a managed association.
DataService
  
release(clear:Boolean = true, copyStillManagedItems:Boolean = true):void
Releases all managed collections and items for the DataService.
DataService
  
releaseCollection(view:ListCollectionView, clear:Boolean = false, copyStillManagedItems:Boolean = true):void
Releases any item within the specified collection from management by this service.
DataService
  
releaseItem(item:IManaged, copyStillManagedItems:Boolean = true, enableStillManagedCheck:Boolean = true):IManaged
Releases the specified item from management by this service.
DataService
  
releaseItemsFromCollection(collection:ListCollectionView, startIndex:int, numberOfItems:int):int
Releases a range of items in the collection.
DataService
  
Reverts any uncommitted changes to the specified item.
DataService
  
This method will save the current state of the DataService cache.
DataService
  
setCredentials(username:String, password:String):void
Sets the credentials for this DataService destination.
DataService
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
  
Sets the credentials for the third party of this DataService destination.
DataService
 Inherited
Returns the string representation of the specified object.
Object
 Inherited
Returns the primitive value of the specified object.
Object
Events
 Event Summary Defined By
  The DataConflictEvent.CONFLICT event is dispatched when a conflict is detected between either pending local changes and changes submitted by another client, or when changes submitted by this client are conflicting with those in the remote destination.DataService
  The DataServiceFaultEvent.FAULT event is dispatched when a service call fails due to an error.DataService
  The MessageEvent.MESSAGE event is dispatched when the remote destination pushes a notification of a data operation.DataService
  The PropertyChangeEvent.PROPERTY_CHANGE event is dispatched when a property of this service changes.DataService
  The ResultEvent.RESULT event is dispatched when a service call successfully returns.DataService
Property Detail
autoCommitproperty
autoCommit:Boolean  [read-write]

Indicates if changes to the local cache are automatically committed. Committed changes are sent to the remote service immediately.

The default value is true.


Implementation
    public function get autoCommit():Boolean
    public function set autoCommit(value:Boolean):void
autoConnectproperty 
autoConnect:Boolean  [read-write]

Indicates if this service should attempt to connect for any operations that require a connection. Operations like fill(), getItem() and count() will attempt to connect if the service is disconnected and autoConnect is set to true. Use this property to control occasionally connected application behavior.

The default value is true.


Implementation
    public function get autoConnect():Boolean
    public function set autoConnect(value:Boolean):void
autoMergeproperty 
autoMerge:Boolean  [read-write]

If set to false, when changes are pushed from the remote destination to the client they are not immediately applied. Instead, the mergeRequired property is set to true. An event handler can be registered to listen for change events on this property to be notified of when a merge needs to be applied. To merge changes, call the merge() method and all changes are applied. Uncommited changes can not be committed when there are any changes that need to be merged. If paging is enabled all requests for non local items are cached until merge() is called. Once merge() is called, the cached requests are processed.

The default value is true.


Implementation
    public function get autoMerge():Boolean
    public function set autoMerge(value:Boolean):void
autoSaveCacheproperty 
autoSaveCache:Boolean  [read-write]

The local cache of data and changes can be stored to disk. When autoSaveCache is true each time a change is made or a remote request is returned, that data will be saved to disk. If there is a problem saving the data either because the disk is full or write permissions have been denied a FaultEvent will be dispatched or a Fault will be thrown. Setting this value to false (the default) will not save any data or changes to disk. To force the current data and changes to be saved to disk use the saveCache method.

The default value is false.


Implementation
    public function get autoSaveCache():Boolean
    public function set autoSaveCache(value:Boolean):void

See also

autoSyncEnabledproperty 
autoSyncEnabled:Boolean  [read-write]

When true, fill(), createItem() and getItem() requests return items which listen for updates made to these items from the remote destination. When a change is made to this property value, it only affects future calls to these methods, not existing collections or items. Also note that when a mix of collections retrieved with autoSyncEnabled and those that were filled without autoSyncEnabled, any items appearing in both collections will still receive update events.

The default value is true.


Implementation
    public function get autoSyncEnabled():Boolean
    public function set autoSyncEnabled(value:Boolean):void
cacheIDproperty 
cacheID:String  [read-write]

Provides access to the cache identifier for this service. A cache identifier must be set prior to performing any operations that require interaction with data stored locally on disk. If a cache identifier is not set, all cache methods and properties are considered inconsistent and a DataServiceError is thrown during any operation that requires data from the local disk. This property provides a unique "session" identifier for data stored locally. A developer must set this property to a unique value for the application. A value of null or empty string is considered unset. Requests for data by methods like fill() and getItem() will attempt to access the local data on disk first if the cacheID has been set. If the cacheID is not set, no attempt to access any local data will be made.


Implementation
    public function get cacheID():String
    public function set cacheID(value:String):void
channelSetproperty 
channelSet:ChannelSet  [read-write]

Provides access to the ChannelSet used by the service. The ChannelSet can be manually constructed and assigned, or it will be dynamically created to use the configured Channels for the destination for this service.


Implementation
    public function get channelSet():ChannelSet
    public function set channelSet(value:ChannelSet):void
commitRequiredproperty 
commitRequired:Boolean  [read-only]

Indicates if there are changes that have not been committed and the commit() method should be called. When this property changes, an event is dispatched. This property can be used within an application to provide visual feedback.

This property can be used as the source for data binding.


Implementation
    public function get commitRequired():Boolean
conflictDetectorproperty 
conflictDetector:ConflictDetector  [read-write]

Provides access to the current implementation being used to detect conflicts for remote operations pushed to this DataService.


Implementation
    public function get conflictDetector():ConflictDetector
    public function set conflictDetector(value:ConflictDetector):void
conflictsproperty 
conflicts:Conflicts  [read-only]

Returns the Conflicts object, an ArrayList of Conflict instances. Conflicts must be resolved before commit() can be called. Conflicts can be resolved by going through the conflicts, resolving each conflict individually or by calling the acceptAllClient() method or acceptAllServer() method on this property.

This property can be used as the source for data binding.


Implementation
    public function get conflicts():Conflicts
connectedproperty 
connected:Boolean  [read-only]

Indicates if the DataService is connected to the remote destination.

This property can be used as the source for data binding.


Implementation
    public function get connected():Boolean
dataStoreproperty 
dataStore:DataStore  [read-write]

Returns an object of type mx.data.DataStore. The DataStore manages the set of incoming and outgoing changes for one or more DataServices, which may have references between them. When you commit on a DataStore, all of the pending changes of each DataService using that DataStore are committed. By default, a DataService shares the same DataStore with other DataServices if they have managed association properties and share the same set of channels. If you are sharing DataStores, a commit call on one DataService commits changes for all DataServices using that data store. This preserves the order of operations in case there are dependencies between the changes in your uncommitted batches.

This property can be used as the source for data binding.


Implementation
    public function get dataStore():DataStore
    public function set dataStore(value:DataStore):void
deleteItemOnRemoveFromFillproperty 
deleteItemOnRemoveFromFill:Boolean  [read-write]

By default when you call the removeItemAt() method on a managed filled collection, it issues a delete item call to the server to physically remove the item. This allows you to use code which uses a managed collection and an unmanaged collection in the same way. Other times though, you might want to remove the item from the collection on the client without deleting it from the server. In that case, set this flag to false before you call the removeItemAt() method.

Note that this does not affect collections which are associations - just those which were used with the fill() method.

The default value is true.


Implementation
    public function get deleteItemOnRemoveFromFill():Boolean
    public function set deleteItemOnRemoveFromFill(value:Boolean):void
destinationproperty 
destination:String  [read-only]

Indicates which remote destination this service is associated with.


Implementation
    public function get destination():String
hierarchicalEventsDefaultproperty 
hierarchicalEventsDefault:Boolean  [read-write]

Associations optionally list for property change events on properties of the associated instances. You can set this on the association with the hierarchical-events attribute. If you do not set the hierarchical-events attribute, the associations for a particular destination use this property to determine the default. The default is false. For objects that live in a tree (rather than a cyclic graph), you may want to set this to true for a destination as a convenience. If you use properties of your properties in an item renderer for instance, setting this to true for that association property will cause the grid to refresh when these properties of properties change. The system is smart enough to avoid sending recursive events but be ware of creating large chains of events, e.g. parent.child[0].child[1].child[3].


Implementation
    public function get hierarchicalEventsDefault():Boolean
    public function set hierarchicalEventsDefault(value:Boolean):void
indexReferencesproperty 
indexReferences:Boolean  [read-write]

To tune the speed of your application, set this to false if you have a small number of fills or references to items managed by this data service from association properties of other items.


Implementation
    public function get indexReferences():Boolean
    public function set indexReferences(value:Boolean):void
isInitializedproperty 
isInitialized:Boolean  [read-only]

Indicates if the metadata associated with this service is initialized.


Implementation
    public function get isInitialized():Boolean
manualSyncproperty 
manualSync:ManualSyncConfiguration  [read-write]

The manualSync property provides access to the ManualSyncConfiguration instance for each data service. This class allows you to subscribe to changes made by other clients or on the server and it allows you to control how your changes are published to other clients which subscribe using this interface.


Implementation
    public function get manualSync():ManualSyncConfiguration
    public function set manualSync(value:ManualSyncConfiguration):void
mergeRequiredproperty 
mergeRequired:Boolean  [read-only]

Indicates if there are any pending changes that must be merged.

This property can be used as the source for data binding.


Implementation
    public function get mergeRequired():Boolean
pageSizeproperty 
pageSize:int  [read-write]

Provides access to the current page size setting for all collections.


Implementation
    public function get pageSize():int
    public function set pageSize(value:int):void
pagingEnabledproperty 
pagingEnabled:Boolean  [read-only]

Indicates if the remote destination is configured to allow paged requests.


Implementation
    public function get pagingEnabled():Boolean
requestTimeoutproperty 
requestTimeout:int  [read-write]

Provides access to the request timeout in seconds for an operation. A value less than or equal to zero prevents request timeout. When a current operation times out due to the requestTimeout limit being reached a fault will be dispatched for that operation, indicating that the request was timed out. Note that when an operation times out, it is possible the server did in fact receive that operation. This can leave your client state out of sync with the server.


Implementation
    public function get requestTimeout():int
    public function set requestTimeout(value:int):void
resubscribeAttemptsproperty 
resubscribeAttempts:int  [read-write]

Controls the number of times a disconnected data service will attempt to resubscribe. The default, -1 means to continually resubscribe until the client is able to reconnect.


Implementation
    public function get resubscribeAttempts():int
    public function set resubscribeAttempts(value:int):void
resubscribeIntervalproperty 
resubscribeInterval:int  [read-write]

Controls the delay between resubscribe attempts. Measured in milliseconds. The default is 5000, in other words - to attempt to resubscribe once every 5 seconds.


Implementation
    public function get resubscribeInterval():int
    public function set resubscribeInterval(value:int):void
subscribedproperty 
subscribed:Boolean  [read-only]

This property can be used as the source for data binding.


Implementation
    public function get subscribed():Boolean
throwItemPendingErrorsproperty 
throwItemPendingErrors:Boolean  [read-write]

Set this to false if you want to suppress the throwing of item pending errors when lazily fetched or unpaged data is accessed. Instead of throwing the error null will be returned for a property value or a getItemAt call in an array collection. The size() return 0 elements for a list whose size has not yet been fetched from the server. When the element is returned from the server the appropriate PropertyChangeEvent and/or CollectionEvent are sent.


Implementation
    public function get throwItemPendingErrors():Boolean
    public function set throwItemPendingErrors(value:Boolean):void
Constructor Detail
DataService()Constructor
public function DataService(destination:String)

Constructs an instance of the DataService with the specified destination. The destination must be a reference to a destination configured in the services-config.xml file.

Parameters
destination:String — that contains the name of the desired destination.
Method Detail
clearCache()method
public function clearCache(value:Object = null):AsyncToken

Clears any data stored to disk with a previous call to saveCache() or when autoSaveCache was set to true

Parameters

value:Object (default = null) — Object reference to either a managed single object or ArrayCollection.

Returns
AsyncToken — AsyncToken which can be used to respond to the success or failure of the operation.
clearCacheData()method 
public function clearCacheData(descriptor:CacheDataDescriptor):AsyncToken

Clears the data specified by the passed descriptor from the local store.

Parameters

descriptor:CacheDataDescriptor — descriptor reference to the descriptor for the data that should be removed from the local cache

Returns
AsyncToken — ASyncToken reference to the token that can be used to determine when the result or fault has occurred for this operation.
commit()method 
public function commit(itemsOrCollections:Array = null, cascadeCommit:Boolean = false):AsyncToken

Commits pending changes for all collections currently managed by the DataStore associated with this data service. Calling this method is equivalent to calling dataStore.commit().

When the autoCommit property is true, transactions are not used and you do not need to call this method. To use transactions, set the autoCommit property to false and call this method directly to commit a batch of changes.

You typically just call "commit()" with no arguments which will commit all pending changes. You can supply optional arguments to commit a subset of the pending changes. You must resolve all outstanding conflicts before you can commit changes to any item in the DataStore.

If the assembler is configured to have use-transactions set to true, all changes are committed atomically. If any operation fails, none of the operations in the batch are applied. If use-transactions is set to false, the operations are each committed individually until a failure occurs at which point processing stops. Any changes that occur before the error are applied, any changes which occur after the error are not applied. When an error occurs when processing a batch, the changes are put back into the uncommitted queue. You need to call revertChanges if you want to remove the changes which caused the error.

By default, the commit method will commit all pending changes for all items which have been created, modified, and deleted for this DataStore. If you want to commit a subset of these changes, you can specify a combination of managed ArrayCollection instances and/or managed items which define the subset of changes you want included in the batch. For each array collection you specify, any changes made either to the membership or order of items in that that array collection or any changes to items in that array collection are committed. You can also specify a list of individual managed items so that only changes for those items are committed. If you specify any objects in the itemsOrCollections parameter which are not managed collections or items, a DataServiceError is thrown.

If you are using the itemsOrCollections parameter and your items have association properties which refer to other items, you can use the cascadeCommit parameter to control whether or not changes made to associated items are also included in batch. For example, if you specify a Group item in the items parameter, and the Group instance has a members property which refers to a list of Person instances when cascadeCommit is true changes to any Person instance will also be included in the set of changes committed. If cascadeCommit is false, only changes to the Group would be included. Use cascadeCommit=true to ensure that any dependent changes are included in the batch.

Parameters

itemsOrCollections:Array (default = null) — This is an optional parameter which defaults to null when you want to commit all pending changes. If you want to commit a subset of the pending changes use this argument to specify a list of managed ListCollectionView instances and/or managed items. ListCollectionView objects are most typically ArrayCollections you have provided to your fill method. The items appropriate for this method are any managed version of the item. These are any items you retrieve from getItem, createItem or using the getItemAt method from a managed collection. Only changes for the items defined by any of the values in this array will be committed.
 
cascadeCommit:Boolean (default = false) — if true, also commit changes made to any associated items supplied in this list.

Returns
AsyncToken — AsyncToken that is returned in call property of either the ResultEvent.RESULT or in the FaultEvent.FAULT. Custom data can be attached to this object and inspected later during the event handling phase. If no changes have been made to the relevant items, null is returned instead of an AsyncToken.

Throws
Error — if initialization is in progress. This may occur when a runtime destination is referenced and commit is called before this service has been initialized, or if the cacheID has been set and the local cache has not been loaded. In each situation waiting for the result or fault on a token returned from a call to initialize or from a previous operation, before calling commit will avoid the error.
connect()method 
public function connect():AsyncToken

Forces a connection attempt by this service to the remote destination. This method may be used in conjunction with the autoConnect property and disconnect() method to control connection status.

Returns
AsyncToken — AsyncToken reference to the token that will identify this operation in a result or fault event dispatched from this service. When calling connect() the token's result handler will always be called and the result will be the current value of this service's connected property.
count()method 
public function count(... args):AsyncToken

Calls a count method on the remote destination. The count method called is based on the associated <count-method> tags and the parameters passed. For example, if the following count("firstName", "Bob") call was made and <count-method> tags exist or are referenced in the services-config.xml under the associated destination:

 
            <count-method>
                <name>getCount</name>
                <params>java.lang.String,java.lang.String</params>
                <security-run-as name="freddie" password="nightmare" />
            </count-method>
            
            <count-method>
                <name>getCount</name>
                <security-constraint ref="sample-users" />
            </count-method>
      
The first <count-method> with the run-as security setting is invoked because it contains two parameters, which matches the <params> tag types and count.

Parameters

... args — List of arguments that should be passed to the remote destination.

Returns
AsyncToken — Object returned in the call property of the ResultEvent.RESULT or in the FaultEvent.FAULT. Custom data can be attached to this object and inspected later during the event handling phase.

See also

createItem()method 
public function createItem(item:Object):ItemReference

Requests that the specified item be created in the remote store. If an error occurs a DataConflictEvent is dispatched.

Parameters

item:Object — that should be created in the remote store.

Returns
ItemReference — ItemReference (which extends AsyncToken). This reference is returned in the token property of either the ResultEvent.RESULT or in the FaultEvent.FAULT. Custom data can be attached to this object and inspected later during the event handling phase. The result property of this object is bindable and can be used to bind the item returned. This result object is set to null if the item is removed from another client. If you hold on to ItemReference objects in your application, you should call the releaseItem() method in the ItemReference when you are finished with this reference to the item. If you do not hold onto the ItemReferences, you can use the releaseItem() method on the DataService, which takes the instance of the item itself to release. When createItem() fails, it returns a fault. However, the item is still pending. You must call release() to remove it.
deleteItem()method 
public function deleteItem(item:Object):AsyncToken

Requests that the specified item be deleted from the remote store. If an error occurs a DataConflictEvent will be dispatched.

Parameters

item:Object — that should be deleted in the remote store.

Returns
AsyncToken — AsyncToken that will be returned in the token property of either the ResultEvent.RESULT or in the FaultEvent.FAULT. Custom data can be attached to this object and inspected later during the event handling phase.
disconnect()method 
public function disconnect():void

Disconnects the DataService's network connection. This method does not wait for outstanding network operations to complete.

fill()method 
public function fill(value:ListCollectionView, ... args):AsyncToken

Fills the specified ListCollectionView based on the associated <fill-method> elements. For example, if the following <fill-method> elements exist or are referenced in the services-config.xml under the associated destination:

            <fill-method>
                <name>loadPersons</name>
                <params>java.lang.String,java.lang.String</params>
                <security-run-as name="freddie" password="nightmare" />
            </fill-method>
            
            <fill-method>
                <name>loadPersons</name>
                <security-constraint ref="sample-users" />
            </fill-method>
      
Then calling fill(myCollection, ["firstName", "Bob"]) invokes the first <fill-method> with the run-as security setting since it contains two parameters, matching the <params> tag types and count. Likewise, calling fill(myCollection) invokes the second <fill-method> tag as it contains no <params> tag. Any pending changes to items in this collection are tossed. Also note that any data in the collection is cleared when you call fill. You can call fill using a previously filled collection as well. In this case, if the fill parameters are the same, the collection is cleared and the fill method on the server is called again. If the fill parameters are different the old collection is released and the new collection is filled.

Parameters

value:ListCollectionView — to the collection that should be filled with the specified arguments.
 
... args — rest:Array variable list of arguments that should be passed to the remote destination.

Returns
AsyncToken — AsyncToken You can use this token to register one or more callback functions to receive result or fault events from this fill operation. This token is also returned in the call property of the ResultEvent.RESULT or in the FaultEvent.FAULT. Custom data can be attached to this object and inspected later during the event handling phase.
getCacheData()method 
public function getCacheData(descriptor:CacheDataDescriptor):AsyncToken

Returns an ArrayCollection or a single managed object (SMO) from the the local store. Calling this method will not update the last accessed time.

Parameters

descriptor:CacheDataDescriptor — CacheDataDescriptor for the desired cache data.

Returns
AsyncToken — AsyncToken reference to the token that can be used to determine when the result or fault has occurred for this operation. The result property of the AsyncToken or on the associated event will contain a new instance of an unmanaged ArrayCollection or ItemReference for each call.
getCacheDescriptors()method 
public function getCacheDescriptors(view:ListCollectionView, options:uint = 0, item:Object = null):AsyncToken

This method will fill the specified ListCollectionView with CacheDataDescriptor(s). If no argument is specified then all associated CacheDataDescriptors for cached data under this service will be returned.

Parameters

view:ListCollectionView — ListCollectionView reference to a collection that can be filled with the desired descriptors.
 
options:uint (default = 0) — uint must be one of the following constants:
  • CacheDataDescriptor.FILL - indicates that only descriptors for filled collections should be returned collection.
  • CacheDataDescriptor.ITEM - indicates that only descriptor for managed items should be returned in the collection.
  • CacheDataDescriptor.ALL - [default] indicates that all descriptors should be returned.
 
item:Object (default = null) — Object reference to a specific ItemReference, managed item, or ListCollectionView, when specified this parameter overrides the options argument.

Returns
AsyncToken — AsyncToken reference to the token that will identify this operation in a result or fault event dispatched from this service.
getCacheIDs()method 
public function getCacheIDs(view:ListCollectionView):AsyncToken

This method will fill the specified ListCollectionView with all cache identifiers previously used in the application.

Parameters

view:ListCollectionView — ListcollectionView reference to a collection that should be filled with all cache identifiers previously used in the application.

Returns
AsyncToken — AsyncToken reference to the token that will identify this operation in a result or fault event dispatched from this service.
getItem()method 
public function getItem(identity:Object, defaultValue:Object = null):ItemReference

Makes an asynchronous request for an item matching the specified identity. If you provide a defaultValue, and the item does not exist, the item is created instead using the information in the defaultValue. This method returns an ItemReference. If you receive a valid instance from the getItem() method call, you must call the releaseItem() method to release an instance of the item. If you hang onto the ItemReference, you should call the releaseItem() method on the reference to be sure you release the proper reference (in case your client has made more than one getItem() method call for the same item). If you do not hold onto the ItemReference, you can call the releaseItem() method on the DataService with the item itself.

Parameters

identity:Object — Object that contains the identity properties for the desired object.
 
defaultValue:Object (default = null) — An instance of the type with the default values that should be created if it doesn't exist.

Returns
ItemReference — ItemReference to the item you want to get. The ItemReference extends AsyncToken so you can use it to receive notification of when the item has been retrieved or when this call produces a fault. The ItemReference is returned as the token property in either the ResultEvent.RESULT or in the FaultEvent.FAULT if you are listening for events on the DataService object. Custom data can be attached to this object and inspected later during the event handling phase. You also can use data binding to bind to the result property of the ItemReference. This property is set to a valid value when the item is populated from the remote destination and is bindable so you can simply bind your user interface controls to the properties of the ItemReference's result property. If the item is removed from the server or another client, this reference is set to null. The ItemReference also has an invalid property which is set to true if the are errors returning the item or if the server returns null for an item.
getLocalItem()method 
public function getLocalItem(identity:Object):Object

Looks up the supplied item with the given identity. If the item is already managed on this client, the managed instance is returned. If not, null is returned. Unlike the getItem call, this call does not make a request to the server and does not add an additional reference to the item.

Parameters

identity:Object — Object that contains the identity properties for the desired object.

Returns
Object — The managed object or null if the item with this id is not yet managed on this client.
getPendingOperation()method 
public function getPendingOperation(item:IManaged):uint

Returns the pending operation in the message cache for the specified item. Use this method to provide visual feedback to a user of what type of change, if any, has been made to an item.

Parameters

item:IManaged — IManaged that should be tested against.

Returns
uint — uint that indicates what pending operation has been performed. The following are valid operations for an item:
  • DataMessage.CREATE_OPERATION - indicates that a create is pending for the specified item.
  • DataMessage.DELETE_OPERATION - indicates that a delete is pending for the specified item.
  • DataMessage.UPDATE_OPERATION - indicates that updates are pending for the specified item.
  • DataMessage.UNKNOWN_OPERATION - indicates that no operations are pending for the specified item.
initialize()method 
public function initialize():AsyncToken

Forces initialization of the DataStore.

Returns
AsyncToken
isCollectionManaged()method 
public function isCollectionManaged(view:ListCollectionView):Boolean

Returns true if the passed collection is managed by this service. If the collection is managed by this service it is safe to pass the collection to releaseCollection() to release it from management.

Parameters

view:ListCollectionView — The ListCollectionView reference to test whether it is managed by this service.

Returns
Boolean — True if the collection is managed by this service; otherwise false.
isCollectionPaged()method 
public function isCollectionPaged(view:ListCollectionView):Boolean

Returns true if the passed collection is using paging features. If the collection is paged by this service it is safe to pass the collection to releaseItemsFromCollection() to release individual items in the collection from management.

Parameters

view:ListCollectionView — The ListCollectionView reference to test whether it is managed by this service.

Returns
Boolean — True if the collection is using paging otherwise false.
isRangeResident()method 
public function isRangeResident(view:ListCollectionView, startIndex:int, numberOfItems:int):Boolean

Returns true if the supplied range of items is all paged in. Otherwise returns false.

Parameters

view:ListCollectionView — A ListCollectionView managed by this data service.
 
startIndex:int
 
numberOfItems:int

Returns
Boolean — true if the collection is all resident, false if any of the items in the supplied range are are not resident.
logout()method 
public function logout():void

Logs the user out of the destination for the DataService. Logging out of a destination applies to everything connected using the same ChannelSet as specified in the server configuration. For example, if you are connected over the my-rtmp channel and you log out using one of your DataService instances, anything that was connected over the same ChannelSet is logged out.

merge()method 
public function merge():void

Merges any pending updates into the managed set of objects. The process of merging changes detect conflicts and process any pending item requests. This merges all messages for any other DataService instances that share this same data store.

refresh()method 
public function refresh():AsyncToken

Refreshes all data managed by this data service. Fills, getItems, and page requests will be made to the server to re-fetch all items managed by this type. Use DataStore.refresh() to also refresh all associated items for lazy = true associations.

Returns
AsyncToken — AsyncToken You can use this token to register one or more callback functions for the result or fault events of the refresh operation.
refreshCollection()method 
public function refreshCollection(value:ListCollectionView):AsyncToken

Refreshes an array collection previously filled with the fill method or managed as a managed association. This method makes a request to the server, fetches the new version of any resident items in the collection using the fill parameters original used with this collection or by fetching the property from the parent item. If any changes are found, they merged into the collection in an incremental fashion.

Parameters

value:ListCollectionView

Returns
AsyncToken — AsyncToken You can use this token to register one or more callback functions to receive result or fault events from this refresh operation. Null is returned if there is nothing to refresh for a paged collection. This token is also returned in the call property of the ResultEvent.RESULT or in the FaultEvent.FAULT. Custom data can be attached to this object and inspected later during the event handling phase.
release()method 
public function release(clear:Boolean = true, copyStillManagedItems:Boolean = true):void

Releases all managed collections and items for the DataService.

Parameters

clear:Boolean (default = true) — clear Boolean indicating if the all items should be removed from the list. In addition no copies will be made of any item.
 
copyStillManagedItems:Boolean (default = true) — if after releasing this data service references from managed associations from another data services might hold references to some of these managed objects. In that case, some managed collections in this data service might still be actively managed. If you pass true for this flag, these references are either removed (clear=true) or cloned (clear=flase). If you pass in false for this flag, those active references are left alone. Using false is the fastest way to clear the state of the system. Using true ensures you don't have any managed state in references to collections or items you retrieved from this data service.

See also

releaseCollection()method 
public function releaseCollection(view:ListCollectionView, clear:Boolean = false, copyStillManagedItems:Boolean = true):void

Releases any item within the specified collection from management by this service. If the item exists in more than one collection, a copy of the item is made. Any uncommitted changes made to an item that exists only in this collection are released, including deletes, creates and updates.

Parameters

view:ListCollectionView — ListCollectionView reference that should no longer receive remote updates.
 
clear:Boolean (default = false) — clear Boolean indicating if the all items should be removed from the list. In addition no copies will be made of any item.
 
copyStillManagedItems:Boolean (default = true) — copyStillManagedItems Boolean if there are other managed references to items in this collection, this parameter controls whether copies of those items are made so that after this call you are guaranteed that there are no longer any managed items in the collection. Specifying both clear and this option as false will result in the fastest way to release managed references.

releaseItem()method 
public function releaseItem(item:IManaged, copyStillManagedItems:Boolean = true, enableStillManagedCheck:Boolean = true):IManaged

Releases the specified item from management by this service. If you hold onto ItemReferences, you should call the releaseItem() method on the ItemReference to be sure you release the proper reference in the case where you might have made more than one getItem call which retrieves the same item from different parts of your client application.

This call releases any associated resources, including nested properties. The specified item no longer receives updates from the remote destination. In addition if there are any uncommited changes to this item and it does not appear in any other collection these changes will also be released. If the specified item exists in more than one collection then the value handed back will be a copy of the original unless the allowCopy parameter is set to false.

Parameters

item:IManaged — IManaged reference to the item to be released.
 
copyStillManagedItems:Boolean (default = true) — Optional parameter that defaults to true. If true, makes a copy of the item if it is still referenced by another managed reference. You can set this to false but it would mean that object might still get updates from the server if it is still managed through other references.
 
enableStillManagedCheck:Boolean (default = true) — copyStillManagedItems Boolean indicating if we should make copies of the items which are still managed in the graph of objects. Passing a value of false will clear the reference to these items.

Returns
IManaged — the released item which will be a copy if copyStillManagedItems=false and the item is managed by another reference.
releaseItemsFromCollection()method 
public function releaseItemsFromCollection(collection:ListCollectionView, startIndex:int, numberOfItems:int):int

Releases a range of items in the collection. When paging through a large collection you may want to free up resources occupied by items in the collection and stop subscribing for updates for those items. You specify the startIndex of the first item you want to release and the number of items to release. If an item at that position is not yet paged that index is skipped.

Parameters

collection:ListCollectionView — a managed ListCollectionView
 
startIndex:int — the index of the first item to release.
 
numberOfItems:int — the number of items to release starting at position. numberOfItems should be greater than 0 and startIndex + numberOfItems should be less than collection.length.

Returns
int — the number of references released.
revertChanges()method 
public function revertChanges(item:IManaged = null):Boolean

Reverts any uncommitted changes to the specified item. Or if no item is supplied, it will revert all uncommitted changes. If you revert a create operation, it removes the item. If you revert a delete, it adds the item back in. Reverting an update restores the original properties of the item that were in place before you started changing it. Calling this method is equivalent to calling dataStore.revertChanges().

One situation in which you would use this method is after a fault has occurred. In that case, any failed changes are put back into the uncommitted changes list. At that point you can either modify those changes to fix the problem or revert them using this method to keep those changes from being resubmitted again.

If an item is supplied and this item doesn't have any changes this method will return false. If no item is supplied and there are no changes this method returns false. Otherwise, it returns true.

Parameters

item:IManaged (default = null) — IManaged reference to revert changes for or null to revert all changes.

Returns
Boolean — Boolean indicating if any changes were reverted.
saveCache()method 
public function saveCache(value:Object = null):AsyncToken

This method will save the current state of the DataService cache. The cache includes in-memory items and changes made to those items that have not been sent to the remote destination.

Parameters

value:Object (default = null) — value Object reference to either a managed ListCollectionView or object.

Returns
AsyncToken — AsyncToken which can be used for notification of when the operation completes successfully or fails.

See also

autoSaveCache

Example
 
         var customerService:DataService = new DataService("customers");
         var customers:ArrayCollection = new ArrayCollection();
         customerService.fill(customers);
         // ...
         var customer:Customer = Customer(customers[0]);
         customer.priority = "top";
         customerService.saveCache();  
         // now all of the changes and items in the customers collection 
         // will be persisted locally
      
setCredentials()method 
public function setCredentials(username:String, password:String):void

Sets the credentials for this DataService destination. The credentials are applied to all services connected over the same ChannelSet.

Parameters

username:String — username for the destination.
 
password:String — The password for the destination

setRemoteCredentials()method 
public function setRemoteCredentials(username:String, password:String):void

Sets the credentials for the third party of this DataService destination.

Parameters

username:String — The username for the destination.
 
password:String — The password for the destination.

Event Detail
conflict Event
Event Object Type: mx.data.events.DataConflictEvent
DataConflictEvent.type property = mx.data.events.DataConflictEvent.CONFLICT

The DataConflictEvent.CONFLICT event is dispatched when a conflict is detected between either pending local changes and changes submitted by another client, or when changes submitted by this client are conflicting with those in the remote destination. Each DataService sends conflict events only for items of this particular destination. Use the conflict event on the DataService if you need to handle conflicts for a set of related destinations at the same time.

The CONFLICT constant defines the value of the type property of the event object for a conflict event,

The properties of the event object have the following values:

PropertyValue
bubblesfalse
cancelablefalse
currentTargetThe Object that defines the event listener that handles the event. For example, if you use myButton.addEventListener() to register an event listener, myButton is the value of the currentTarget.
conflict The Conflict object that holds the conflict that occurred.
message The Message associated with this event.
targetThe Object that dispatched the event; it is not always the Object listening for the event. Use the currentTarget property to always access the Object listening for the event.
fault Event  
Event Object Type: mx.data.events.DataServiceFaultEvent
DataServiceFaultEvent.type property = mx.data.events.DataServiceFaultEvent.FAULT

The DataServiceFaultEvent.FAULT event is dispatched when a service call fails due to an error. For example, a call to the fill() method dispatches this event if the call fails. You'll also get this event for each item which generates an error as part of a commit result. In this case, the DataServiceFaultEvent will contain the token returned by the commit, but the item and error message strings in the fault are specific to the item which caused the error.

The FAULT constant defines the value of the type property of the event object for a fault event,

The properties of the event object have the following values:

PropertyValue
bubblesfalse
cancelabletrue, calling preventDefault() from the associated token's responder.fault method will prevent the service or operation from dispatching this event
currentTargetThe Object that defines the event listener that handles the event. For example, if you use myButton.addEventListener() to register an event listener, myButton is the value of the currentTarget.
fault The Fault object that holds the conflict that occurred.
item The item that generated the fault.
identity The identity of of the item that generated the fault.
message The Message associated with this event.
token The token that represents the call to the method. Used in the asynchronous completion token pattern.
targetThe Object that dispatched the event; it is not always the Object listening for the event. Use the currentTarget property to always access the Object listening for the event.
message Event  
Event Object Type: mx.messaging.events.MessageEvent
MessageEvent.type property = mx.messaging.events.MessageEvent.MESSAGE

The MessageEvent.MESSAGE event is dispatched when the remote destination pushes a notification of a data operation. For example, when data is updated in the remote destination an update operation is sent to all clients listening, this operation is converted to a message event on this DataService.

The MESSAGE event type; dispatched upon receipt of a message.

The value of this constant is "message".

The properties of the event object have the following values:

PropertyValue
bubblesfalse
cancelablefalse
currentTargetThe Object that defines the event listener that handles the event. For example, if you use myButton.addEventListener() to register an event listener, myButton is the value of the currentTarget.
messageThe message associated with this event.
targetThe Object that dispatched the event; it is not always the Object listening for the event. Use the currentTarget property to always access the Object listening for the event.
propertyChange Event  
Event Object Type: mx.events.PropertyChangeEvent
PropertyChangeEvent.type property = mx.events.PropertyChangeEvent.PROPERTY_CHANGE

The PropertyChangeEvent.PROPERTY_CHANGE event is dispatched when a property of this service changes. This happens for the following properties:

The PropertyChangeEvent.PROPERTY_CHANGE constant defines the value of the type property of the event object for a PropertyChange event.

The properties of the event object have the following values:

PropertyValue
bubblesDetermined by the constructor; defaults to false.
cancelableDetermined by the constructor; defaults to false.
kindThe kind of change; PropertyChangeEventKind.UPDATE or PropertyChangeEventKind.DELETE.
oldValueThe original property value.
newValueThe new property value, if any.
propertyThe property that changed.
sourceThe object that contains the property that changed.
currentTargetThe Object that defines the event listener that handles the event. For example, if you use myButton.addEventListener() to register an event listener, myButton is the value of the currentTarget.
targetThe Object that dispatched the event; it is not always the Object listening for the event. Use the currentTarget property to always access the Object listening for the event.
result Event  
Event Object Type: mx.rpc.events.ResultEvent
ResultEvent.type property = mx.rpc.events.ResultEvent.RESULT

The ResultEvent.RESULT event is dispatched when a service call successfully returns. For example a call to fill() will dispatch this event if the call is successful.

The RESULT event type.

The properties of the event object have the following values:

PropertyValue
bubblesfalse
cancelabletrue, preventDefault() from the associated token's responder.result method will prevent the service or operation from dispatching this event
currentTargetThe Object that defines the event listener that handles the event. For example, if you use myButton.addEventListener() to register an event listener, myButton is the value of the currentTarget.
message The Message associated with this event.
targetThe Object that dispatched the event; it is not always the Object listening for the event. Use the currentTarget property to always access the Object listening for the event.
resultResult that the RPC call returns.
tokenThe token that represents the indiviudal call to the method. Used in the asynchronous completion token pattern.




 

Send me an e-mail when comments are added to this page | Comment Report

Current page: http://livedocs.adobe.com/livecycle/8.2/programLC/common/langref/mx/data/DataService.html