/src/br/com/stimuli/loading/loadingtypes/JSONItem.as
ActionScript | 94 lines | 77 code | 15 blank | 2 comment | 2 complexity | 509f86a1da9e75a5f56b8659c367319b MD5 | raw file
1package br.com.stimuli.loading.loadingtypes {
2
3 import br.com.stimuli.loading.loadingtypes.LoadingItem;
4 import br.com.stimuli.loading.BulkLoader;
5
6
7 import flash.display.*;
8 import flash.net.*;
9 import flash.events.*;
10 import flash.utils.*;
11 import com.adobe.serialization.json.JSON
12 /** @private */
13 public class JSONItem extends LoadingItem {
14
15 public var loader : URLLoader;
16
17 public function JSONItem(url : URLRequest, type : String, uid : String){
18 super(url, type, uid);
19 }
20
21 override public function _parseOptions(props : Object) : Array{
22 return super._parseOptions(props);
23 }
24
25 override public function load() : void{
26 super.load();
27 loader = new URLLoader();
28 loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true);
29 loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true);
30 loader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true);
31 loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true);
32 loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false, 0, true);
33 loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true);
34 try{
35 // TODO: test for security error thown.
36 loader.load(url);
37 }catch( e : SecurityError){
38 onSecurityErrorHandler(_createErrorEvent(e));
39
40 }
41 };
42
43 override public function onErrorHandler(evt : ErrorEvent) : void{
44 super.onErrorHandler(evt);
45 }
46
47 override public function onStartedHandler(evt : Event) : void{
48 super.onStartedHandler(evt);
49 };
50
51 override public function onCompleteHandler(evt : Event) : void {
52 try{
53 _content = JSON.decode(loader.data);
54 }catch(e : Error){
55 _content = null;
56 status = STATUS_ERROR;
57 dispatchEvent(_createErrorEvent(e));
58 }
59 super.onCompleteHandler(evt);
60 };
61
62 override public function stop() : void{
63 try{
64 if(loader){
65 loader.close();
66 }
67 }catch(e : Error){
68 }
69 super.stop();
70 };
71
72 override public function cleanListeners() : void {
73 if(loader){
74 loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false);
75 loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false);
76 loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false);
77 loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false);
78 loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false);
79 loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false);
80 }
81 }
82
83 override public function isText(): Boolean{
84 return true;
85 }
86
87 override public function destroy() : void{
88 stop();
89 cleanListeners();
90 _content = null;
91 loader = null;
92 }
93 }
94}