Packagemx.utils
Classpublic dynamic class ObjectProxy
InheritanceObjectProxy Inheritance flash.utils.Proxy
Implementsflash.utils.IExternalizable, IPropertyChangeNotifier

This class provides the ability to track changes to an item managed by this proxy. Any number of objects can "listen" for changes on this object, by using the addEventListener() method.


Example
  import mx.events.PropertyChangeEvent;
  import mx.utils.ObjectUtil;
  import mx.utils.ObjectProxy;
  import mx.utils.StringUtil;
   var a:Object = { name: "Tyler", age: 5, ssnum: "555-55-5555" };
  var p:ObjectProxy = new ObjectProxy(a);
  p.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateHandler);
  p.name = "Jacey";
  p.age = 2;
  delete p.ssnum;
   // handler function
  function updateHandler(event:ChangeEvent):void
  {
      trace(StringUtil.substitute("updateHandler('{0}', {1}, {2}, {3}, '{4}')",
                                     event.kind,
                                     event.property,
                                     event.oldValue,
                                     event.newValue,
                                     event.target.object_proxy::UUID));
  }
 
  // The trace output appears as:
  // updateHandler('opUpdate', name, Jacey, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
  // updateHandler('opUpdate', age, 2, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
  // updateHandler('opDelete', ssnum, null, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
  



Public Properties
 PropertyDefined by
  uid : String
The unique identifier for this object.
ObjectProxy
Protected Properties
 PropertyDefined by
  dispatcher : EventDispatcher
A reference to the EventDispatcher for this proxy.
ObjectProxy
  notifiers : Object
A hashmap of property change notifiers that this proxy is listening for changes from; the key of the map is the property name.
ObjectProxy
  object : Object
[read-only] The object being proxied.
ObjectProxy
  propertyList : Array
Contains a list of all of the property names for the proxied object.
ObjectProxy
  proxyClass : Class
Indicates what kind of proxy to create when proxying complex properties.
ObjectProxy
  type : QName
The qualified type name associated with this object.
ObjectProxy
Public Methods
 MethodDefined by
  
ObjectProxy(item:Object = null, uid:String = null, proxyDepth:int = -1)
Initializes this proxy with the specified object, id and proxy depth.
ObjectProxy
  
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object so that the listener receives notification of an event.
ObjectProxy
  
dispatchEvent(event:Event):Boolean
Dispatches an event into the event flow.
ObjectProxy
  
hasEventListener(type:String):Boolean
Checks whether there are any event listeners registered for a specific type of event.
ObjectProxy
  
Called when a complex property is updated.
ObjectProxy
  
readExternal(input:IDataInput):void
Since Flex only uses ObjectProxy to wrap anonymous objects, the server flex.messaging.io.ObjectProxy instance serializes itself as a Map that will be returned as a plain ActionScript object.
ObjectProxy
  
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Removes an event listener.
ObjectProxy
  
willTrigger(type:String):Boolean
Checks whether an event listener is registered with this object or any of its ancestors for the specified event type.
ObjectProxy
  
writeExternal(output:IDataOutput):void
Since Flex only serializes the inner ActionScript object that it wraps, the server flex.messaging.io.ObjectProxy populates itself with this anonymous object's contents and appears to the user as a Map.
ObjectProxy
Protected Methods
 MethodDefined by
  
callProperty(name:*, ... rest):*
Returns the value of the proxied object's method with the specified name.
ObjectProxy
  
deleteProperty(name:*):Boolean
Deletes the specified property on the proxied object and sends notification of the delete to the handler.
ObjectProxy
  
getComplexProperty(name:*, value:*):*
Provides a place for subclasses to override how a complex property that needs to be either proxied or daisy chained for event bubbling is managed.
ObjectProxy
  
getProperty(name:*):*
Returns the specified property value of the proxied object.
ObjectProxy
  
setProperty(name:*, value:*):void
Updates the specified property on the proxied object and sends notification of the update to the handler.
ObjectProxy
  
