Hi all!
I use a spring alias which causes me some headache, because I get
Caused by: org.apache.tapestry5.ioc.internal.OperationException: Spring
context contains 2 beans assignable to type mypackage.IService:
myPackage.IServiceAlias, mypackage.IService.
at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:90)
at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
at
org.apache.tapestry5.internal.spring.SpringModuleDef$4$2.provide(SpringModuleDef.java:268)
at
org.apache.tapestry5.internal.spring.SpringModuleDef$4$3.provide(SpringModuleDef.java:290)
at
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:48)
at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
at
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:41)
at
$MasterObjectProvider_1285a834ec0.provide($MasterObjectProvider_1285a834ec0.java)
When looking at the T5 code I see the following:
public void contribute(final ModuleBuilderSource moduleSource,
final ServiceResources resources,
final OrderedConfiguration configuration)
{
final OperationTracker tracker = resources.getTracker();
final ApplicationContext context =
resources.getService("ApplicationContext", ApplicationContext.class);
final ObjectProvider springBeanProvider = new ObjectProvider()
{
public <T> T provide(Class<T> objectType,
AnnotationProvider annotationProvider,
ObjectLocator locator)
{
Map beanMap = context.getBeansOfType(objectType);
switch (beanMap.size()) {
case 0:
return null;
case 1:
Object bean = beanMap.values().iterator().next();
return objectType.cast(bean);
default:
String message = String.format(
"Spring context contains %d beans
assignable to type %s: %s.",
beanMap.size(),
ClassFabUtils.toJavaClassName(objectType),
InternalUtils.joinSorted(beanMap.keySet()));
throw new IllegalArgumentException(message);
}
}
};
}
and "default" causes my application to RIP
The question to me is now:
a) does T5 help me? can I force the usage of an implementation?
b) can I provide my own spring object provider implementation? if yes,
my strategy would be to look at all entries in the map and to make sure
they are the same object (identity) or at least of same class. In that
case it must be save to return the first entry from the list and
continue, right?
Thanks in advance
Jens
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org