Re: Custom configuration class ignored in 3.0 snapshot

From: Brian Nelson (briannelson2..ahoo.com)
Date: Mon May 05 2008 - 16:47:18 EDT

  • Next message: Mike Kienenberger: "Re: Query.setRefreshingObjects(boolean)"

    Andrus,

    That fixed it. Thanks for the quick response!

    Brian

    --- Andrus Adamchik <andru..bjectstyle.org> wrote:

    > I was looking for any clues in the code, nothing concrete... And I
    > found it. The recent fix to CAY-785 deprecated and stopped calling
    > "Configuration.getDataSourceFactory()" replacing it with
    > "Configuration.getDataSourceFactory(String)". So you need to override
    > the new method. Also I checked in a fix that restores backwards
    > compatibility. It should be available from the Hudson CI server soon
    > (build #109 or newer).
    >
    > Andrus
    >
    >
    > On May 3, 2008, at 3:21 AM, Brian Nelson wrote:
    >
    > > 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();
    > >
    > > ..verride
    > > 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;
    > > }
    > >
    > > ..verride
    > > 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;
    > > }
    > >
    > > ..verride
    > > 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 <andru..bjectstyle.org> 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
    > >>>
    > >>>
    > >>
    > >>
    > >
    > >
    >
    >



    This archive was generated by hypermail 2.0.0 : Mon May 05 2008 - 16:47:52 EDT