mx.data

# ConflictDetector - AS3 ADEP Data Services

Package | mx.data
Class | public class ConflictDetector
Inheritance | ConflictDetector Object

Language Version: | ActionScript 3.0

Product Version: | Adobe Digital Enterprise Platform Data Services for Java EE 3

Runtime Versions: | Flash Player 9, AIR 1.1

A DataService instance uses a ConflictDetector instance to determine when a conflict occurs for an operation pushed from a remote destination.

It has three methods that are used to determine if a conflict exists when processing a pushed operation, `checkCreate()`, `checkDelete()`, and `checkUpdate()`. Each of these methods is called for the corresponding operation with two parameters, the local and the remote change.

If you want to customize how conflicts are detected on the client, you can extend this class and augment the behavior as needed to match remote assembler logic.

The following code provides examples of how these methods can be used to indicate a conflict has occurred. Conflicts are always indicated on the remoteChange.

View the examples

Public Properties
Hide Inherited Public Properties
Show Inherited Public Properties

| Property | Defined By
--- | --- | ---
|  | constructor : Object A reference to the class object or constructor function for a given object instance. | Object

Public Methods
Hide Inherited Public Methods
Show Inherited Public Methods

| Method | Defined By
--- | --- | ---
|  | ConflictDetector(dataService:ConcreteDataService) Constructs an instance of the default conflict detection mechanism. | ConflictDetector
|  | checkCreate(remoteChange:IChangeObject, localChange:IChangeObject):void Called by the DataService when a create operation is pushed/processed from the remote destination. | ConflictDetector
|  | checkDelete(remoteChange:IChangeObject, localChange:IChangeObject):void Called by the DataService when a delete operation is pushed/processed from the remote destination. | ConflictDetector
|  | checkRemoveFromFill(localChange:IChangeObject, fillParameters:Object):void Called by the DataService when a remove from fill operation is pushed/processed from the remote destination. | ConflictDetector
|  | checkUpdate(remoteChange:IChangeObject, localChange:IChangeObject):void Called by the DataService when an update operation is pushed/processed from the remote destination. | ConflictDetector
|  | hasOwnProperty(name:String):Boolean Indicates whether an object has a specified property defined. | Object
|  | isPrototypeOf(theClass:Object):Boolean Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter. | Object
|  | propertyIsEnumerable(name:String):Boolean Indicates whether the specified property exists and is enumerable. | Object
|  | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void Sets the availability of a dynamic property for loop operations. | Object
|  | toLocaleString():String Returns the string representation of this object, formatted according to locale-specific conventions. | Object
|  | toString():String Returns the string representation of the specified object. | Object
|  | valueOf():Object Returns the primitive value of the specified object. | Object

Constructor Detail

### ConflictDetector

()
Constructor

`public function ConflictDetector(dataService:ConcreteDataService)`

Language Version: | ActionScript 3.0

Product Version: | Adobe Digital Enterprise Platform Data Services for Java EE 3

Runtime Versions: | Flash Player 9, AIR 1.1

Constructs an instance of the default conflict detection mechanism.

Parameters

| `dataService:ConcreteDataService` — ConcreteDataService reference to the data service that will use this conflict detector.

Method Detail

### checkCreate

()
method

`public function checkCreate(remoteChange:IChangeObject, localChange:IChangeObject):void`

Language Version: | ActionScript 3.0

Product Version: | Adobe Digital Enterprise Platform Data Services for Java EE 3

Runtime Versions: | Flash Player 9, AIR 1.1

Called by the DataService when a create operation is pushed/processed from the remote destination.

Parameters

| `remoteChange:IChangeObject` — IChangeObject representing the remote change being processed.
| `localChange:IChangeObject` — IChangeObject representing any local changes made to the same object referenced by the `remoteChange` parameter. This value can be `null` if no local changes have been made to the item represented by the `remoteChange` parameter.

### checkDelete

()
method