This method creates an array of all of the property names for the proxied object.
ObjectProxy
Property detail
dispatcherproperty
protected var dispatcher:EventDispatcher

A reference to the EventDispatcher for this proxy.

notifiersproperty 
protected var notifiers:Object

A hashmap of property change notifiers that this proxy is listening for changes from; the key of the map is the property name.

objectproperty 
object:Object  [read-only]

The object being proxied.

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

Implementation
    object_proxy function get object():Object
propertyListproperty 
protected var propertyList:Array

Contains a list of all of the property names for the proxied object. Descendants need to fill this list by overriding the setupPropertyList() method.

proxyClassproperty 
protected var proxyClass:Class

Indicates what kind of proxy to create when proxying complex properties. Subclasses should assign this value appropriately.

typeproperty 
type:QName  [read-write]

The qualified type name associated with this object.

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

Implementation
    object_proxy function get type():QName
    object_proxy function set type(value:QName):void
uidproperty 
uid:String  [read-write]

The unique identifier for this object.

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

Implementation
    public function get uid():String
    public function set uid(value:String):void
Constructor detail
ObjectProxy()constructor
public function ObjectProxy(item:Object = null, uid:String = null, proxyDepth:int = -1)

Initializes this proxy with the specified object, id and proxy depth.

Parameters
item:Object (default = null) — Object to proxy. If no item is specified, an anonymous object will be constructed and assigned.
 
uid:String (default = null) — String containing the unique id for this object instance. Required for IPropertyChangeNotifier compliance as every object must provide a unique way of identifying it. If no value is specified, a random id will be assigned.
 
proxyDepth:int (default = -1) — An integer indicating how many levels in a complex object graph should have a proxy created during property access. The default is -1, meaning "proxy to infinite depth".

