home *** CD-ROM | disk | FTP | other *** search
- package mx.rpc.xml
- {
- import flash.events.EventDispatcher;
- import mx.core.mx_internal;
- import mx.rpc.AsyncToken;
- import mx.rpc.events.FaultEvent;
- import mx.rpc.events.ResultEvent;
- import mx.rpc.events.XMLLoadEvent;
- import mx.rpc.http.HTTPService;
- import mx.utils.URLUtil;
-
- use namespace mx_internal;
-
- public class XMLLoader extends EventDispatcher
- {
- protected var loader:HTTPService;
-
- public var loadsOutstanding:int;
-
- public function XMLLoader(param1:HTTPService = null)
- {
- super();
- initializeService(param1);
- }
-
- protected function internalLoad(param1:String) : AsyncToken
- {
- ++loadsOutstanding;
- loader.url = param1;
- var _loc2_:AsyncToken = loader.send();
- if(_loc2_ != null)
- {
- _loc2_.location = param1;
- }
- return _loc2_;
- }
-
- protected function initializeService(param1:HTTPService = null) : void
- {
- loader = new HTTPService();
- if(param1 != null)
- {
- loader.mx_internal::asyncRequest = param1.mx_internal::asyncRequest;
- if(param1.destination != null)
- {
- loader.destination = param1.destination;
- }
- loader.useProxy = param1.useProxy;
- loader.rootURL = param1.rootURL;
- loader.headers = param1.headers;
- }
- loader.addEventListener(ResultEvent.RESULT,resultHandler);
- loader.addEventListener(FaultEvent.FAULT,faultHandler);
- loader.resultFormat = HTTPService.RESULT_FORMAT_E4X;
- }
-
- public function load(param1:String) : void
- {
- param1 = getQualifiedLocation(param1);
- internalLoad(param1);
- }
-
- protected function faultHandler(param1:FaultEvent) : void
- {
- --loadsOutstanding;
- dispatchEvent(param1);
- }
-
- protected function getQualifiedLocation(param1:String, param2:String = null) : String
- {
- if(param2 != null)
- {
- param1 = URLUtil.getFullURL(param2,param1);
- }
- else
- {
- param1 = URLUtil.getFullURL(loader.rootURL,param1);
- }
- return param1;
- }
-
- protected function resultHandler(param1:ResultEvent) : void
- {
- --loadsOutstanding;
- var _loc2_:XML = XML(param1.result);
- var _loc3_:AsyncToken = param1.token;
- var _loc4_:String = _loc3_ == null ? null : _loc3_.location;
- var _loc5_:XMLLoadEvent = XMLLoadEvent.createEvent(_loc2_,_loc4_);
- dispatchEvent(_loc5_);
- }
- }
- }
-
-