Andrus, I'm not sure exactly how you want the code sample. If you need me to provide a self contained app I can do that. For now I'll just copy the code from my app so you can take a look at it. I have a static method that configures my custom DataSourceFactory. The call to DbUtils.openDb succeeds, but the getDataSourceFactory method in CompanyConfiguration is never called.
public class DbUtils { private static DataContext globalContext; private static DataContext estimateContext; private static DataContext roomContext; private static DataContext assemblyContext; private static DataContext partsContext; public static void openDb(String pathToDb) throws Exception { try { CompanyDataSourceFactory.setDbPath(pathToDb); Configuration.initializeSharedConfiguration(CompanyConfiguration.class); Configuration config = Configuration.getSharedConfiguration(); DataDomain domain = config.getDomain(); globalContext = DataContext.createDataContext(domain.getName()); estimateContext = DataContext.createDataContext(domain.getName()); roomContext = DataContext.createDataContext(domain.getName()); assemblyContext = DataContext.createDataContext(domain.getName()); partsContext = DataContext.createDataContext(domain.getName()); } catch (Exception e) { throw new Exception("Unable to initialize database!", e); } } } public class CompanyConfiguration extends DefaultConfiguration { private static CompanyDataSourceFactory factory = new CompanyDataSourceFactory(); @Override public DataSourceFactory getDataSourceFactory() { return factory; } } public class CompanyDataSourceFactory implements DataSourceFactory { private static DataSource ds = null; private static String dbPath = "Companies/db"; public static void setDbPath(String val) { dbPath = val; } @Override public DataSource getDataSource(String arg0) throws Exception { if(dbPath.startsWith("server")) { // server:host ClientDataSource40 tmpDS = new ClientDataSource40(); String[] sArray = dbPath.split(":"); tmpDS.setServerName(sArray[1]); tmpDS.setDatabaseName("db"); tmpDS.setUser("user"); tmpDS.setPassword("pass"); ds = tmpDS; } else { EmbeddedDataSource40 tmpDS = new EmbeddedDataSource40(); tmpDS.setDatabaseName(dbPath); tmpDS.setUser("user"); tmpDS.setPassword("db"); ds = tmpDS; } return ds; } @Override public void initializeWithParentConfiguration(Configuration arg0) { } } Hopefully that's enough. If not let me know what I should provide. Thanks for your help! Brian --- Andrus Adamchik <[EMAIL PROTECTED]> wrote: > Strange. That should still work the same. The only change to > Configuration since M3 was related to the DataSourceFactory handling > (CAY-785)... Do you have a code example that demonstrates the problem? > > Thanks, > Andrus > > > On May 1, 2008, at 10:29 PM, Brian Nelson wrote: > > I've been using a custom subclass of DefaultConfiguration to > > customize my database connection. > > This works great with 3.0M3. However, today I upgraded to the > > snapshot build and it seems to be > > ignoring the custom configuration class I pass into the > > Configuration.initializeSharedConfiguration method. Has the way > > custom configurations work > > changed? > > > > Thanks in advance! > > > > Brian > > > > > >