 	import flash.net.URLRequest;
 	import flash.utils.getQualifiedClassName;
 	
+	import mx.rpc.AsyncToken;
 	import mx.rpc.events.FaultEvent;
 	import mx.rpc.events.ResultEvent;
 	import mx.utils.StringUtil;

		}
		
		/**
		 * Called when url session state changes
		 */		
		protected function handleURLChange():void
		{
			if (detectLinkableObjectChange(handleURLChange, url) && url.value)
			{
				// if url is specified, do not use csvDataString
				csvData.setSessionState(null);
				addAsyncResponder(
					WeaveAPI.URLRequestUtils.getURL(this, new URLRequest(url.value), URLLoaderDataFormat.TEXT),
					handleCSVDownload,
					handleCSVDownloadError,
					url.value
				);
			}
		}
		
		/**
		 * This gets called as a grouped callback.
		 */		
		override protected function initialize():void
		{
			handleURLChange();
			
			// recalculate all columns previously requested because CSV data may have changed.
			refreshAllProxyColumns();

	import weave.api.data.IQualifiedKey;
	import weave.api.data.IWeaveTreeNode;
	import weave.api.detectLinkableObjectChange;
	import weave.api.disposeObject;
	import weave.api.getCallbackCollection;
	import weave.api.getLinkableOwner;
	import weave.api.linkableObjectIsBusy;
	import weave.api.newLinkableChild;
	import weave.api.registerLinkableChild;
	import weave.api.reportError;
	import weave.core.LinkablePromise;
	import weave.core.LinkableString;
	import weave.core.LinkableVariable;
	import weave.data.AttributeColumns.DateColumn;
