Hello again, Do I need to add my CheetahPageTester to some configuration somewhere? J.
2011/7/18 Julien Martin <bal...@gmail.com> > Hello Taha, > > Thanks for your replies! > > Regarding Tapestry + Spring + tests, you put me on the right track yet I > have not being able to get it to work. > > Here is my PageTester class: > > *package com.cheetah.web; > > import org.apache.tapestry5.TapestryFilter; > import org.apache.tapestry5.internal.spring.SpringModuleDef; > import org.apache.tapestry5.ioc.Registry; > import org.apache.tapestry5.ioc.def.ModuleDef; > import org.apache.tapestry5.test.PageTester; > import org.springframework.mock.web.MockServletContext; > > > public class CheetahPageTester extends PageTester { > > private MockServletContext servletContext; > > public CheetahPageTester(String appPackage, String appName, String > contextPath, Class... moduleClasses) { > super(appPackage, appName, contextPath, moduleClasses); > Registry registry = this.getRegistry(); > // Set Tapestry registry in mock servlet context > servletContext.setAttribute(TapestryFilter.REGISTRY_CONTEXT_NAME, > registry); > } > > public CheetahPageTester(String appPackage, String appName) { > super(appPackage, appName); > } > > @Override > protected ModuleDef[] provideExtraModuleDefs() { > // Set spring configuration files location > servletContext = new MockServletContext(); > servletContext.addInitParameter("contextConfigLocation", > "classpath*:cheetah-web-application-context.xml"); > return new ModuleDef[]{ > new SpringModuleDef(servletContext) > }; > } > > > }* > > and the relevant bit in my test class: > * CheetahPageTester tester = new CheetahPageTester(appPackage, appName, > "src/main/webapp");* > > I get exactly the same exception as before... Any idea why? What else might > I have got wrong? > > Regards, > Julien. > > > 2011/7/18 Taha Hafeez <tawus.tapes...@gmail.com> > >> Hi >> >> Follow this : >> http://spreadthesource.com/2010/08/start-spring-application-context-for-your-tapestry-unit-tests/ >> >> regards >> Taha >> >> On Mon, Jul 18, 2011 at 3:01 AM, Julien Martin <bal...@gmail.com> wrote: >> > Hello, >> > >> > I am not able to test my Tapestry application. What is very odd is that >> the >> > exception is not thrown when I run the app in a browser. >> > >> > Can anyone please help? >> > >> > Thanks in advance, >> > >> > Julien. >> > >> > Here is the test class: >> > * >> > public class CreateJobPostingTest { >> > >> > @Test >> > public void test1() { >> > String appPackage = "com.cheetah.web"; >> > String appName = "app"; >> > PageTester tester = new PageTester(appPackage, appName, >> > "src/main/webapp"); >> > Document doc = tester.renderPage("recruiters/createjobposting"); >> > Element createJobPostingForm = >> > doc.getElementById("createJobPostingForm"); >> > Map<String, String> fieldValues = new HashMap<String, String>(); >> > fieldValues.put("jobPostingTitle", "Développeur >> > java/Tapestry/Junit"); >> > fieldValues.put("jobPostingBody", "Poste de de développeur >> agile/XP >> > qui travaillera en TDD exclusivement"); >> > Document docFromForm = tester.submitForm(createJobPostingForm, >> > fieldValues); >> > assertTrue(docFromForm.toString().contains("TDD exclusivement")); >> > } >> > >> > @Test >> > @Ignore >> > public void test2() { >> > assertTrue(false); >> > } >> > }* >> > >> > Here is the class being tested: >> > >> > * >> > import com.cheetah.domain.JobPosting; >> > import org.apache.tapestry5.EventConstants; >> > >> > import org.apache.tapestry5.annotations.*; >> > import org.apache.tapestry5.corelib.components.BeanEditForm; >> > >> > public class CreateJobPosting { >> > >> > @InjectComponent >> > private BeanEditForm createJobPostingForm; >> > >> > @InjectPage >> > private ConfirmationPage confirmationPage; >> > >> > @SessionState >> > @Property >> > private JobPosting jobPosting; >> > >> > @Log >> > @OnEvent(value = EventConstants.VALIDATE) >> > void validateCreateJobPostingForm() { >> > if (createJobPostingForm.isValid()) { >> > if (jobPosting.getJobPostingTitle().contains("toto")) { >> > createJobPostingForm.recordError("pas de toto svp"); >> > } >> > } >> > } >> > >> > @OnEvent(value = EventConstants.SUCCESS) >> > @DiscardAfter >> > Object displayConfirmationPage() { >> > this.confirmationPage.setupJobPosting(this.jobPosting); >> > return ConfirmationPage.class; >> > } >> > >> > >> > }* >> > >> > >> > Here is the second "ConfirmationPage" page: >> > * >> > import com.cheetah.domain.JobPosting; >> > import com.cheetah.service.CheetahService; >> > import org.apache.tapestry5.EventConstants; >> > import org.apache.tapestry5.annotations.DiscardAfter; >> > import org.apache.tapestry5.annotations.OnEvent; >> > import org.apache.tapestry5.annotations.Persist; >> > import org.apache.tapestry5.annotations.Property; >> > import org.apache.tapestry5.ioc.annotations.Inject; >> > import org.apache.tapestry5.ioc.annotations.InjectService; >> > import org.apache.tapestry5.services.ApplicationStateManager; >> > >> > public class ConfirmationPage { >> > >> > @Persist >> > @Property >> > private JobPosting jobPosting; >> > >> > @Inject >> > private CheetahService cheetahService; >> > >> > @Inject >> > private ApplicationStateManager applicationStateManager; >> > >> > void setupJobPosting(JobPosting jobPosting) { >> > this.jobPosting = jobPosting; >> > } >> > >> > @OnEvent(value = EventConstants.ACTION) >> > @DiscardAfter >> > Object saveJobPosting() { >> > cheetahService.persistJobPosting(jobPosting); >> > applicationStateManager.set(JobPosting.class, null); >> > return JobPostingsTable.class; >> > } >> > }* >> > >> > and here is the exception I get: >> > >> > 2879 [main] ERROR org.apache.tapestry5.ioc.Registry - Error obtaining >> > injected value for field >> > com.cheetah.web.pages.recruiters.ConfirmationPage.cheetahService: No >> service >> > implements the interface com.cheetah.service.CheetahService. >> > 2879 [main] ERROR org.apache.tapestry5.ioc.Registry - Operations trace: >> > 2879 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 1] Constructing >> > instance of page class com.cheetah.web.pages.recruiters.CreateJobPosting >> > 2880 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 2] Assembling >> root >> > component for page recruiters/CreateJobPosting >> > 2880 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 3] Transforming >> > component class com.cheetah.web.pages.recruiters.ConfirmationPage >> > 2880 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 4] Injecting >> field >> > cheetahService >> > 2887 [main] ERROR >> > org.apache.tapestry5.services.TapestryModule.RequestExceptionHandler - >> > Processing of request failed with uncaught exception: Exception >> assembling >> > root component of page recruiters/CreateJobPosting: Could not convert >> > 'jobPosting' into a component parameter binding: Exception generating >> > conduit for expression 'jobPosting': java.lang.NoClassDefFoundError: >> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage; >> > java.lang.RuntimeException: Exception assembling root component of page >> > recruiters/CreateJobPosting: Could not convert 'jobPosting' into a >> component >> > parameter binding: Exception generating conduit for expression >> 'jobPosting': >> > java.lang.NoClassDefFoundError: >> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage; >> > at >> > >> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:124) >> > at >> > >> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$000(ComponentAssemblerImpl.java:38) >> > at >> > >> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:82) >> > at >> > >> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:79) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) >> > at >> > >> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) >> > at >> > >> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1063) >> > at >> > >> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:77) >> > at >> > >> org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:182) >> > at >> > >> org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:174) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) >> > at >> > >> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) >> > at >> > >> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1063) >> > at >> > >> org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:173) >> > at $PageLoader_13139f4802e.loadPage($PageLoader_13139f4802e.java) >> > at >> > >> org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:81) >> > at $PageSource_13139f4802d.getPage($PageSource_13139f4802d.java) >> > at >> > >> org.apache.tapestry5.internal.services.NonPoolingRequestPageCacheImpl.get(NonPoolingRequestPageCacheImpl.java:74) >> > at >> $RequestPageCache_13139f4802c.get($RequestPageCache_13139f4802c.java) >> > at >> $RequestPageCache_13139f48026.get($RequestPageCache_13139f48026.java) >> > at >> > >> org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:55) >> > at >> > >> org.apache.tapestry5.services.TapestryModule$36.handle(TapestryModule.java:2326) >> > at >> > >> $PageRenderRequestHandler_13139f4802a.handle($PageRenderRequestHandler_13139f4802a.java) >> > at >> > >> $PageRenderRequestHandler_13139f48024.handle($PageRenderRequestHandler_13139f48024.java) >> > at >> > >> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48) >> > at >> > >> org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47) >> > at >> > >> $ComponentRequestHandler_13139f48025.handlePageRender($ComponentRequestHandler_13139f48025.java) >> > at >> > >> $ComponentRequestHandler_13139f48004.handlePageRender($ComponentRequestHandler_13139f48004.java) >> > at >> > >> org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45) >> > at $Dispatcher_13139f48006.dispatch($Dispatcher_13139f48006.java) >> > at $Dispatcher_13139f47ffe.dispatch($Dispatcher_13139f47ffe.java) >> > at >> > >> org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:321) >> > at >> > >> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) >> > at >> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java) >> > at >> > >> org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:984) >> > at >> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java) >> > at >> > >> org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:974) >> > at >> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java) >> > at >> > >> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90) >> > at >> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java) >> > at >> > >> org.apache.tapestry5.internal.test.EndOfRequestCleanupFilter.service(EndOfRequestCleanupFilter.java:42) >> > at >> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java) >> > at >> > >> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90) >> > at >> > >> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:80) >> > at >> > >> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) >> > at >> > >> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103) >> > at >> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java) >> > at >> $RequestHandler_13139f47fef.service($RequestHandler_13139f47fef.java) >> > at >> > >> org.apache.tapestry5.test.PageTester.renderPageAndReturnResponse(PageTester.java:209) >> > at >> org.apache.tapestry5.test.PageTester.renderPage(PageTester.java:179) >> > at >> > >> com.cheetah.web.pages.CreateJobPostingTest.test1(CreateJobPostingTest.java:21) >> > 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.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) >> > at >> > >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) >> > at >> > >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) >> > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >> > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >> > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >> > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >> > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >> > at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >> > at org.junit.runner.JUnitCore.run(JUnitCore.java:157) >> > at >> > >> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71) >> > at >> > >> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199) >> > at >> > com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) >> > 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 >> com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) >> > Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: >> Could >> > not convert 'jobPosting' into a component parameter binding: Exception >> > generating conduit for expression 'jobPosting': >> > java.lang.NoClassDefFoundError: >> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage; [at >> > classpath:com/cheetah/web/pages/recruiters/CreateJobPosting.tml, line 2] >> > at >> > >> org.apache.tapestry5.internal.services.BindingSourceImpl.newBinding(BindingSourceImpl.java:82) >> > at >> > $BindingSource_13139f48043.newBinding($BindingSource_13139f48043.java) >> > at >> > >> org.apache.tapestry5.internal.services.PageElementFactoryImpl.newBinding(PageElementFactoryImpl.java:184) >> > at >> > >> $PageElementFactory_13139f4803a.newBinding($PageElementFactory_13139f4803a.java) >> > at >> > >> org.apache.tapestry5.internal.pageload.PageLoaderImpl$12.execute(PageLoaderImpl.java:859) >> > at >> > >> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.runActions(ComponentAssemblerImpl.java:217) >> > at >> > >> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:103) >> > ... 76 more >> > Caused by: >> > org.apache.tapestry5.internal.services.PropertyExpressionException: >> > Exception generating conduit for expression 'jobPosting': >> > java.lang.NoClassDefFoundError: >> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage; >> > at >> > >> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.build(PropertyConduitSourceImpl.java:1325) >> > at >> > >> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.create(PropertyConduitSourceImpl.java:1208) >> > at >> > >> $PropertyConduitSource_13139f480cc.create($PropertyConduitSource_13139f480cc.java) >> > at >> > >> org.apache.tapestry5.internal.bindings.PropBindingFactory.newBinding(PropBindingFactory.java:49) >> > at >> > $BindingFactory_13139f480cd.newBinding($BindingFactory_13139f480cd.java) >> > at >> > $BindingFactory_13139f48092.newBinding($BindingFactory_13139f48092.java) >> > at >> > >> org.apache.tapestry5.internal.services.BindingSourceImpl.newBinding(BindingSourceImpl.java:78) >> > ... 82 more >> > Caused by: java.lang.RuntimeException: java.lang.NoClassDefFoundError: >> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage; >> > at >> > >> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:103) >> > at >> > >> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.getAdapter(PropertyAccessImpl.java:68) >> > at >> > $PropertyAccess_13139f47ff6.getAdapter($PropertyAccess_13139f47ff6.java) >> > at >> > >> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.infoForPropertyOrPublicField(PropertyConduitSourceImpl.java:1028) >> > at >> > >> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.infoForMember(PropertyConduitSourceImpl.java:1021) >> > at >> > >> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.createGetterAndSetter(PropertyConduitSourceImpl.java:451) >> > at >> > >> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.createAccessors(PropertyConduitSourceImpl.java:435) >> > at >> > >> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.createInstance(PropertyConduitSourceImpl.java:290) >> > at >> > >> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.build(PropertyConduitSourceImpl.java:1321) >> > ... 88 more >> > Caused by: java.lang.NoClassDefFoundError: >> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage; >> > at java.lang.Class.getDeclaredFields0(Native Method) >> > at java.lang.Class.privateGetDeclaredFields(Class.java:2291) >> > at java.lang.Class.getDeclaredField(Class.java:1880) >> > at >> > >> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.isScalaGetterMethod(PropertyAccessImpl.java:196) >> > at >> > >> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.addPropertyIfScalaGetterMethod(PropertyAccessImpl.java:145) >> > at >> > >> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.addPropertiesFromScala(PropertyAccessImpl.java:138) >> > at >> > >> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:97) >> > ... 96 more >> > Caused by: java.lang.ClassNotFoundException: caught an exception while >> > obtaining a class file for >> com.cheetah.web.pages.recruiters.ConfirmationPage >> > at javassist.Loader.findClass(Loader.java:359) >> > at >> > >> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:102) >> > at javassist.Loader.loadClass(Loader.java:311) >> > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) >> > ... 103 more >> > Caused by: >> org.apache.tapestry5.internal.services.TransformationException: >> > Error obtaining injected value for field >> > com.cheetah.web.pages.recruiters.ConfirmationPage.cheetahService: No >> service >> > implements the interface com.cheetah.service.CheetahService. >> > at >> > >> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl$1.run(ComponentClassTransformerImpl.java:208) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:47) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:46) >> > at >> > >> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:56) >> > at >> > >> org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1058) >> > at >> > >> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:119) >> > at >> > >> $ComponentClassTransformer_13139f48015.transformComponentClass($ComponentClassTransformer_13139f48015.java) >> > at >> > >> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:212) >> > at javassist.Loader.findClass(Loader.java:340) >> > ... 106 more >> > Caused by: org.apache.tapestry5.ioc.internal.OperationException: Error >> > obtaining injected value for field >> > com.cheetah.web.pages.recruiters.ConfirmationPage.cheetahService: No >> service >> > implements the interface com.cheetah.service.CheetahService. >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:102) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:69) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:46) >> > at >> > >> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:56) >> > at >> > >> org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1058) >> > at >> > >> org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:54) >> > at >> > >> $ComponentClassTransformWorker_13139f4804d.transform($ComponentClassTransformWorker_13139f4804d.java) >> > at >> > >> $ComponentClassTransformWorker_13139f4803e.transform($ComponentClassTransformWorker_13139f4803e.java) >> > at >> > >> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl$1.run(ComponentClassTransformerImpl.java:202) >> > ... 116 more >> > Caused by: java.lang.RuntimeException: Error obtaining injected value >> for >> > field com.cheetah.web.pages.recruiters.ConfirmationPage.cheetahService: >> No >> > service implements the interface com.cheetah.service.CheetahService. >> > at >> > >> org.apache.tapestry5.internal.transform.InjectWorker$1.run(InjectWorker.java:75) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:47) >> > at >> > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) >> > ... 123 more >> > Caused by: java.lang.RuntimeException: No service implements the >> interface >> > com.cheetah.service.CheetahService. >> > at >> > >> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:670) >> > at >> > >> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:45) >> > at >> > >> org.apache.tapestry5.internal.services.ServiceInjectionProvider.provideInjection(ServiceInjectionProvider.java:40) >> > at >> > >> $InjectionProvider_13139f48056.provideInjection($InjectionProvider_13139f48056.java) >> > at >> > >> $InjectionProvider_13139f48044.provideInjection($InjectionProvider_13139f48044.java) >> > at >> > >> org.apache.tapestry5.internal.transform.InjectWorker$1.run(InjectWorker.java:67) >> > ... 126 more >> > >> > java.lang.NullPointerException >> > at >> > >> org.apache.tapestry5.test.PageTester.validateElementName(PageTester.java:286) >> > at >> > >> org.apache.tapestry5.test.PageTester.submitFormAndReturnResponse(PageTester.java:421) >> > at >> org.apache.tapestry5.test.PageTester.submitForm(PageTester.java:399) >> > at >> > >> com.cheetah.web.pages.CreateJobPostingTest.test1(CreateJobPostingTest.java:26) >> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> > at >> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> > at >> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> > 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.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) >> > at >> > >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) >> > at >> > >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) >> > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >> > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >> > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >> > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >> > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >> > at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >> > at org.junit.runner.JUnitCore.run(JUnitCore.java:157) >> > at >> > >> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71) >> > at >> > >> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199) >> > at >> > com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) >> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> > at >> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> > at >> com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) >> > >> > >> > Process finished with exit code 255 >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >