If your code or the code you are testing is using context assets (which tapestry-jpa does), you need to set the context: ApplicationGlobals globals = registry.getObject(ApplicationGlobals.class, null); globals.storeContext(new PageTesterContext(contextPath)); registry.performRegistryStartup();
(From PageTester) Kalle On Fri, Feb 24, 2012 at 5:34 AM, Serge Eby <sd...@hotmail.com> wrote: > Hi, > > I am using the spock snapshot (0.6) and when tapestry-jpa (5.3.2) is added, > I am getting this error: > > --- excerpt ---- > > java.lang.RuntimeException: Exception constructing service > 'RegistryStartup': Error invoking service contribution method > org.apache.tapestry5.jpa.JpaModule.startupEarly(EntityManagerManager, > boolean): Exception constructing service 'EntityManagerSource': Coercion of > /META-INF/persistence.xml to type org.apache.tapestry5.ioc.Resource (via > String --> org.apache.tapestry5.ioc.Resource) failed: Exception constructing > service 'AssetSource': Error invoking constructor public > org.apache.tapestry5.internal.services.AssetSourceImpl(org.apache.tapestry5.ioc.services.ThreadLocale,java.util.Map,org.apache.tapestry5.ioc.services.SymbolSource): > Exception constructing service 'ContextAssetFactory': Error invoking method > public org.apache.tapestry5.services.AssetFactory > org.apache.tapestry5.services.TapestryModule.buildContextAssetFactory(org.apache.tapestry5.services.ApplicationGlobals,org.apache.tapestry5.services.assets.AssetPathConstructor,org.apache.tapestry5.services.AssetPathConverter): > java.lang.AssertionError > at > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:75) > at > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:322) > at > org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80) > at > org.spockframework.tapestry.TapestryInterceptor.createAndStartupRegistry(TapestryInterceptor.java:98) > > ..... > > ---- end excerpt ------- > > The test class looks like this: > > @SubModule([TapestryModule, JpaModule, AppModule]) > class JPACrudDAOSpec extends Specification { > > def "dummy test"() { > expect: > name.size() == length > > where: > name | length > "Bob" | 3 > "Dylan" | 5 > } > } > > > > The standard output has a little bit more information but I can't figure out > why the assets are not found. > > > --- standard output --- > [INFO] o.a.t.i.RegistryBuilder Adding module definition for class > org.apache.tapestry5.ioc.services.TapestryIOCModule > [INFO] o.a.t.i.RegistryBuilder Adding module definition for class > org.spockframework.tapestry.ExtensionModule > [INFO] o.a.t.i.RegistryBuilder Adding module definition for class > org.apache.tapestry5.services.TapestryModule > [INFO] o.a.t.i.RegistryBuilder Adding module definition for class > org.apache.tapestry5.internal.services.InternalModule > [INFO] o.a.t.i.RegistryBuilder Adding module definition for class > org.apache.tapestry5.services.assets.AssetsModule > [INFO] o.a.t.i.RegistryBuilder Adding module definition for class > org.apache.tapestry5.services.pageload.PageLoadModule > [INFO] o.a.t.i.RegistryBuilder Adding module definition for class > com.example.newapp.services.AppModule > [INFO] o.a.t.i.RegistryBuilder Adding module definition for class > org.apache.tapestry5.jpa.JpaModule > [ERROR] o.a.t.i.Registry Error invoking method public > org.apache.tapestry5.services.AssetFactory > org.apache.tapestry5.services.TapestryModule.buildContextAssetFactory(org.apache.tapestry5.services.ApplicationGlobals,org.apache.tapestry5.services.assets.AssetPathConstructor,org.apache.tapestry5.services.AssetPathConverter): > java.lang.AssertionError > [ERROR] o.a.t.i.Registry Operations trace: > [ERROR] o.a.t.i.Registry [ 1] Realizing service RegistryStartup > [ERROR] o.a.t.i.Registry [ 2] Instantiating service RegistryStartup > implementation via > org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List) (at > RegistryStartup.java:36) via > org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at > TapestryIOCModule.java:49) > [ERROR] o.a.t.i.Registry [ 3] Creating plan to instantiate > org.apache.tapestry5.ioc.internal.services.RegistryStartup via public > org.apache.tapestry5.ioc.internal.services.RegistryStartup(org.slf4j.Logger,java.util.List) > [ERROR] o.a.t.i.Registry [ 4] Determining injection value for parameter #2 > (java.util.List) > [ERROR] o.a.t.i.Registry [ 5] Collecting ordered configuration for service > RegistryStartup > [ERROR] o.a.t.i.Registry [ 6] Invoking > org.apache.tapestry5.jpa.JpaModule.startupEarly(EntityManagerManager, > boolean) (at JpaModule.java:183) > [ERROR] o.a.t.i.Registry [ 7] Realizing service EntityManagerSource > [ERROR] o.a.t.i.Registry [ 8] Instantiating service EntityManagerSource > implementation via > org.apache.tapestry5.internal.jpa.EntityManagerSourceImpl(Logger, Resource, > PersistenceUnitConfigurer, Map) (at EntityManagerSourceImpl.java:56) via > org.apache.tapestry5.jpa.JpaModule.bind(ServiceBinder) (at > JpaModule.java:44) > [ERROR] o.a.t.i.Registry [ 9] Creating plan to instantiate > org.apache.tapestry5.internal.jpa.EntityManagerSourceImpl via public > org.apache.tapestry5.internal.jpa.EntityManagerSourceImpl(org.slf4j.Logger,org.apache.tapestry5.ioc.Resource,org.apache.tapestry5.jpa.PersistenceUnitConfigurer,java.util.Map) > [ERROR] o.a.t.i.Registry [10] Determining injection value for parameter #2 > (org.apache.tapestry5.ioc.Resource) > [ERROR] o.a.t.i.Registry [11] Resolving object of type > org.apache.tapestry5.ioc.Resource using MasterObjectProvider > [ERROR] o.a.t.i.Registry [12] Realizing service AssetSource > [ERROR] o.a.t.i.Registry [13] Instantiating service AssetSource > implementation via > org.apache.tapestry5.internal.services.AssetSourceImpl(ThreadLocale, Map, > SymbolSource) (at AssetSourceImpl.java:49) via > org.apache.tapestry5.services.TapestryModule.bind(ServiceBinder) (at > TapestryModule.java:308) > [ERROR] o.a.t.i.Registry [14] Invoking constructor > org.apache.tapestry5.internal.services.AssetSourceImpl(ThreadLocale, Map, > SymbolSource) (at AssetSourceImpl.java:49) via > org.apache.tapestry5.services.TapestryModule.bind(ServiceBinder) (at > TapestryModule.java:308) (for service 'AssetSource') > [ERROR] o.a.t.i.Registry [15] Realizing service ContextAssetFactory > [ERROR] o.a.t.i.Registry [16] Instantiating service ContextAssetFactory > implementation via > org.apache.tapestry5.services.TapestryModule.buildContextAssetFactory(ApplicationGlobals, > AssetPathConstructor, AssetPathConverter) (at TapestryModule.java:1225) > [ERROR] o.a.t.i.Registry [17] Constructing service implementation via > org.apache.tapestry5.services.TapestryModule.buildContextAssetFactory(ApplicationGlobals, > AssetPathConstructor, AssetPathConverter) (at TapestryModule.java:1225) > [ERROR] o.a.t.s.T.ContextAssetFactory Construction of service > ContextAssetFactory failed: Error invoking method public > org.apache.tapestry5.services.AssetFactory > org.apache.tapestry5.services.TapestryModule.buildContextAssetFactory(org.apache.tapestry5.services.ApplicationGlobals,org.apache.tapestry5.services.assets.AssetPathConstructor,org.apache.tapestry5.services.AssetPathConverter): > java.lang.AssertionError > org.apache.tapestry5.ioc.internal.OperationException: Error invoking method > public org.apache.tapestry5.services.AssetFactory > org.apache.tapestry5.services.TapestryModule.buildContextAssetFactory(org.apache.tapestry5.services.ApplicationGlobals,org.apache.tapestry5.services.assets.AssetPathConstructor,org.apache.tapestry5.services.AssetPathConverter): > java.lang.AssertionError > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:60) > ~[tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54) > [tapestry-ioc-5.3.2.jar:na] > at $AssetFactory_127522006f5a3dd5.delegate(Unknown Source) [na:na] > at $AssetFactory_127522006f5a3dd5.getRootResource(Unknown Source) > [na:na] > at > org.apache.tapestry5.internal.services.AssetSourceImpl.<init>(AssetSourceImpl.java:60) > [tapestry-core-5.3.2.jar:na] > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > [na:1.6.0_29] > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > [na:1.6.0_29] > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > [na:1.6.0_29] > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > [na:1.6.0_29] > at > org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:48) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66) > [tapestry-ioc-5.3.2.jar:na] > at > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54) > [tapestry-ioc-5.3.2.jar:na] > at $AssetSource_127522006f5a3dbf.delegate(Unknown Source) [na:na] > at $AssetSource_127522006f5a3dbf.resourceForPath(Unknown Source) > [na:na] > > ..... > > > ----------- > > > Has anybody successfully accomplished this? > > > Thanks, > > > /Serge > > -- > View this message in context: > http://tapestry-users.832.n2.nabble.com/T5-3-tapestry-jpa-and-spock-tp7314846p7314846.html > Sent from the Tapestry Users 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 > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org