On Jul 13, 2007, at 1:30 AM, Mikaël Cluseau wrote:

Caused by: java.lang.ClassCastException: org.apache.cayenne.access.DataNode$TransactionDataSource cannot be cast to org.apache.cayenne.project.ProjectDataSource
        at org.apache.cayenne.project.DataNodeFile.save(DataNodeFile.java:64)

I don't get how the modeler manages to get it working (it looks pretty
straightforward so I must be missing something).

To work around a bad decision made a long time ago to use Cayenne runtime objects (DataDomain, DataNode) as CayenneModeler model beans, modeler often uses inner subclasses to suppress various runtime behavior aspects. Here is how i handles the problem above:


class ModelerProjectLoadDelegate extends RuntimeLoadDelegate {
....
 protected DataNode createDataNode(String nodeName) {
        return new DataNode(nodeName) {

            public DataSource getDataSource() {
                return dataSource;
            }
        };
    }
...
}

Andrus

Reply via email to