Have you tried turning off the history manger in the html wrapper?  That
might just move the error further down though.

 

Tracy Spratt,

Lariat Services, development services available

  _____  

From: [email protected] [mailto:[email protected]] On
Behalf Of grg_blls
Sent: Thursday, March 19, 2009 2:35 PM
To: [email protected]
Subject: [flexcoders] Re: A ModuleLoader issue

 

Hi Alex, hi Rob,

thanks both for your replies. 

Rob I 've tried your suggestion but it didn't help.. So after visiting
Alex's blog, doing some more reading and further invastigation (debugging)
of my problem, I have come now to the following:
- Alex is right about the Singletons. I traced the exact step where the app
throws that error as in the following code from HistoryManager.as:

private static function get impl():IHistoryManager
{
if (!_impl)
{
_impl = IHistoryManager(
Singleton.getInstance("mx.managers::IHistoryManager"));
}
return _impl;
}

Now as I described in the first place, I was unloading/loading modules by
the standard procedure (and I had the problem). Running the loop as desribed
initially, when the flow reaches the line if (!_impl), the condition
calculates true and goes in to update _impl, and so throws the error (the
second time it runs). 

If instead I don't unload "module1a" the first time client (role=Customer)
is logged out and then he runs again this option that loads again module1a,
the if (!_impl) condition, comes false, jumps to return _impl; line, and all
goes well - no error thrown..

This proves the point Alex said, but now I wonder what good is there to have
a module loaded all the time just in case the client decides to run this
option again.. before actually closing his browser.. I believe this defeats
the purpose and I rather have to consider re-writting that "module1a" in a
totally different style.

I hope this is clear enough.. What is your advise ?

Thank you again for helping me gaining insight in this esoteric problem..

George 

--- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com,
"rob_mcmichael" <rob_mcmich...@...> wrote:
>
> --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com,
Alex Harui <aharui@> wrote:
> >
> > See the modules presentation on my blog. That's the shared-code problem.
Singletons need to be in the main app or a shared-code module.
> > 
> > Alex Harui
> > Flex SDK Developer
> > Adobe Systems Inc.<http://www.adobe. <http://www.adobe.com/> com/>
> > Blog: http://blogs. <http://blogs.adobe.com/aharui> adobe.com/aharui
> > 
> > From: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com
[mailto:flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com]
On Behalf Of grg_blls
> > Sent: Wednesday, March 18, 2009 4:37 AM
> > To: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com
> > Subject: [flexcoders] A ModuleLoader issue
> > 
> > 
> > Hi all,
> > 
> > I have the following problem with my current development. A client is
loging in the system either as customer or admin and accordingly the main
application through module manager loads either "module1" or "module2".
> > If a client is logged as customer (i.e. "module1" is loaded), he is
offered a number of choices, leading to loading one of "module1a",
"module1b", etc.
> > 
> > In every case the procedure is a unload previous/load next module
through:
> > 
> > public function createModule(m:ModuleLoader, s:String):void{
> > m.url = s;
> > m.loadModule();
> > }
> > 
> > public function removeModule(m:ModuleLoader):void {
> > m.unloadModule();
> > }
> > 
> > Finally that client is logged out when finished.
> > 
> > Now if he does a new login as a customer, "module1" loads and offers
again the customers options, but if he tries the same option (which leads to
loading "module1a"), an error is thrown, with the following message from the
Flash Player:
> > 
> > An ActionScript error has occured
> > TypeError: Error #1034: Type Coercion failed: cannot convert
mx.managers::historymanageri...@683d219 to mx.managers.IHistoryManager.
> > at mx.managers::HistoryManager$/get
impl()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\HistoryMan
ager.as:96]
> > at
mx.managers::HistoryManager$/register()[E:\dev\3.0.x\frameworks\projects\fra
mework\src\mx\managers\HistoryManager.as:134]
> > at
mx.containers::ViewStack/commitProperties()[E:\dev\3.0.x\frameworks\projects
\framework\src\mx\containers\ViewStack.as:649]
> > at
mx.containers::TabNavigator/commitProperties()[E:\dev\3.0.x\frameworks\proje
cts\framework\src\mx\containers\TabNavigator.as:504]
> > at
mx.core::UIComponent/validateProperties()[E:\dev\3.0.x\frameworks\projects\f
ramework\src\mx\core\UIComponent.as:5670]
> > at
mx.managers::LayoutManager/validateProperties()[E:\dev\3.0.x\frameworks\proj
ects\framework\src\mx\managers\LayoutManager.as:519]
> > at
mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.0.x\frameworks\p
rojects\framework\src\mx\managers\LayoutManager.as:639]
> > at Function/http://adobe. <http://adobe.com/AS3/2006/builtin::apply>
com/AS3/2006/builtin::apply()
> > at
mx.core::UIComponent/callLaterDispatcher2()[E:\dev\3.0.x\frameworks\projects
\framework\src\mx\core\UIComponent.as:8460]
> > at
mx.core::UIComponent/callLaterDispatcher()[E:\dev\3.0.x\frameworks\projects\
framework\src\mx\core\UIComponent.as:8403]
> > 
> > Any ideas, as to the nature of it and where to look fixing?
> > Thanks all in advance
> > 
> > George
> >
> 
> Try putting this at the start of your module:
> historyManagementEnabled = false;
> 
> It worked for me, but that was with a sub application (may be the same
thing).
> 
> Rob
>



Reply via email to