blob: ce25b450a669790fafe72bf90097f14d6cec37f8 [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package mx.collections
{
import mx.rpc.IResponder;
/**
* The ItemResponder class provides a default implementation of the
* <code>mx.rpc.IResponder</code> interface.
* It represents a responder that lets you specify methods to be
* called when a request is completed, either successfully or with an error.
* The class object can also lets you provide data (a token) to be used by
* the responder methods.
*
* <p>You use an <code>ItemResponder</code> object in the <code>catch</code> statement
* of a try block that might result in getting remote data, as shown in the following
* code:</p>
*
* <pre><code>
* import mx.collections.ItemResponder;
* //...
*
* try
* {
* //...
* cursor.moveNext();
* }
* catch(e:ItemPendingError)
* {
* e.addResponder(new ItemResponder(myResultFunction, myFaultFunction, {info:"..."}));
* }
* </code></pre>
*
* <p>The result method specified must have the following signature:</p>
*
* <code><pre>
* public function myResultFunction(result:Object, token:Object = null):void;
* </pre></code>
*
* <p>The fault method specified must have the following signature:</p>
*
* <code><pre>
* public function myFaultFunction(error:Object, token:Object = null):void;
* </pre></code>
*
* <p>Any other signature will result in a runtime error.</p>
*
* @see mx.collections.errors.ItemPendingError
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public class ItemResponder implements IResponder
{
include "../core/Version.as";
//--------------------------------------------------------------------------
//
// Constructor
//
//--------------------------------------------------------------------------
/**
* Constructs an instance of the responder with the specified data and
* handlers.
*
* @param result Function that should be called when the request has
* completed successfully.
* Must have the following signature:
* <code><pre>
* public function (result:Object, token:Object = null):void;
* </pre></code>
* @param fault Function that should be called when the request has
* completed with errors.
* Must have the following signature:
* <code><pre>
* public function (error:ErrorMessage, token:Object = null):void;
* </pre></code>
* @param token Object [optional] additional information to associate with
* this request. This object is passed to the result and fault functions
* as their second parameter.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function ItemResponder(result:Function, fault:Function, token:Object = null)
{
super();
_resultHandler = result;
_faultHandler = fault;
_token = token;
}
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* This method is called by a service when the return value has been
* received.
*
* @param data Object containing the information returned from the request.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function result(data:Object):void
{
_resultHandler(data, _token);
}
/**
* This method is called by a service when an error has been received.
*
* @param info Object containing the information about the error that
* occured.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function fault(info:Object):void
{
_faultHandler(info, _token);
}
//--------------------------------------------------------------------------
//
// Variables
//
//--------------------------------------------------------------------------
private var _resultHandler:Function;
private var _faultHandler:Function;
private var _token:Object;
}
}