cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From caden whitaker <caden.whita...@gmail.com>
Subject Re: DataMap.loadDataMap existing ObjectContext?
Date Tue, 02 Nov 2010 18:03:38 GMT
Gotcha, right now the static xml is just for testing purposes, so I tossed
that in there but I'm getting an error, is this the correct way to use the
DataDomain:

            MapLoader ml = new MapLoader();
            DataMap dataMap = ml.loadDataMap(new InputSource(new
FileInputStream("C:\\eclipse_cayenne\\tutorial\\src\\main\\resources\\HelloWorld2Map.map.xml")));
            DataDomain dd =
Configuration.getSharedConfiguration().getDomain();
            dd.addMap(dataMap);
            ObjectContext context = dd.createDataContext(false);


            System.out.println("START CREATE");
            Artist picasso = context.newObject(Artist.class);
            picasso.setName("Pablo Picasso");


            Painting girl = context.newObject(Painting.class);
            girl.setName("Girl Reading at a Table");
            girl.setArtist(picasso);

            Painting stein = context.newObject(Painting.class);
            stein.setName("Gertrude Stein");
            stein.setArtist(picasso);

            context.commitChanges();

This throws an error, here is the stack:


Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
startedLoading
INFO: started configuration loading.
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLoadDataDomain
INFO: loaded domain: HelloWorld1
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
loadDataMap
INFO: loaded <map name='HelloWorld1Map' location='HelloWorld1Map.map.xml'>.
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLoadDataNode
INFO: loading <node name='HelloWorld1Node'
datasource='HelloWorld1Node.driver.xml'
factory='org.apache.cayenne.conf.DriverDataSourceFactory'
schema-update-strategy='org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy'>.
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLoadDataNode
INFO: using factory: org.apache.cayenne.conf.DriverDataSourceFactory
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.DriverDataSourceFactory load
INFO: loading driver information from 'HelloWorld1Node.driver.xml'.
Nov 2, 2010 1:00:57 PM
org.apache.cayenne.conf.DriverDataSourceFactory$DriverHandler init
INFO: loading driver org.apache.derby.jdbc.EmbeddedDriver
Nov 2, 2010 1:00:57 PM
org.apache.cayenne.conf.DriverDataSourceFactory$LoginHandler init
INFO: loading user name and password.
Nov 2, 2010 1:00:57 PM org.apache.cayenne.access.QueryLogger logPoolCreated
INFO: Created connection pool: jdbc:derby:memory:testdb;create=true
    Driver class: org.apache.derby.jdbc.EmbeddedDriver
    Min. connections in the pool: 1
    Max. connections in the pool: 1
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLoadDataNode
INFO: loaded datasource.
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
initAdapter
INFO: no adapter set, using automatic adapter.
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLinkDataMap
INFO: loaded map-ref: HelloWorld1Map.
Nov 2, 2010 1:00:57 PM org.apache.cayenne.conf.RuntimeLoadDelegate
finishedLoading
INFO: finished configuration loading in 234 ms.
START CREATE
org.apache.cayenne.CayenneRuntimeException: [v.3.0RC2 Feb 03 2010 13:38:54]
Commit Exception
    at
org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1134)
    at
org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045)
    at
main.java.org.example.cayenne.ut.CayenneUnitTest.testBuild(CayenneUnitTest.java:71)

On Tue, Nov 2, 2010 at 12:55 PM, Mike Kienenberger <mkienenb@gmail.com>wrote:

> yourDataDomain.addMap(DataMap map)
>
> I'd also suggest creating the DataMap programmically unless you have
> some reason to want to do it from a static xml file.
>
> You used to be able to use the following code to fetch the data domain.
>
> DataDomain yourDataDomain =
> Configuration.getSharedConfiguration().getDomain();
>
>
>
> On Tue, Nov 2, 2010 at 9:59 AM, caden whitaker <caden.whitaker@gmail.com>
> wrote:
> > Hey all,
> >
> > I'm still on my quest to get this stuff loaded dynamically. Here's what
> I'm
> > doing now, first I gutted the map xml file so that it looks like this:
> >
> > TestProjectSourceMap.map.xml
> > <?xml version="1.0" encoding="utf-8"?>
> > <data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap"
> >  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >  xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap
> > http://cayenne.apache.org/schema/3.0/modelMap.xsd"
> >  project-version="3.0.0.1">
> >    <property name="defaultPackage"
> value="org.example.cayenne.persistent"/>
> >
> > </data-map>
> >
> >
> > Built a new Map xml file that had all of the real class associations and
> put
> > it someplace else, that file looks like this
> >
> > TestProjectNewMap.map.xml
> > <?xml version="1.0" encoding="utf-8"?>
> > <data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap"
> >  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >  xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap
> > http://cayenne.apache.org/schema/3.0/modelMap.xsd"
> >  project-version="3.0.0.1">
> >    <property name="defaultPackage"
> value="org.example.cayenne.persistent"/>
> >    <db-entity name="ARTIST">
> >        <db-attribute name="ArtistID" type="BIGINT" isPrimaryKey="true"
> > isMandatory="true"/>
> >        <db-attribute name="Name" type="VARCHAR" length="255"/>
> >    </db-entity>
> > ....
> >    <obj-relationship name="artist" source="Painting" target="Artist"
> > deleteRule="Nullify" db-relationship-path="artist"/>
> > </data-map>
> >
> >
> > All I want to do is load in this OTHER xml file, right now I'm getting
> > "Class is not mapped with Cayenne:
> > main.java.org.example.cayenne.persistent.Artist" which is because it has
> not
> > loaded my other xml file. Here is what I'm doing:
> >
> >
> >            ObjectContext context = DataContext.createDataContext();
> >
> >            MapLoader ml = new MapLoader();
> >
> >            DataMap dataMap = ml.loadDataMap(new InputSource(new
> >
> FileInputStream("C:\\eclipse_cayenne\\tutorial\\src\\main\\resources\\Map.map.xml")));
> >
> >            //This will bomb because I havent DONE anything with the
> datamap
> >
> >            Artist picasso = context.newObject(Artist.class);
> >
> > So what do I do with that DataMap to get it loaded into the context? I've
> > been looking but I Don't see the method call I need to make to push that
> > DataMap anywhere. Note the other files (cayenne.xml,
> > TestProjectNode.driver.xml) remain unchanged.
> >
> > Any help would be greatly appreciated.
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message