not a bug.  this is correct behavior!

if you declare multiple ioc services with the same interface you have
to qualifiy them with an id. otherwise the ioc container wont know which
service instance of the HibernateConfigurer interface to inject

in your use case you could also contribute the HibernateConfigurer
directly...

public void 
contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer> 
config, ObjectLocator locator)
{
    config.add(locator.proxy(HibernateConfigurer.class, 
MyImplementation.class));
    // or
    config.add(locator.autobuild(MyOtherImplementation.class));
}

g,
kris




Imants Firsts <[EMAIL PROTECTED]> 
27.11.2008 17:37
Bitte antworten an
"Tapestry users" <users@tapestry.apache.org>


An
users@tapestry.apache.org
Kopie

Thema
[T5] Bug in HibernateModule?







Hi!

I am getting the following exception if I have a service in my application 
that implements HibernateConfigurer and I contribute it to 
HibernateSessionSource.

org.apache.tapestry5.ioc.internal.OperationException
Service interface org.apache.tapestry5.hibernate.HibernateConfigurer is 
matched by 3 services: DefaultHibernateConfigurer, 
HibernateAdministration, HibernateInterceptorConfigurer. Automatic 
dependency resolution requires that exactly one service implement the 
interface.

The problem is fixed by adding the 
@InjectService("DefaultHibernateConfigurer") annotation to the 
contributeHibernateSessionSource defaultHibernateConfigurer parameter.

Current declaration:
public static void 
contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer> 
config, HibernateConfigurer defaultHibernateConfigurer)

Fixed declaration:
public static void 
contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer> 
config, @InjectService("DefaultHibernateConfigurer") HibernateConfigurer 
defaultHibernateConfigurer)


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


Reply via email to