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]

Reply via email to