Bug and fix, null pointers from ProxyFactory.defineProxy
Closed this issue · 5 comments
GoogleCodeExporter commented
If you write code like so generates null pointer exception:
proxyFactory.defineProxy(LoginService, BasicMethodInvocationInterceptor);
[Fault] exception, information=TypeError: Error #1009: Cannot access a property
or method of a null object reference.
at
org.as3commons.bytecode.proxy.impl::ProxyFactory/buildProxyClass()[C:\projects\a
s3-commons\as3-commons-bytecode\src\main\actionscript\org\as3commons\bytecode\pr
oxy\impl\ProxyFactory.as:406]
at
org.as3commons.bytecode.proxy.impl::ProxyFactory/generateProxyClasses()[C:\proje
cts\as3-commons\as3-commons-bytecode\src\main\actionscript\org\as3commons\byteco
de\proxy\impl\ProxyFactory.as:302]
at
Main$/appcreationCompleteHandler()[/common/mine/as3-commons-sample/src/main/flex
/Main.mxml:50]
at
Main/___Main_Application1_applicationComplete()[/common/mine/as3-commons-sample/
src/main/flex/Main.mxml:6]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.core::UIComponent/dispatchEvent()[E:\dev\4.5.1\frameworks\projects\framework\
src\mx\core\UIComponent.as:13128]
at
mx.managers::SystemManager/preloader_preloaderDoneHandler()[E:\dev\4.5.1\framewo
rks\projects\framework\src\mx\managers\SystemManager.as:2682]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.preloaders::Preloader/displayClassCompleteHandler()[E:\dev\4.5.1\frameworks\p
rojects\framework\src\mx\preloaders\Preloader.as:582]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.preloaders::SparkDownloadProgressBar/initCompleteHandler()[E:\dev\4.5.1\frame
works\projects\framework\src\mx\preloaders\SparkDownloadProgressBar.as:1087]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.preloaders::Preloader/dispatchAppEndEvent()[E:\dev\4.5.1\frameworks\projects\
framework\src\mx\preloaders\Preloader.as:380]
at
mx.preloaders::Preloader/appCreationCompleteHandler()[E:\dev\4.5.1\frameworks\pr
ojects\framework\src\mx\preloaders\Preloader.as:590]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.core::UIComponent/dispatchEvent()[E:\dev\4.5.1\frameworks\projects\framework\
src\mx\core\UIComponent.as:13128]
at mx.core::UIComponent/set
initialized()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent
.as:1818]
at
mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.5.1\frameworks\proje
cts\framework\src\mx\managers\LayoutManager.as:842]
at
mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.5.1\framewor
ks\projects\framework\src\mx\managers\LayoutManager.as:1180]
If you write code like so, no problems:
proxyFactory.defineProxy(LoginService, BasicMethodInvocationInterceptor,
FlexGlobals.topLevelApplication.loaderInfo.applicationDomain);
Original issue reported on code.google.com by sentimen...@gmail.com
on 19 Dec 2011 at 3:47
GoogleCodeExporter commented
If you write code like so, no problems:
proxyFactory.defineProxy(LoginService, BasicMethodInvocationInterceptor,
FlexGlobals.topLevelApplication.loaderInfo.applicationDomain);
Original comment by sentimen...@gmail.com
on 19 Dec 2011 at 3:47
GoogleCodeExporter commented
Indeed correct, bytecode type information is stored per application domain
(since its possible to load classes with the same name yet different
implementations into separate application domains.)
It is therefore necessary to provide the defineProxy() method with the correct
applicationDomain instance.
I'll try and make this clearer in the documentation.
cheers,
Roland
Original comment by ihatelivelyids
on 19 Dec 2011 at 7:02
- Changed state: Done
GoogleCodeExporter commented
IMHO. It might be better then to make the second argument obligatory or to
throw a more descriptive Error in order to point the user in the right
direction.
Original comment by sentimen...@gmail.com
on 21 Dec 2011 at 11:12
GoogleCodeExporter commented
Hey there, sorry for the really late reply here, but I've added a more
descriptive error. It know suggests to check whether the defineProxy() method
receives the correct applicationdomain instance.
I hope that'll make things a bit clearer.
Original comment by ihatelivelyids
on 23 Mar 2012 at 4:40
- Changed state: Fixed
GoogleCodeExporter commented
Thanks Bro
Original comment by sentimen...@gmail.com
on 26 Mar 2012 at 11:37