Here is a bit of 3.1 specifics on top of the suggestion below. In 3.1 you'd 
configure a custom Module with providers/factories for everything you need. 
Inside the module you'll need to bind DataSourceFactory and 
Provider<DataDomain>. Then you create a stack with the custom module:

ServerRuntime runtime = new ServerRuntime("", new MyModule());

And then code your implementations of DataSourceFactory and 
Provider<DataDomain>. Inside the later, you'd create a DataDomain with attached 
DataMaps and DataNodes.

Andrus

On Nov 14, 2011, at 12:44 PM, Tercio Gaudencio Filho wrote:

> Hi Alexey,
> 
> I'm trying exactly that.
> 
> final DbAttribute attr = new DbAttribute("id");
> attr.setType(Types.INTEGER);
> attr.setPrimaryKey(true);
> attr.setMandatory(true);
> 
> final DbEntity entity = new DbEntity("TEST");
> entity.addAttribute(attr);
> 
> final DataMap map = new DataMap("AppMap");
> map.addDbEntity(entity);
> 
> final DataDomain domain = new DataDomain("App");
> domain.addMap(map);
> 
> final DataNode node = new DataNode("AppNode");
> node.setDataSourceLocation("dbcp.properties");
> node.setDataSourceFactory(org.apache.cayenne.conf.DBCPDataSourceFactory.class.getName());
> node.setSchemaUpdateStrategy(new 
> org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy());
> node.addDataMap(map);
> node.setDataSource(new 
> org.apache.cayenne.conf.DBCPDataSourceFactory().getDataSource(node.getDataSourceLocation()));
> node.setAdapter(new MySQLAdapter());
> domain.addNode(node);
> 
> final Configuration c = Configuration.getSharedConfiguration();
> c.addDomain(domain);
> 
> final ObjectContext context = DataContext.createDataContext("App");
> 
> In this implementation I need to figure out how to "inject" the DataSource 
> into the Node in a more "clean" way, in this example it is, at least, weird.
> 
> As the line Configuration.getSharedConfiguration() will instantiate a 
> DefaultConfiguration class, this implementation will look for a cayenne.xml, 
> so you need this file "empty":
> <?xml version="1.0" encoding="utf-8"?>
> <domains project-version="3.0.0.1">
> </domains>
> 
> 
> My next step is to implement a DynamicConfiguration to allow a initialization 
> without any configuration file.
> 
> Currently my example is not ideal, but it's a kick-off.
> 
> By the way, I'm using DBCP as connection pool.
> 
> Regards, 
> 
> --
> Att.
> 
> Tercio Gaudencio Filho
> 
> 
> On Monday, November 14, 2011 at 7:28 AM, Alexey Shakov wrote:
> 
>> Hi *,
>> 
>> I would like to know, how to configure Cayenne and map generic object 
>> programmatically from scratch without using of XML?
>> 
>> Most likely, I need to define a DataSource (Factory), create DataDomain, 
>> some DataMaps, containing my generic Entities, etc.
>> 
>> Are there some examples, how to do this using last Cayenne milestone 
>> release?
>> 
>> Many thanks in advance for any help!
>> 
>> Greetings,
>> 
>> Alexey 
> 

Reply via email to