Example
      import mx.events.PropertyChangeEvent;
      import mx.utils.ObjectUtil;
      import mx.utils.ObjectProxy;
      import mx.utils.StringUtil;
           var a:Object = { name: "Tyler", age: 5, ssnum: "555-55-5555" };
      var p:ObjectProxy = new ObjectProxy(a);
      p.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateHandler);
      p.name = "Jacey";
      p.age = 2;
      delete p.ssnum;
           // handler function
      function updateHandler(event:PropertyChangeEvent):void
      {
          trace(StringUtil.substitute("updateHandler('{0}', {1}, {2}, {3}, '{4}')",
                                         event.kind,
                                         event.property,
                                         event.oldValue,
                                         event.newValue,
                                         event.target.uid));
      }
           // trace output
      updateHandler('opUpdate', name, Jacey, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
      updateHandler('opUpdate', age, 2, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
      updateHandler('opDelete', ssnum, null, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
      

Method detail
addEventListener()method
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

Registers an event listener object so that the listener receives notification of an event. For more information, including descriptions of the parameters see addEventListener() in the flash.events.EventDispatcher class.

Parameters
type:String
 
listener:Function
 
useCapture:Boolean (default = false)
 
priority:int (default = 0)
 
useWeakReference:Boolean (default = false)

See also

flash.events.EventDispatcher.addEventListener()
callProperty()method 
flash_proxy override function callProperty(name:*, ... rest):*

Returns the value of the proxied object's method with the specified name.

Parameters
name:* — The name of the method being invoked.
 
... rest — An array specifying the arguments to the called method.

Returns
* — The return value of the called method.
deleteProperty()method 
flash_proxy override function deleteProperty(name:*):Boolean

Deletes the specified property on the proxied object and sends notification of the delete to the handler.

Parameters
name:* — Typically a string containing the name of the property, or possibly a QName where the property name is found by inspecting the localName property.

Returns
Boolean — A Boolean indicating if the property was deleted.
dispatchEvent()method 
public function dispatchEvent(event:Event):Boolean

Dispatches an event into the event flow. For more information, see the flash.events.EventDispatcher class.

Parameters
event:Event — The Event object that is dispatched into the event flow. If the event is being redispatched, a clone of the event is created automatically. After an event is dispatched, its target property cannot be changed, so you must create a new copy of the event for redispatching to work.

Returns
Boolean — Returns true if the event was successfully dispatched. A value of false indicates failure or that preventDefault() was called on the event.

See also

flash.events.EventDispatcher.dispatchEvent()
getComplexProperty()method 
object_proxy function getComplexProperty(name:*, value:*):*

Provides a place for subclasses to override how a complex property that needs to be either proxied or daisy chained for event bubbling is managed.

Parameters
name:* — Typically a string containing the name of the property, or possibly a QName where the property name is found by inspecting the localName property.
 
value:* — The property value.

Returns
* — The property value or an instance of ObjectProxy.
getProperty()method 
flash_proxy override function getProperty(name:*):*

Returns the specified property value of the proxied object.

Parameters
name:* — Typically a string containing the name of the property, or possibly a QName where the property name is found by inspecting the localName property.

Returns
* — The value of the property. In some instances this value may be an instance of ObjectProxy.
hasEventListener()method 
public function hasEventListener(type:String):Boolean

Checks whether there are any event listeners registered for a specific type of event. This allows you to determine where an object has altered handling of an event type in the event flow hierarchy. For more information, see the flash.events.EventDispatcher class.

Parameters
type:String — The type of event

Returns
Boolean — Returns true if a listener of the specified type is registered; false otherwise.

See also

flash.events.EventDispatcher.hasEventListener()
propertyChangeHandler()method 
public function propertyChangeHandler(event:PropertyChangeEvent):void

Called when a complex property is updated.

Parameters
event:PropertyChangeEvent — An event object that has changed.
readExternal()method 
public function readExternal(input:IDataInput):void

Since Flex only uses ObjectProxy to wrap anonymous objects, the server flex.messaging.io.ObjectProxy instance serializes itself as a Map that will be returned as a plain ActionScript object. You can then set the object_proxy object property to this value.

Parameters
input:IDataInput — The source object from which the ObjectProxy is deserialized.
removeEventListener()method 
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void

Removes an event listener. If there is no matching listener registered with the EventDispatcher object, a call to this method has no effect. For more information, see the flash.events.EventDispatcher class.

Parameters
type:String — The type of event.
 
listener:Function — The listener object to remove.
 
useCapture:Boolean (default = false) — Specifies whether the listener was registered for the capture phase or the target and bubbling phases. If the listener was registered for both the capture phase and the target and bubbling phases, two calls to removeEventListener() are required to remove both, one call with useCapture set to true, and another call with useCapture set to false.

See also

flash.events.EventDispatcher.removeEventListener()
setProperty()method 
flash_proxy override function setProperty(name:*, value:*):void

Updates the specified property on the proxied object and sends notification of the update to the handler.

Parameters
name:* — Object containing the name of the property that should be updated on the proxied object.
 
value:* — Value that should be set on the proxied object.
setupPropertyList()method 
protected function setupPropertyList():void

This method creates an array of all of the property names for the proxied object. Descendants must override this method if they wish to add more properties to this list. Be sure to call super.setupPropertyList before making any changes to the propertyList property.

willTrigger()method 
public function willTrigger(type:String):Boolean

Checks whether an event listener is registered with this object or any of its ancestors for the specified event type. This method returns true if an event listener is triggered during any phase of the event flow when an event of the specified type is dispatched to this object or any of its descendants. For more information, see the flash.events.EventDispatcher class.

Parameters
type:String — The type of event.

Returns
Boolean — Returns true if a listener of the specified type will be triggered; false otherwise.

See also

flash.events.EventDispatcher.willTrigger()
writeExternal()method 
public function writeExternal(output:IDataOutput):void

Since Flex only serializes the inner ActionScript object that it wraps, the server flex.messaging.io.ObjectProxy populates itself with this anonymous object's contents and appears to the user as a Map.

Parameters
output:IDataOutput — The source object from which the ObjectProxy is deserialized.