Re: Custom configuration class ignored in 3.0 snapshot

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sat May 03 2008 - 03:05:50 EDT

  • Next message: Hans Poo: "Can't perform lookup. There is more than one ObjEntity mapped to class"

    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 : Sat May 03 2008 - 03:06:30 EDT