`public function checkDelete(remoteChange:IChangeObject, localChange:IChangeObject):void`

Language Version: | ActionScript 3.0

Product Version: | Adobe Digital Enterprise Platform Data Services for Java EE 3

Runtime Versions: | Flash Player 9, AIR 1.1

Called by the DataService when a delete operation is pushed/processed from the remote destination.

Parameters

| `remoteChange:IChangeObject` — IChangeObject representing the remote change being processed.
| `localChange:IChangeObject` — IChangeObject representing any local changes made to the same object referenced by the `remoteChange` parameter. This value can be `null` if no local changes have been made to the item represented by the `remoteChange` parameter.

### checkRemoveFromFill

()
method

`public function checkRemoveFromFill(localChange:IChangeObject, fillParameters:Object):void`

Language Version: | ActionScript 3.0

Product Version: | Adobe Digital Enterprise Platform Data Services for Java EE 3

Runtime Versions: | Flash Player 9, AIR 1.1

Called by the DataService when a remove from fill operation is pushed/processed from the remote destination.

Parameters

| `localChange:IChangeObject` — IChangeObject representing the local version of the item that the server is telling us to remove from the specified dill
| `fillParameters:Object` — fill parameters identifying the fill from which the item is to be removed.

### checkUpdate

()
method

`public function checkUpdate(remoteChange:IChangeObject, localChange:IChangeObject):void`

Language Version: | ActionScript 3.0

Product Version: | Adobe Digital Enterprise Platform Data Services for Java EE 3

Runtime Versions: | Flash Player 9, AIR 1.1

Called by the DataService when an update operation is pushed/processed from the remote destination.

Parameters

| `remoteChange:IChangeObject` — IChangeObject representing the remote change being processed.
| `localChange:IChangeObject` — IChangeObject representing any local changes made to the same object referenced by the `remoteChange` parameter. This value can be `null` if no local changes have been made to the item represented by the `remoteChange` parameter.

Examples How to use this example
Copy

     override public function checkCreate(remoteChange:IChangeObject,
                                          localChange:IChangeObject):void
     {
         // if we have created a local item that is the same item as the remote
         // change then we have a conflict
         if (localChange != null &&
             ObjectUtil.compare(remoteChange.identity, localChange.identity) == 0)
         {
             remoteChange.conflict("Local created item is in conflict with remotely created item",
                                   localChange.changedPropertyNames);
         }
     }

     override public function checkDelete(remoteChange:IChangeObject,
                                          localChange:IChangeObject):void
     {
         // if we have an update locally for an item that was deleted remotely
         // that is considered a conflict.
         if (localChange != null)
         {
             if (localChange.isUpdate())
             {
                 remoteChange.conflict("Local item was updated and is in conflict with pushed delete.",
                                       localChange.changedPropertyNames);
             }
         }
     }

     override public function checkUpdate(remoteChange:IChangeObject,
                                          localChange:IChangeObject):void
     {
         // get a list of all of the changed properties
         var changes:Array = remoteChange.changedPropertyNames;
         // get the remote state of the item's properties
         var newVersion:Object = remoteChange.newVersion;
         var prevVersion:Object = localChange.previousVersion;
         // properties will be in conflict if the old value of a property on the
         // local item is different from the same property value of the new version
         // of the remote item.
         var conflictingProps:Array = [];
         for (var i:int=0; i<changes.length; i++)
         {
             var prop:Object = changes[i]; // could be a String or QName
             if (ObjectUtil.compare(prevVersion[prop], newVersion[prop]) != 0)
             {
                 conflictingProps.push(prop);
             }
         }

         if (conflictingProps.length > 0)
         {
             remoteChange.conflict("Local item has changes to properties that conflict with remote change.",
                                   conflictingProps);
         }
     }

© 2015 Adobe Systems Incorporated. All rights reserved.
Mon Apr 10 2017, 12:28 PM -07:00