So, in a webapp environment what is the best place to hold the registry? Is it the Global? Or do you think pages will also be a part of the registry that there will be no need at all for a registry reference, that is of course after Tapestry is refactored?

-Harish

Howard M. Lewis Ship wrote:

I'm thinking you are right ... its the balance of convienience vs. correctness.  
Certainly, no
service implementation should ever use HiveMind.getDefault() ... the BuilderFactory 
means they never
need to find out the registry at all.  The idea was to provide a convienient place for 
application
code to get at the registry, to get at services.

Still, I'm now leaning in your direction (removing it); it has the potential to cause 
too many
problems once you introduce class loaders and the like.

--
Howard M. Lewis Ship
Creator, Tapestry: Java Web Components
http://jakarta.apache.org/tapestry
http://jakarta.apache.org/commons/sandbox/hivemind/
http://javatapestry.blogspot.com



-----Original Message-----
From: Essl Christian [mailto:[EMAIL PROTECTED] Sent: Friday, September 12, 2003 10:57 AM
To: [EMAIL PROTECTED]
Subject: [HiveMind] I don like HiveMind.getDefault and setDefault(Registry)



The reason I don't like this is because I guess it can lead to quite some problems and it is not realy needed.


Just imagine your app uses HiveMind and some api uses HiveMind internally but does not document (it is just internal why should it?). Both register with setDefault(). Than you have a problem which is not realy easy to find.

The same can happen everywhere where there are different ClassLoaders. Think of a tomcat setup where HiveMind is in the RootClassLoader. Imagine two different web-apps use HiveMinde (and I think this will be no rare case). Each registers its own Registry. Both will end up sharing one Registry and which one is more or less a matter of luck. This is realy hard to debug.

Both Service and user code which use the getDefault() will be more or less useless.

You also don't realy need the getDefault(). Services should take the Registry to which they belong from the initialize() method or let it set as a property. And user code should provide its own way to access its service. A user defined static method could be enough (its not realy hard to implement).

So I want to recommend (because HiveMind is quite new) to just remove the methods or deprecate them, before users start using them.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Reply via email to