Re: Aggregated cayenne.xml from several modules (projects)

From: Evgeny Ryabitskiy (evgeny.ryabitski..mail.com)
Date: Sat Oct 31 2009 - 19:38:33 EDT


I have create an issue to solve this problem, solution is published.
It's working but there some open subissue described in comments.

Evgeny.

2009/10/22 Andrus Adamchik <andru..bjectstyle.org>:
> I was working on this exact problem, but due to the lack of time and some
> other priorities it got postponed till after 3.0. This Jira contains links
> to the design that I had in mind:
>
> https://issues.apache.org/jira/browse/CAY-943
>
> For 3.1 I actually have more radical ideas, so it may look different at the
> end. Anyways, all the complexity of this task is due to the need to handle a
> general case of merging multiple descriptors and resolve arising conflicts.
> If you know that your configuration does not have any such conflicts, it
> should be reasonably simple to merge things by hand. Here is a rough example
> (this is for 3.0, some things may be different in 2.0):
>
>
> Configuration myConfig = new Configuration() {
>   // override all abstract methods to do nothing
> }
>
> ClassLoader cl = .. // get a thread class loader
>
> // assuming all Cayenne projects are at the root of the classpath:
> Enumeration<URL> projectURLs = cl.indResources("cayenne.xml");
> while(projectURLs.hasMoreElements()) {
>   URL baseURL = projectURLs.nextElement();
>
>
>   ResourceLocator resourceLocator = new ResourceLocator() {
>        // override locator methods as appropriate... e.g.:
>        public URL getResource(String name) {
>          if(name.equals("cayenne.xml") {
>            return baseURL;
>          }
>
>          // assuming there's no conflciting DataMap names
>          return super.getResource(name);
>         }
>
>   } ;
>   Configuration scratchConfig = new DefaultConfiguration("cayenne.xml",
> resourceLocator);
>
>   // move all DataMaps from scratchConfig to myConfig
>   // move all DataNodes from scratchConfig to myConfig
> }
>
> Configuration.initializeSharedConfiguration(myConfig);
>
>
> Andrus
>
> On Oct 21, 2009, at 7:12 PM, Evgeny Ryabitskiy wrote:
>
>> Hello to everyone!
>>
>> I wonder if our cayenne is able to aggregate it's configuration from
>> several projects?
>>
>> Like in my case I have several modules, each has it's configuration
>> like module1-cayenne.xml
>> So now root project need to get aggregated configuration from all modules.
>>
>> So I'm trying to use DefaultConfiguration for each module.
>> The problem that after initialization configuration rewrites previous
>> and become singleton configuration (I need them all!)
>>
>> Maybe I do something wrong or there no such feature?
>>
>> Evgeny Ryabitskiy.
>>
>
>



This archive was generated by hypermail 2.0.0 : Sat Oct 31 2009 - 19:39:08 EDT