I don't think the situation has changed since this thread was written: http://tapestry.1045711.n5.nabble.com/How-to-inject-Spring-Bean-by-name-td3817612.html
It would be nice to have the ability to inject by name. Perhaps this wiki entry could provide some hints: http://wiki.apache.org/tapestry/Tapestry5SpringIntegrationAlternative2 On Wed, May 16, 2012 at 4:13 PM, m...@raibledesigns.com <m...@raibledesigns.com> wrote: > Hey all, > > I'm trying to get AppFuse's CRUD generation to work with the latest Tapestry > 5.3.3 release and Spring 3.1. I can't seem to get Tapestry to recognize a > Generics-based Spring class. Here's the code that's generated in > PersonList.java: > > import org.apache.tapestry5.ioc.annotations.Inject; > import org.apache.tapestry5.annotations.Service; > > @Inject > @Service("personManager") > private GenericManager<Person, Long> personManager; > > When I run "mvn test -Dtest=PersonListTest", I get the following stacktrace. > > Running com.company.webapp.pages.PersonListTest > WARN [main] RequestHandler.addDependency(78) | Unable to add > 'SpringMockHttpRequestAndResponse' as a dependency of 'CheckForUpdates', as > that forms a dependency cycle ('CheckForUpdates' depends on itself via > 'SpringMockHttpRequestAndResponse'). The dependency has been ignored. > ERROR [main] Registry.log(127) | Service id 'personManager' is not defined > by any module. > ERROR [main] Registry.log(128) | Operations trace: > ERROR [main] Registry.log(137) | [ 1] Creating instantiator for component > class com.company.webapp.pages.PersonList > ERROR [main] Registry.log(137) | [ 2] Running component class > transformations on com.company.webapp.pages.PersonList > ERROR [main] Registry.log(137) | [ 3] Injecting field > com.company.webapp.pages.PersonList.personManager > ERROR [main] Registry.log(137) | [ 4] Resolving object of type > org.appfuse.service.GenericManager using MasterObjectProvider > ERROR [main] RequestExceptionHandler.handleRequestException(63) | Processing > of request failed with uncaught exception: Error obtaining injected value > for field com.company.webapp.pages.PersonList.personManager: Service id > 'personManager' is not defined by any module. > java.lang.RuntimeException: Error obtaining injected value for field > com.company.webapp.pages.PersonList.personManager: Service id > 'personManager' is not defined by any module. > at > org.apache.tapestry5.internal.transform.InjectWorker$2.run(InjectWorker.java:81) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1116) > at > org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:67) > at > $ComponentClassTransformWorker2_128a2841c22331da.transform(Unknown Source) > at > $ComponentClassTransformWorker2_128a2841c22331ce.transform(Unknown Source) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$3.run(ComponentInstantiatorSourceImpl.java:325) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1116) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.transform(ComponentInstantiatorSourceImpl.java:278) > at > org.apache.tapestry5.internal.plastic.PlasticClassPool.loadAndTransformClass(PlasticClassPool.java:348) > at > org.apache.tapestry5.internal.plastic.PlasticClassLoader.loadClass(PlasticClassLoader.java:38) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at > org.apache.tapestry5.internal.plastic.PlasticClassPool.getClassInstantiator(PlasticClassPool.java:516) > at > org.apache.tapestry5.plastic.PlasticManager.getClassInstantiator(PlasticManager.java:189) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$2.invoke(ComponentInstantiatorSourceImpl.java:234) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$2.invoke(ComponentInstantiatorSourceImpl.java:228) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.createInstantiatorForClass(ComponentInstantiatorSourceImpl.java:226) > at > org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.getInstantiator(ComponentInstantiatorSourceImpl.java:216) > at > $ComponentInstantiatorSource_128a2841c22331cd.getInstantiator(Unknown > Source) > at > org.apache.tapestry5.internal.services.ComponentModelSourceImpl.getModel(ComponentModelSourceImpl.java:34) > at > org.apache.tapestry5.internal.services.ComponentModelSourceImpl.getPageModel(ComponentModelSourceImpl.java:39) > at $ComponentModelSource_128a2841c22331cc.getPageModel(Unknown > Source) > at > org.apache.tapestry5.internal.services.MetaDataLocatorImpl$2.valueForKey(MetaDataLocatorImpl.java:104) > at > org.apache.tapestry5.internal.services.MetaDataLocatorImpl.getSymbolExpandedValueFromCache(MetaDataLocatorImpl.java:119) > at > org.apache.tapestry5.internal.services.MetaDataLocatorImpl.findMeta(MetaDataLocatorImpl.java:99) > at $MetaDataLocator_128a2841c22331c4.findMeta(Unknown Source) > at > org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.isWhitelistOnlyAndNotValid(ComponentEventLinkEncoderImpl.java:510) > at > org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.checkIfPage(ComponentEventLinkEncoderImpl.java:496) > at > org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodePageRenderRequest(ComponentEventLinkEncoderImpl.java:460) > at > org.apache.tapestry5.internal.services.linktransform.LinkTransformerInterceptor.decodePageRenderRequest(LinkTransformerInterceptor.java:68) > at > $ComponentEventLinkEncoder_128a2841c22331af.decodePageRenderRequest(Unknown > Source) > at > org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:41) > at $Dispatcher_128a2841c22331b0.dispatch(Unknown Source) > at $Dispatcher_128a2841c22331a7.dispatch(Unknown Source) > at > org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302) > at > org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) > at $RequestHandler_128a2841c22331a9.service(Unknown Source) > at > org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902) > at $RequestHandler_128a2841c22331a9.service(Unknown Source) > at > org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892) > at $RequestHandler_128a2841c22331a9.service(Unknown Source) > at > org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90) > at $RequestHandler_128a2841c22331a9.service(Unknown Source) > at > org.apache.tapestry5.internal.test.EndOfRequestCleanupFilter.service(EndOfRequestCleanupFilter.java:42) > at $RequestHandler_128a2841c22331a9.service(Unknown Source) > at > com.company.webapp.services.AppTestModule$1.service(AppTestModule.java:37) > at $RequestHandler_128a2841c22331a9.service(Unknown Source) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95) > at > org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119) > at $RequestHandler_128a2841c22331a9.service(Unknown Source) > at $RequestHandler_128a2841c2233199.service(Unknown Source) > at > org.apache.tapestry5.test.PageTester.renderPageAndReturnResponse(PageTester.java:205) > at > org.apache.tapestry5.test.PageTester.renderPage(PageTester.java:176) > at > com.company.webapp.pages.PersonListTest.testList(PersonListTest.java:22) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) > at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) > at > org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) > at > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) > at > org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) > at > org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) > at > org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46) > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) > at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) > at > org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) > at > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) > at > org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) > at org.junit.runners.ParentRunner.run(ParentRunner.java:220) > at > org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) > at > org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35) > at > org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115) > at > org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103) > at $Proxy0.invoke(Unknown Source) > at > org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150) > at > org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91) > at > org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69) > Caused by: org.apache.tapestry5.ioc.internal.OperationException: Service id > 'personManager' is not defined by any module. > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > at > org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:45) > at $MasterObjectProvider_128a2841c223318b.provide(Unknown Source) > at > org.apache.tapestry5.internal.services.DefaultInjectionProvider.provideInjection(DefaultInjectionProvider.java:53) > at $InjectionProvider2_128a2841c22331dd.provideInjection(Unknown > Source) > at $InjectionProvider2_128a2841c22331d7.provideInjection(Unknown > Source) > at > org.apache.tapestry5.internal.transform.InjectWorker$2.run(InjectWorker.java:73) > ... 103 more > > The "personManager" bean is defined in WEB-INF/applicationContext.xml as > follows: > > <bean id="personManager" > class="org.appfuse.service.impl.GenericManagerImpl"> > <constructor-arg> > <bean class="org.appfuse.dao.hibernate.GenericDaoHibernate"> > <constructor-arg value="com.company.model.Person"/> > </bean> > </constructor-arg> > </bean> > > This same code worked fine in previous Tapestry 5.x releases. > > Any advice would be great. > > Thanks, > > Matt > > -- > View this message in context: > http://tapestry.1045711.n5.nabble.com/Tapestry-5-3-3-Spring-3-1-and-Inject-tp5711099.html > Sent from the Tapestry - User mailing list archive at Nabble.com. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > -- Jonathan Barker ITStrategic --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org