I'd like to provide a new SymbolSource service without the cache
functionnality in order to allow me to change the value of severals of
my symbols.
My problem is that I can't define a new implementation of SymbolSource
interface (like this :
p_Binder.bind(SymbolSource.class,FwlSymbolSource.class).withId("FwlSymbolSource");
) because Tapestry throw me the following exception (I've attached the
whole stack)
/java.lang.RuntimeException: Service interface
org.apache.tapestry5.ioc.services.SymbolSource is matched by 2 services:
FwlSymbolSource, SymbolSource. Automatic dependency resolution requires
that exactly one service implement the interface./
Maybe it's impossible to provide another implementation for this service
interface...
Regards,
Julien.
Kristian Marinkovic a écrit :
hi Julien,
the default SymbolSource is qualified by the @Builtin marker...
eg.:
... build(@Builtin SymbolSource t5SymbolSource)....
are you trying to replace the whole SymbolSource service?
g,
kris
Julien Giovaresco <[EMAIL PROTECTED]>
15.07.2008 17:05
Bitte antworten an
"Tapestry users" <[email protected]>
An
Tapestry users <[email protected]>
Kopie
Thema
Re: [T5] Create a new SymbolSource service
Kristian,
thanks for your reply.
I've already qualified my new implementation of the interface
org.apache.tapestry5.ioc.services.SymbolSource like this :
/p_Binder.bind(SymbolSource.class,
FwlSymbolSource.class).withId("FwlSymbolSource");/
However the "default" implementation of this interface is defined in
TapestryIOCModule class without a service Id.
Regards,
Julien
Kristian Marinkovic a écrit :
hi Julien,
if you want to define two (or more) services with the same
interface you have to qualify them.
if you use the binder method:
public static void bind(ServiceBinder binder)
{
binder.bind(SymbolSource.class, MySymbolSourceImpl.class
).withId("mySymbolSource");
...
or as builder method
public SymbolSource buildMySymbolSource(...) {}
everytime you want to inject your service you'll have to
qualify it as well:
public Interface build(@InjectService("mySymbolsource") SymbolSource
mySymbolSource)
{}
i hope this helps.
g,
kris
Julien Giovaresco <[EMAIL PROTECTED]>
15.07.2008 16:26
Bitte antworten an
"Tapestry users" <[email protected]>
An
[email protected]
Kopie
Thema
[T5] Create a new SymbolSource service
Hi everyone,
I'd like to create a new service implementing the interface
*org.apache.tapestry5.ioc.services.SymbolSource* to remove the cache
functionnality of the Tapestry service *SymbolSourceImpl*.
However I can't create such a service because I've the following
exception :
/Service interface org.apache.tapestry5.ioc.services.SymbolSource is
matched by 2 services: FwlSymbolSource, SymbolSource. Automatic
dependency resolution requires that exactly one service implement the
interface./
Can I prevent this problem ?
Regards,
Julien
java.lang.RuntimeException: java.lang.ClassNotFoundException: caught an
exception while obtaining a class file for
org.apache.tapestry5.corelib.pages.ExceptionReport
at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:256)
at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:238)
at
$ComponentInstantiatorSource_11b2752c67b.findInstantiator($ComponentInstantiatorSource_11b2752c67b.java)
at
org.apache.tapestry5.internal.services.PageElementFactoryImpl.newRootComponentElement(PageElementFactoryImpl.java:257)
at
$PageElementFactory_11b2752c6bb.newRootComponentElement($PageElementFactory_11b2752c6bb.java)
at
org.apache.tapestry5.internal.services.PageLoaderProcessor.loadRootComponent(PageLoaderProcessor.java:413)
at
org.apache.tapestry5.internal.services.PageLoaderProcessor.loadPage(PageLoaderProcessor.java:391)
at
org.apache.tapestry5.internal.services.PageLoaderImpl.loadPage(PageLoaderImpl.java:59)
at $PageLoader_11b2752c6b9.loadPage($PageLoader_11b2752c6b9.java)
at
org.apache.tapestry5.internal.services.PagePoolCache.checkout(PagePoolCache.java:210)
at
org.apache.tapestry5.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:107)
at $PagePool_11b2752c6b8.checkout($PagePool_11b2752c6b8.java)
at
org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:43)
at $RequestPageCache_11b2752c6b7.get($RequestPageCache_11b2752c6b7.java)
at $RequestPageCache_11b2752c6af.get($RequestPageCache_11b2752c6af.java)
at
org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:47)
at
$RequestExceptionHandler_11b2752c69c.handleRequestException($RequestExceptionHandler_11b2752c69c.java)
at
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
at $RequestHandler_11b2752c69f.service($RequestHandler_11b2752c69f.java)
at
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
at $RequestHandler_11b2752c69f.service($RequestHandler_11b2752c69f.java)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84)
at
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:75)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
at $RequestHandler_11b2752c69f.service($RequestHandler_11b2752c69f.java)
at $RequestHandler_11b2752c696.service($RequestHandler_11b2752c696.java)
at
org.apache.tapestry5.services.TapestryModule$11.service(TapestryModule.java:918)
at
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at
$HttpServletRequestFilter_11b2752c695.service($HttpServletRequestFilter_11b2752c695.java)
at
$HttpServletRequestHandler_11b2752c697.service($HttpServletRequestHandler_11b2752c697.java)
at
fr.fwl.util.metrologie.filtres.FiltreMetrologieRequeteHttp.service(FiltreMetrologieRequeteHttp.java:73)
at
$HttpServletRequestHandler_11b2752c697.service($HttpServletRequestHandler_11b2752c697.java)
at
fr.fwl.securite.requete.SecuriteServiceFilter.service(SecuriteServiceFilter.java:63)
at
$HttpServletRequestFilter_11b2752c694.service($HttpServletRequestFilter_11b2752c694.java)
at
$HttpServletRequestHandler_11b2752c697.service($HttpServletRequestHandler_11b2752c697.java)
at
$HttpServletRequestHandler_11b2752c691.service($HttpServletRequestHandler_11b2752c691.java)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:168)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: caught an exception while
obtaining a class file for org.apache.tapestry5.corelib.pages.ExceptionReport
at javassist.Loader.findClass(Loader.java:359)
at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:78)
at javassist.Loader.loadClass(Loader.java:311)
at java.lang.ClassLoader.loadClass(Unknown Source)
at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:252)
... 50 more
Caused by: org.apache.tapestry5.internal.services.TransformationException:
Exception constructing service 'ComponentClassTransformWorker': Error invoking
service builder method
org.apache.tapestry5.services.TapestryModule.buildComponentClassTransformWorker(List)
(at TapestryModule.java:855) (for service 'ComponentClassTransformWorker'):
Error invoking service contribution method
org.apache.tapestry5.services.TapestryModule.contributeComponentClassTransformWorker(OrderedConfiguration,
ObjectLocator, InjectionProvider, ComponentClassResolver): Error invoking
constructor
org.apache.tapestry5.internal.transform.IncludeStylesheetWorker(AssetSource,
RenderSupport, SymbolSource) (at IncludeStylesheetWorker.java:36) (for service
'ComponentClassTransformWorker'): Service interface
org.apache.tapestry5.ioc.services.SymbolSource is matched by 2 services:
FwlSymbolSource, SymbolSource. Automatic dependency resolution requires that
exactly one service implement the interface.
at
org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:164)
at
$ComponentClassTransformer_11b2752c688.transformComponentClass($ComponentClassTransformer_11b2752c688.java)
at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:171)
at javassist.Loader.findClass(Loader.java:340)
... 54 more
Caused by: java.lang.RuntimeException: Exception constructing service
'ComponentClassTransformWorker': Error invoking service builder method
org.apache.tapestry5.services.TapestryModule.buildComponentClassTransformWorker(List)
(at TapestryModule.java:855) (for service 'ComponentClassTransformWorker'):
Error invoking service contribution method
org.apache.tapestry5.services.TapestryModule.contributeComponentClassTransformWorker(OrderedConfiguration,
ObjectLocator, InjectionProvider, ComponentClassResolver): Error invoking
constructor
org.apache.tapestry5.internal.transform.IncludeStylesheetWorker(AssetSource,
RenderSupport, SymbolSource) (at IncludeStylesheetWorker.java:36) (for service
'ComponentClassTransformWorker'): Service interface
org.apache.tapestry5.ioc.services.SymbolSource is matched by 2 services:
FwlSymbolSource, SymbolSource. Automatic dependency resolution requires that
exactly one service implement the interface.
at
org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:75)
at
$ComponentClassTransformWorker_11b2752c6c3._delegate($ComponentClassTransformWorker_11b2752c6c3.java)
at
$ComponentClassTransformWorker_11b2752c6c3.transform($ComponentClassTransformWorker_11b2752c6c3.java)
at
org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:158)
... 57 more
Caused by: java.lang.RuntimeException: Error invoking service builder method
org.apache.tapestry5.services.TapestryModule.buildComponentClassTransformWorker(List)
(at TapestryModule.java:855) (for service 'ComponentClassTransformWorker'):
Error invoking service contribution method
org.apache.tapestry5.services.TapestryModule.contributeComponentClassTransformWorker(OrderedConfiguration,
ObjectLocator, InjectionProvider, ComponentClassResolver): Error invoking
constructor
org.apache.tapestry5.internal.transform.IncludeStylesheetWorker(AssetSource,
RenderSupport, SymbolSource) (at IncludeStylesheetWorker.java:36) (for service
'ComponentClassTransformWorker'): Service interface
org.apache.tapestry5.ioc.services.SymbolSource is matched by 2 services:
FwlSymbolSource, SymbolSource. Automatic dependency resolution requires that
exactly one service implement the interface.
at
org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:87)
at
org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
at
org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:52)
at
org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:50)
at
org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
at
org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:65)
... 60 more
Caused by: java.lang.RuntimeException: Error invoking service contribution
method
org.apache.tapestry5.services.TapestryModule.contributeComponentClassTransformWorker(OrderedConfiguration,
ObjectLocator, InjectionProvider, ComponentClassResolver): Error invoking
constructor
org.apache.tapestry5.internal.transform.IncludeStylesheetWorker(AssetSource,
RenderSupport, SymbolSource) (at IncludeStylesheetWorker.java:36) (for service
'ComponentClassTransformWorker'): Service interface
org.apache.tapestry5.ioc.services.SymbolSource is matched by 2 services:
FwlSymbolSource, SymbolSource. Automatic dependency resolution requires that
exactly one service implement the interface.
at
org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:107)
at
org.apache.tapestry5.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:62)
at
org.apache.tapestry5.ioc.internal.RegistryImpl.addToOrderedConfiguration(RegistryImpl.java:507)
at
org.apache.tapestry5.ioc.internal.RegistryImpl.getOrderedConfiguration(RegistryImpl.java:373)
at
org.apache.tapestry5.ioc.internal.ServiceResourcesImpl.getOrderedConfiguration(ServiceResourcesImpl.java:87)
at
org.apache.tapestry5.ioc.internal.AbstractServiceCreator.addOrderedConfigurationParameter(AbstractServiceCreator.java:131)
at
org.apache.tapestry5.ioc.internal.AbstractServiceCreator.getParameterDefaultsWithConfiguration(AbstractServiceCreator.java:112)
at
org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.getParameterDefaultsWithConfigurations(ServiceBuilderMethodInvoker.java:46)
at
org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:67)
... 65 more
Caused by: java.lang.RuntimeException: Error invoking constructor
org.apache.tapestry5.internal.transform.IncludeStylesheetWorker(AssetSource,
RenderSupport, SymbolSource) (at IncludeStylesheetWorker.java:36) (for service
'ComponentClassTransformWorker'): Service interface
org.apache.tapestry5.ioc.services.SymbolSource is matched by 2 services:
FwlSymbolSource, SymbolSource. Automatic dependency resolution requires that
exactly one service implement the interface.
at
org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:63)
at
org.apache.tapestry5.ioc.internal.ServiceResourcesImpl.autobuild(ServiceResourcesImpl.java:122)
at
org.apache.tapestry5.services.TapestryModule.contributeComponentClassTransformWorker(TapestryModule.java:361)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:95)
... 73 more
Caused by: java.lang.RuntimeException: Service interface
org.apache.tapestry5.ioc.services.SymbolSource is matched by 2 services:
FwlSymbolSource, SymbolSource. Automatic dependency resolution requires that
exactly one service implement the interface.
at
org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:535)
at
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:46)
at
$MasterObjectProvider_11b2752c669.provide($MasterObjectProvider_11b2752c669.java)
at
org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:627)
at
org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:681)
at
org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:49)
at
org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameterValue(InternalUtils.java:209)
at
org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:239)
at
org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParametersForConstructor(InternalUtils.java:227)
at
org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:47)
... 80 more---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]