blob: cf0870323d7510d83d76380f51876e4f63f1e468 [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.messaging.events
{
import org.apache.royale.events.Event;
import mx.messaging.Channel;
import mx.messaging.messages.ErrorMessage;
/**
* The ChannelFaultEvent class is used to propagate channel fault events within the messaging system.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*
* @royalesuppresspublicvarwarning
*/
public class ChannelFaultEvent extends ChannelEvent
{
//--------------------------------------------------------------------------
//
// Static Constants
//
//--------------------------------------------------------------------------
/**
* The FAULT event type; indicates that the Channel faulted.
* <p>The value of this constant is <code>"channelFault"</code>.</p>
*
* <p>The properties of the event object have the following values:</p>
* <table class="innertable">
* <tr><th>Property</th><th>Value</th></tr>
* <tr><td><code>bubbles</code></td><td>false</td></tr>
* <tr><td><code>cancelable</code></td><td>false</td></tr>
* <tr><td><code>channel</code></td><td>The Channel that generated this event.</td></tr>
* <tr><td><code>currentTarget</code></td><td>The Object that defines the
* event listener that handles the event. For example, if you use
* <code>myButton.addEventListener()</code> to register an event listener,
* myButton is the value of the <code>currentTarget</code>. </td></tr>
* <tr><td><code>faultCode</code></td><td>Provides destination-specific
* details of the failure.</td></tr>
* <tr><td><code>faultDetail</code></td><td>Provides access to the
* destination-specific reason for the failure.</td></tr>
* <tr><td><code>faultString</code></td><td>Provides access to the underlying
* reason for the failure if the channel did not raise the failure itself.</td></tr>
* <tr><td><code>reconnecting</code></td><td> Indicates whether the channel
* that generated this event is reconnecting.</td></tr>
* <tr><td><code>rootCause</code></td><td> Provides access to the underlying reason
* for the failure if the channel did not raise the failure itself.</td></tr>
* <tr><td><code>target</code></td><td>The Object that dispatched the event;
* it is not always the Object listening for the event.
* Use the <code>currentTarget</code> property to always access the
* Object listening for the event.</td></tr>
* </table>
* @eventType channelFault
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
public static const FAULT:String = "channelFault";
//--------------------------------------------------------------------------
//
// Static Methods
//
//--------------------------------------------------------------------------
/**
* Utility method to create a new ChannelFaultEvent that doesn't bubble and
* is not cancelable.
*
* @param channel The Channel generating the event.
*
* @param reconnecting Indicates whether the Channel is in the process of
* reconnecting or not.
*
* @param code The fault code.
*
* @param level The fault level.
*
* @param description The fault description.
*
* @param rejected Indicates whether the Channel's connection has been rejected,
* which suppresses automatic reconnection.
*
* @param connected Indicates whether the Channel that generated this event
* is already connected.
*
* @return New ChannelFaultEvent.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
public static function createEvent(channel:Channel, reconnecting:Boolean = false,
code:String = null, level:String = null, description:String = null,
rejected:Boolean = false, connected:Boolean = false):ChannelFaultEvent
{
return new ChannelFaultEvent(ChannelFaultEvent.FAULT, false, false,
channel, reconnecting, code, level, description, rejected, connected);
}
//--------------------------------------------------------------------------
//
// Constructor
//
//--------------------------------------------------------------------------
/**
* Constructs an instance of this event with the specified type.
* Note that the <code>rejected</code> and <code>connected</code> arguments that correspond to properties
* defined by the super-class <code>ChannelEvent</code> were not originally included in this method signature and have been
* added at the end of the argument list to preserve backward compatibility even though this signature differs from
* <code>ChannelEvent</code>'s constructor.
*
* @param type The type of the event.
*
* @param bubbles Indicates whether the event can bubble up the display list hierarchy.
*
* @param cancelable Indicates whether the behavior associated with the event can be prevented.
*
* @param channel The Channel generating the event.
*
* @param reconnecting Indicates whether the Channel is in the process of
* reconnecting or not.
*
* @param code The fault code.
*
* @param level The fault level.
*
* @param description The fault description.
*
* @param rejected Indicates whether the Channel's connection has been rejected,
* which suppresses automatic reconnection.
*
* @param connected Indicates whether the Channel that generated this event
* is already connected.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
public function ChannelFaultEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false,
channel:Channel = null, reconnecting:Boolean = false, code:String = null, level:String = null, description:String = null,
rejected:Boolean = false, connected:Boolean = false)
{
super(type, bubbles, cancelable, channel, reconnecting, rejected, connected);
faultCode = code;
faultString = level;
faultDetail = description;
}
//--------------------------------------------------------------------------
//
// Variables
//
//--------------------------------------------------------------------------
/**
* Provides access to the destination-specific failure code. For more
* specific details see the <code>faultString</code> and
* <code>faultDetails</code> properties.
*
* <p>The format of the fault codes are provided by the remote destination,
* but will typically have the following form: <code>host.operation.error</code>
* or <code>Channel.operation.error</code>.
* For example, <code>"Server.Connect.Failed"</code> and <code>Channel.Connect.Failed</code>.</p>
* <p>
* Channel.Connect.Failed is issued by the Channel class and its subclasses
* (RTMPChannel, AMFChannel, HTTPChannel, and so forth) whenever there is an issue
* in a Channel's connect attempts to the remote destination. Channel.Call.Failed is
* issued by the AMFChannel when the channel is already connected but it gets a
* Call.Failed code from its underlying NetConnection.
* Only the AMFChannel class listens for NetConnection.Call.Failed, which gets
* converted to Channel.Call.Failed.</p>
*
* @see #faultString
* @see #faultDetail
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
public var faultCode:String;
/**
* Provides destination-specific details of the failure.
*
* <p>Typically fault details are a stack trace of an exception thrown at
* the remote destination.</p>
*
* @see #faultString
* @see #faultCode
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
public var faultDetail:String;
/**
* Provides access to the destination-specific reason for the failure.
*
* @see #faultCode
* @see #faultDetail
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
public var faultString:String;
/**
* Provides access to the underlying reason for the failure if the channel did
* not raise the failure itself.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
public var rootCause:Object;
//--------------------------------------------------------------------------
//
// Overridden Methods
//
//--------------------------------------------------------------------------
/**
* Clones the ChannelFaultEvent.
*
* @return Copy of this ChannelFaultEvent.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
[SWFOverride(returns="flash.events.Event"))]
override public function clone():Event
{
var faultEvent:ChannelFaultEvent = new ChannelFaultEvent(type, bubbles, cancelable, channel, reconnecting, faultCode, faultString, faultDetail, rejected, connected);
faultEvent.rootCause = rootCause;
return faultEvent;
}
/**
* Returns a string representation of the ChannelFaultEvent.
*
* @return String representation of the ChannelFaultEvent.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
override public function toString():String
{
return formatToString("ChannelFaultEvent", "faultCode", "faultString", "faultDetail",
"channelId", "type", "bubbles", "cancelable", "eventPhase");
}
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* Creates an ErrorMessage based on the ChannelFaultEvent by copying over
* the faultCode, faultString, faultDetail and rootCause to the new ErrorMessage.
*
* @return The ErrorMessage.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion BlazeDS 4
* @productversion LCDS 3
*/
public function createErrorMessage():ErrorMessage
{
var result:ErrorMessage = new ErrorMessage();
result.faultCode = faultCode;
result.faultString = faultString;
result.faultDetail = faultDetail;
result.rootCause = rootCause;
return result;
}
}
}