Siegfried Goeschl <[EMAIL PROTECTED]> writes:
>Hi Henning,
>not sure about understanding it correctly but I thought about
>implementing such a thingie a while ago ...
>+) lookup a service component in the container, let's say Turbine
>+) if the service component is not found lookup services implementing
>org.apache.avalon.framework.service.ServiceManager (ECM and Merlin)
>+) invoke ServiceManager.hasService() and ServiceManager.lookup() on
>this/these service(s)
>this allows looking up services no matter where they are instantiated as
>long as a unique service name is used.
Yep, this is what I meant.
Regards
Henning
>Henning P. Schmiedehausen wrote:
>>"Eric Pugh" <[EMAIL PROTECTED]> writes:
>>
>>Well, we do already have such a method in Turbine:
>>
>>o.a.t.services.ServiceManager::getService(String serviceName)
>>
>>Currently, an implementation of the ServiceManager is retrieved by calling
>>TurbineServices.getInstance(). This returns the old service broker.
>>
>>The _cool_ thing here would be to return a service manager, that is
>>able to retrieve the Service from the configured container _and_ the
>>old services system. This would make transition from old/bundled
>>services to Avalon really smooth.
>>
>>For the moment (we are still at milestone level) we can
>>experiment. Getting an "Avalon only" implementation of the
>>ServiceManager interface would IMHO be the way to go. In the end, we
>>can make the whole services system pluggable.
>>
>> Regards
>> Henning
>>
>>
>>
>>>I thought about this, and cursed myself as I added it. The reason I added
>>>it was I was happily trying to test the latest -dev version of
>>>fulcrum-mimetype by adding it to Scarab, which was using the old stratum
>>>based version.
>>>
>>>
>>
>>
>>
>>>So, as I added things in, I realized that Scarab every was using a
>>>TurbineMimetypeService, which was a static facade. And I thought, okay,
>>>instead of looking up the component, I'll just do what fulcrum-upload has,
>>>and use a facade. So I added this. But, since I didn't like it, I just
>>>gave it a getService() method to highlight that this is just a helper.
>>>Still, icky.
>>>
>>>
>>
>>
>>
>>>My problem with getting directly the component from the servicebroker is
>>>that I am always loading from different containers. One container in unit
>>>testing, another in running as a webapp.
>>>
>>>
>>
>>
>>
>>>One way I worked around this was to add a static ComponentLocator to my
>>>project that was custom to what I needed.
>>>
>>>
>>
>>
>>
>>>So I would do:
>>>ComponentLocator.getMimeTypeService()
>>>
>>>
>>
>>
>>
>>>and that would do the lookup. If I needed to load up a mock version of
>>>MimeTypeService, well, ComponentLocator has a setMimeTypeService that I
>>>could use, and ComponentLocator.mimeTypeService was a private static
>>>variable...
>>>
>>>
>>
>>
>>
>>>I am now thinking that this is the way I should have gone for Scarab.
>>>Replace all these facades in scarab with a call to
>>>ComponentLocator.getSomeService() that actually would do the lookup if
>>>required and return it..
>>>
>>>
>>
>>
>>
>>>If I do this route, then maybe the other facade guys should be gutted or
>>>removed from Fulcrum? So, in Turbine, we might have a
>>>TurbineCompoenntLocator static class that we use for all the services (like
>>>pool, factory, etc) that turbine needs....
>>>
>>>
>>
>>
>>
>>>What are your opinions?
>>>
>>>
>>
>>
>>
>>>Eric
>>>
>>>
>>
>>
>>
>>>>-----Original Message-----
>>>>From: Henning P. Schmiedehausen [mailto:[EMAIL PROTECTED]
>>>>Sent: Friday, November 05, 2004 9:06 AM
>>>>To: [EMAIL PROTECTED]
>>>>Subject: Re: cvs commit:
>>>>jakarta-turbine-fulcrum/mimetype/api/src/java/org/apache/fulcrum/mimetyp
>>>>e MimeTypeServiceFacade.java
>>>>
>>>>
>>>>[EMAIL PROTECTED] writes:
>>>>
>>>>
>>>>
>>>>> Log:
>>>>> Add a facade helper class
>>>>>
>>>>>
>>>>Personally, I consider the addition of the static facades to the
>>>>Turbine services (yes, I am very guilty of my share) one of the bigger
>>>>mistakes of Turbine.
>>>>
>>>>Is it so hard to get a Service reference from the container?
>>>>
>>>>
>>>>
>>>>> +
>>>>> + /**
>>>>> + * Avalon component lifecycle method
>>>>> + */
>>>>> + public void service( ServiceManager manager) {
>>>>> +
>>>>> + MimeTypeServiceFacade.setMimeTypeService(this);
>>>>> +
>>>>> + }
>>>>>
>>>>>
>>>>Uh; while this looks IoC style, it connects the implementation to the
>>>>facade which is IIRC a violation of the facade pattern (where it
>>>>should be the other way around). And users are in for really nasty
>>>>surprises if their Service implementation forgets to to this setting.
>>>>
>>>>(And while I'm already at it: a "setService()" setter would match the
>>>>getService() getter... :-) )
>>>>
>>>> Regards
>>>> Henning
>>>>
>>>>--
>>>>Dipl.-Inf. (Univ.) Henning P. Schmiedehausen INTERMETA GmbH
>>>>[EMAIL PROTECTED] +49 9131 50 654 0 http://www.intermeta.de/
>>>>
>>>>RedHat Certified Engineer -- Jakarta Turbine Development -- hero for hire
>>>> Linux, Java, perl, Solaris -- Consulting, Training, Development
>>>>
>>>>What is more important to you...
>>>> [ ] Product Security
>>>>or [ ] Quality of Sales and Marketing Support
>>>> -- actual question from a Microsoft customer survey
>>>>
>>>>---------------------------------------------------------------------
>>>>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]
>>>
>>>
>>
>>
>>
>--
>Siegfried Goeschl
>IT20one GmbH
>Bandgasse 2/22
>1070 Wien
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
--
Dipl.-Inf. (Univ.) Henning P. Schmiedehausen INTERMETA GmbH
[EMAIL PROTECTED] +49 9131 50 654 0 http://www.intermeta.de/
RedHat Certified Engineer -- Jakarta Turbine Development -- hero for hire
Linux, Java, perl, Solaris -- Consulting, Training, Development
What is more important to you...
[ ] Product Security
or [ ] Quality of Sales and Marketing Support
-- actual question from a Microsoft customer survey
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]