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

Reply via email to