Part of Tapestry 5 is "simplify, simplify". HiveMind had qualified
service ids and service visibility, but with the move to Tapestry 5,
prompted by other containers such as Guice, I started to question why
some of those features are in place. I found that all the "private"
services were in one of the internal packages, for example. And,
ultimately, I didn't want to wall users off from any of the
functionality, they should take "internal" to be a very important
caution.
The visibility concerns also led to some unwanted ambiguities around
OrderedConfigurations and decorators. How can you order things when
the other ids are not known? Does "before:*" mean before all, or just
before the objects whose ids are visible? Etc.
On Wed, Jul 30, 2008 at 6:57 AM, Michael Zehender
<[EMAIL PROTECTED]> wrote:
> May I ask why the decision was made to strip it out?
>
> I'm sorry, I don't want to be rude but I'd just like to know. Maybe
> I'd need to redesign a few things if I understand ...
>
> Thanks,
> Michael
>
> 2008/7/30, Howard Lewis Ship <[EMAIL PROTECTED]>:
>> This is actually a feature of Tapestry IoC that was stripped out long
>> ago (that is, private services within modules). HiveMind, the
>> precursor to Tapestry 5 IoC, has this feature.
>>
>> On Wed, Jul 30, 2008 at 1:56 AM, Michael Zehender
>> <[EMAIL PROTECTED]> wrote:
>> > Hello Renat,
>> >
>> > I'm currently building a product that will integrate with 3rd party
>> > modules.
>> >
>> > I want them to use only the published services to prevent them of
>> > developing
>> > bad hacks using the
>> > Internal Services instead, which might change from version to version. I
>> > want to provide backwards
>> > compatibility for the published services only and don't want to run into
>> > conflicts because of them
>> > using internal services.
>> >
>> > These 3rd party modules 'depend' on the products core services, they also
>> > contribute to the
>> > configuration of some services (but these are also published).
>> >
>> > Michael
>> >
>> > On Jul 30, 2008, at 10:26 AM, Renat Zubairov wrote:
>> >
>> >> Hello Michael,
>> >>
>> >> Would would be the usecases for this feature? Why would you need it?
>> >> Are you also planning to have versions for the modules?
>> >> How are dependencies between the modules are resolved?
>> >>
>> >> Renat
>> >>
>> >> 2008/7/30 Michael Zehender <[EMAIL PROTECTED]>:
>> >>>
>> >>> Hi,
>> >>>
>> >>> I'm just looking for a way to configure the visibility of services within
>> >>> the IoC container. The target would be
>> >>> have module internal services i.e. these internal services can be
>> >>> injected
>> >>> to services within the same module only.
>> >>>
>> >>> A short example to illustrate, in the MyCoreModule I want to hide the
>> >>> configuration reader and the category factory:
>> >>>
>> >>> @SubModule( {
>> >>> MySubModule.class
>> >>> })
>> >>> @Marker(MyCore.class)
>> >>> public class MyCoreModule
>> >>> {
>> >>> public static void bind(ServiceBinder binder)
>> >>> {
>> >>> binder.bind(CategoryFactory.class,
>> >>> CategoryFactoryImpl.class).private();
>> >>> binder.bind(ConfigurationReader.class,
>> >>> ConfigurationReaderImpl.class).private();
>> >>> binder.bind(ConfigurationProvider.class,
>> >>> ConfigurationProviderImpl.class);
>> >>> binder.bind(ConfigurationStartup.class,
>> >>> ConfigurationStartupImpl.class);
>> >>> binder.bind(SystemControl.class, SystemControlImpl.class);
>> >>> }
>> >>>
>> >>> @EagerLoad
>> >>> public static Startup buildStartup(final List<StartupItem>
>> >>> startupItems, Logger logger)
>> >>> {
>> >>> return new StartupImpl(logger, startupItems);
>> >>> }
>> >>> }
>> >>>
>> >>> Now we have a second Module:
>> >>>
>> >>> @Marker(MySub.class)
>> >>> public class MySubModule
>> >>> {
>> >>> public static void bind(ServiceBinder binder)
>> >>> {
>> >>> // ...
>> >>> }
>> >>>
>> >>> public static SomeService buildSomeService(CategoryFactory factory)
>> >>> {
>> >>> // shouldn't be work ! a service not found exception would
>> >>> be
>> >>> the nicest ...
>> >>> return ...;
>> >>> }
>> >>> }
>> >>>
>> >>> Is this possible? If not is there a plan to implement it?
>> >>>
>> >>> Thanks,
>> >>> Michael
>> >>>
>> >>>
>> >>> ---------------------------------------------------------------------
>> >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >>> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>>
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> Best regards,
>> >> Renat Zubairov
>> >>
>> >> ---------------------------------------------------------------------
>> >> 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]
>> >
>> >
>>
>>
>>
>> --
>> Howard M. Lewis Ship
>>
>> Creator Apache Tapestry and Apache HiveMind
>>
>> ---------------------------------------------------------------------
>> 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]
>
>
--
Howard M. Lewis Ship
Creator Apache Tapestry and Apache HiveMind
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]