I tried that and I get an error that it doesn't know what session() is. The method session() is undefined for the type Brief
I am thinking, my EOs are in a framework. How can I refer to the session if the EO doesn't know anything about the session? Ted --- On Fri, 4/6/12, David Holt <[email protected]> wrote: > From: David Holt <[email protected]> > Subject: Re: D2W creating a new object? > To: "Theodore Petrosky" <[email protected]> > Cc: "[email protected]" <[email protected]> > Date: Friday, April 6, 2012, 9:41 AM > Check the code for adding a person to > a Brief further down in my previous email. If you do it in > the EO class, you shouldn't have the problem. > > Sent from my iPad > > On 2012-04-06, at 4:31 AM, Theodore Petrosky <[email protected]> > wrote: > > > David, > > > > I tried this method and still the same issue. > > > > There is a relationship with a person (user). Without a > user added, I get the normal error that I need a user: > > > > Could not save your changes: A Brief must have a > Person. > > > > I added: > > > > Person thePerson = session().user().localInstanceIn( > ((D2WPage) nextPage).object().editingContext()); > > ((D2WComponent) nextPage).object().takeValueForKey( > thePerson, "person"); > > > > Thats when I get the infamous: > > > > Error: > java.lang.IllegalStateException: Adaptor > com.webobjects.jdbcadaptor.JDBCAdaptor@3cb088f8 failed to > provide new primary keys for entity 'Brief' > > Reason: Adaptor > com.webobjects.jdbcadaptor.JDBCAdaptor@3cb088f8 failed to > provide new primary keys for entity 'Brief' > > > > If it didn't like the person entity or the > editingContext, I assume I would get an error complaining > about that. > > > > This is D2W land and with all the magic going on, I > think I am out of Fairy dust. > > > > Ted > > > > > > > > > > --- On Thu, 4/5/12, David Holt <[email protected]> > wrote: > > > > | I use this method: > > | > > | | public WOComponent createPersonAction() { > > | | return > newObjectForEntityName(PERSON); > > | | } > > | > > | | public WOComponent > newObjectForEntityName(String entityName) { > > | | WOComponent nextPage = null; > > | | try { > > | | EditPageInterface epi = > D2W.factory().editPageForNewObjectWithEntityNamed(entityName, > session()); > > | | > epi.setNextPage(session().context().page()); > > | | nextPage = (WOComponent) epi; > > | | } > > | | catch (IllegalArgumentException e) { > > | | ErrorPageInterface epf = > D2W.factory().errorPage(session()); > > | | epf.setMessage(e.toString()); > > | | > epf.setNextPage(session().context().page()); > > | | nextPage = (WOComponent) epf; > > | | } > > | | return nextPage; > > | | } > > | > > | > > | On 2012-04-05, at 10:53 AM, Theodore Petrosky wrote: > > | > > | I am creating a new 'Brief' object in my D2W app like > this: > > | > > | public EditPageInterface createBriefAction() { > > | > > | EditPageInterface component = > D2W.factory().editPageForNewObjectWithConfigurationNamed("CreateBrief", > session()); > > | > component.setNextPage(session().context().page()); > > | > > | if(component instanceof > D2WPage) { > > | D2WPage page = > (D2WPage)component; > > | > page.d2wContext().takeValueForKey("Brief.CreateBrief", > "navigationState"); > > | > > | This could be a rule: > > | 50 : pageConfiguration = 'CreateBrief' => > navigationState = "Brief.CreateBrief" > [com.webobjects.directtoweb.Assignment] > > | > > | > NSLog.out.appendln( ((D2WPage) > component).object().allPropertyKeys()); > > | > > | Person > thePerson = session().user().localInstanceIn(((D2WPage) > component).object().editingContext()); > > | > > | ((D2WComponent) > component).object().takeValueForKey( thePerson, "person"); > > | ((D2WComponent) > component).object().takeValueForKey( (new NSTimestamp()), > "creationDate");// (new NSTimestamp()); > > | > > | This code should be in your Brief eo init() method. > Something like: > > | > > | | public void init(EOEditingContext ec) { > > | | super.init(ec); > > | | Person thePerson = > session().user().localInstanceIn(ec); > > | | setPersonRelationship(thePerson); > > | | setCreationDate(new NSTimestamp()); > > | | } > > | > > | > > | | } > > | | return component; > > | } > > | > > | When I click the save button I am getting: > > | > > | > > | IllegalStateException: Adaptor > com.webobjects.jdbcadaptor.JDBCAdaptor@43c8308 failed to > provide new primary keys for entity 'Brief' > > | > > | > > | Am I supposed to do something more here? > > | > > | Ted public WOComponent createPersonAction() { > > | | return > newObjectForEntityName(PERSON); > > | | } > > | > > | | public WOComponent > newObjectForEntityName(String entityName) { > > | | WOComponent nextPage = null; > > | | try { > > | | EditPageInterface epi = > D2W.factory().editPageForNewObjectWithEntityNamed(entityName, > session()); > > | | > epi.setNextPage(session().context().page()); > > | | nextPage = (WOComponent) epi; > > | | } > > | | catch (IllegalArgumentException e) { > > | | ErrorPageInterface epf = > D2W.factory().errorPage(session()); > > | | epf.setMessage(e.toString()); > > | | > epf.setNextPage(session().context().page()); > > | | nextPage = (WOComponent) epf; > > | | } > > | | return nextPage; > > | | } > > | > > | > > | On 2012-04-05, at 10:53 AM, Theodore Petrosky wrote: > > | > > | I am creating a new 'Brief' object in my D2W app like > this: > > | > > | public EditPageInterface createBriefAction() { > > | > > | EditPageInterface component = > D2W.factory().editPageForNewObjectWithConfigurationNamed("CreateBrief", > session()); > > | > component.setNextPage(session().context().page()); > > | > > | if(component instanceof > D2WPage) { > > | D2WPage page = > (D2WPage)component; > > | > page.d2wContext().takeValueForKey("Brief.CreateBrief", > "navigationState"); > > | > > | This could be a rule: > > | 50 : pageConfiguration = 'CreateBrief' => > navigationState = "Brief.CreateBrief" > [com.webobjects.directtoweb.Assignment] > > | > > | > NSLog.out.appendln( ((D2WPage) > component).object().allPropertyKeys()); > > | > > | Person > thePerson = session().user().localInstanceIn(((D2WPage) > component).object().editingContext()); > > | > > | ((D2WComponent) > component).object().takeValueForKey( thePerson, "person"); > > | ((D2WComponent) > component).object().takeValueForKey( (new NSTimestamp()), > "creationDate");// (new NSTimestamp()); > > | > > | This code should be in your Brief eo init() method. > Something like: > > | > > | | public void init(EOEditingContext ec) { > > | | super.init(ec); > > | | Person thePerson = > session().user().localInstanceIn(ec); > > | | setPersonRelationship(thePerson); > > | | setCreationDate(new NSTimestamp()); > > | | } > > | > > | > > | | } > > | | return component; > > | } > > | > > | When I click the save button I am getting: > > | > > | > > | IllegalStateException: Adaptor > com.webobjects.jdbcadaptor.JDBCAdaptor@43c8308 failed to > provide new primary keys for entity 'Brief' > > | > > | > > | Am I supposed to do something more here? > > | > > | Ted > > > _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [email protected]
