Thanks for the suggestion! After reading
http://wiki.apache.org/tapestry/Tapestry5HowToIocAndHibernate and tried a few combinations. The following works. 1) In AppModule : define the MyFolderDAO service as before. 2) Create AppModuleTest.java which is only available in unit test. public class AppModuleTest { public static void bind(ServiceBinder binder) { binder.bind(ClassNameLocator.class, ClassNameLocatorImpl.class); } public static void contributeSymbolSource(OrderedConfiguration<SymbolProvider> conf){ //tapestry-hibernate fails without tapestry.app-name symbol defined conf.add("AppPackage", new SymbolProvider(){ public String valueForSymbol(String symbolName){ if(symbolName.equalsIgnoreCase(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM)) return "net.sf.folder"; return null; } },""); } } 3) In unit test, create the registry as follow. RegistryBuilder builder = new RegistryBuilder(); builder.add(HibernateModule.class); builder.add(AppModule.class); builder.add(AppModuleTest.class); Registry registry = builder.build(); registry.performRegistryStartup(); It begs the question on how come the service and configuration in AppModuleTest.java are not created automatically in unit test and they are created automatically in web application. Shing --- Sven Homburg <[EMAIL PROTECTED]> wrote: > dont add the TapestryModule to RegistryBuilder, > it make only sense, if you testing your DAOs > inside a page or component. > > > 2008/2/3, Shing Hing Man <[EMAIL PROTECTED]>: > > I have created a DAO service which has > > HibernateSessionManager (from the > tapestry-hibernate > > module) as a property. > > In AppModule : > > > > public static MyFolderDAO buildMyFolderDAO( > > > @InjectService("HibernateSessionManager") > > HibernateSessionManager sessionManager) > > { > > MyFolderDAO dao = new > > MyFolderDAOHibernate(); > > dao.setSessionManager(sessionManager); > > return dao; > > } > > > > > > The MyFolderDAO service works when it is injected > into > > a Tapestry page. > > I have problem testing the MyFolderDAO service in > a > > Junit test. > > > > public class MyFolderDAOHibernateTest extends > TestCase > > { > > > > public void testAddFolder() { > > > > RegistryBuilder builder = new > RegistryBuilder(); > > builder.add(TapestryModule.class); > > > builder.add(HibernateModule.class); > > builder.add(AppModule.class); > > > > Registry registry = > builder.build(); > > > > registry.performRegistryStartup(); > > > > MyFolderDAO dao = > registry.getService("myFolderDAO", > > MyFolderDAO.class); > > > > MyFolder folder = new MyFolder(); > > folder.setFoldername("Folder A"); > > dao.addFolder(folder); > > > > } > > > > } > > > > I get the following exception when I run the > above > > JUnit test. It looks as though I have not built > the > > Registry correctly. > > It would be very much appreciated if someone can > show > > me a way. > > > > Shing > > > > > > > > [ERROR] Alias Construction of service Alias > failed: > > Error invoking service builder method > > > org.apache.tapestry.services.TapestryModule.build(Logger, > > String, AliasManager, Collection) (at > > TapestryModule.java:130) (for service 'Alias'): > Symbol > > 'tapestry.alias-mode' is not defined. > > java.lang.RuntimeException: Error invoking service > > builder method > > > org.apache.tapestry.services.TapestryModule.build(Logger, > > String, AliasManager, Collection) (at > > TapestryModule.java:130) (for service 'Alias'): > Symbol > > 'tapestry.alias-mode' is not defined. > > at > > > org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:88) > > at > > > org.apache.tapestry.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) > > at > > > org.apache.tapestry.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:54) > > at > > > org.apache.tapestry.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:51) > > at > > > org.apache.tapestry.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:61) > > at > > > org.apache.tapestry.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:66) > > at > > > $Alias_117e094fd17._delegate($Alias_117e094fd17.java) > > at > > > $Alias_117e094fd17.getObjectProvider($Alias_117e094fd17.java) > > at > > > org.apache.tapestry.services.TapestryModule$1.provide(TapestryModule.java:442) > > at > > > org.apache.tapestry.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:38) > > at > > > $MasterObjectProvider_117e094fd14.provide($MasterObjectProvider_117e094fd14.java) > > at > > > org.apache.tapestry.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:621) > > at > > > org.apache.tapestry.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:675) > > at > > > org.apache.tapestry.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:50) > > at > > > org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameterValue(InternalUtils.java:207) > > at > > > org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:237) > > at > > > org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParametersForConstructor(InternalUtils.java:225) > > at > > > org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:46) > > at > > > org.apache.tapestry.ioc.internal.ServiceResourcesImpl.autobuild(ServiceResourcesImpl.java:123) > > at > > > org.apache.tapestry.ioc.services.TapestryIOCModule.contributeServiceLifecycleSource(TapestryIOCModule.java:80) > > 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:585) > > at > > > org.apache.tapestry.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:95) > > at > > > org.apache.tapestry.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:68) > > at > > > org.apache.tapestry.ioc.internal.RegistryImpl.addToMappedConfiguration(RegistryImpl.java:451) > > at > > > org.apache.tapestry.ioc.internal.RegistryImpl.getMappedConfiguration(RegistryImpl.java:408) > > at > > > org.apache.tapestry.ioc.internal.ServiceResourcesImpl.getMappedConfiguration(ServiceResourcesImpl.java:97) > > at > > > org.apache.tapestry.ioc.internal.AbstractServiceCreator.addMappedConfigurationParameter(AbstractServiceCreator.java:154) > > at > > > org.apache.tapestry.ioc.internal.AbstractServiceCreator.getParameterDefaultsWithConfiguration(AbstractServiceCreator.java:118) > > at > > > org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.getParameterDefaultsWithConfigurations(ServiceBuilderMethodInvoker.java:47) > > at > > > org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:68) > > at > > > org.apache.tapestry.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) > > at > > > org.apache.tapestry.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:54) > > at > > > org.apache.tapestry.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:61) > > at > > > org.apache.tapestry.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:66) > === message truncated === Home page : http://www.lombok.demon.co.uk/ __________________________________________________________ Sent from Yahoo! Mail - a smarter inbox http://uk.mail.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]