FYI, here is a 3.1 rewritten version of the factory:
https://svn.apache.org/repos/asf/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DBCPDataSourceFactory.java
It is much cleaner and works off of injectable ResourceService that
can be defined by the user.
Then my cayenne.xml could say:
datasource="/path/to/dbcp.properties"
Will probably rename this attribute to "location" in 3.1, as currently
the name "datasource" makes no sense, and it initializes the
"location" property in the Java descriptor class.
Andrus
On Dec 7, 2009, at 11:18 AM, Michael Gentry wrote:
FWIW (if it might help others), I cheated and did this:
package org.apache.cayenne.conf;
public class Config
{
public static void configureCayenne()
{
DefaultConfiguration conf = new DefaultConfiguration();
conf.locator.setSkipAbsolutePath(false);
Configuration.initializeSharedConfiguration(conf);
}
}
Then my cayenne.xml could say:
datasource="/path/to/dbcp.properties"
This seems hackish, but works. I had to create my config class in
Cayenne's package space because the locator variable is protected and
I didn't see a way to get it to set the path properties otherwise.
mrg
On Fri, Dec 4, 2009 at 5:01 PM, Andrus Adamchik <[email protected]
> wrote:
I guess the easiest way is to write your own factory using Cayenne-
provided
one as a template.
BTW, Cayenne implementation of DBCPDataSourceFactory is over-
engineered. It
overlooks a simple way to configure DBCP via
org.apache.commons.dbcp.BasicDataSource. So the factory internally
shouldn't
look as scary as it does now, and hopefully we'll take advantage of
that
during 3.1 DI refactoring.
Andrus
On Dec 4, 2009, at 9:51 PM, Michael Gentry wrote:
I'm trying to use DBCPDataSourceFactory and load my data source
information from a location external to the project. I keep getting
errors that it can't find the file. Has anyone does this
successfully?
Thanks!
mrg