Re: D2W creating a new object?
Re: D2W creating a new object?
- Subject: Re: D2W creating a new object?
- From: Theodore Petrosky <email@hidden>
- Date: Fri, 06 Apr 2012 08:11:55 -0700 (PDT)
My head hurts but
Here is my EO's init
public void init(EOEditingContext ec) {
super.init(ec);
NSLog.out.appendln("*** init of the EO Brief ****");
setCreationDate(new NSTimestamp());
Person thePerson = (Person) ERXThreadStorage.valueForKey("currentUser");
NSLog.out.appendln("*** thePerson = ****" + thePerson);
Person localPerson = thePerson.localInstanceIn(ec);
setPersonRelationship(localPerson);
}
I threw in many NSLogs to see what was going on and I see in the Console:
Page: er.modern.look.pages.ERMODQueryEntitiesPage - Configuration: null - *** thePerson = ****<com.as.Model.Person pk:"1">
which is what I expect. so the Person is indeed entering my init and I needed a localInstance in the EC or it complains that I am crossing ECs. I know I am not the brightest but I am confused.
Ted
--- On Fri, 4/6/12, David LeBer <email@hidden> wrote:
> From: David LeBer <email@hidden>
> Subject: Re: D2W creating a new object?
> To: "Theodore Petrosky" <email@hidden>
> Cc: "David Holt" <email@hidden>, "email@hidden" <email@hidden>
> Date: Friday, April 6, 2012, 10:48 AM
> Um, it looks like David got a little
> confused.
>
> You won't (and shouldn't) have access to the session in your
> EO. That is why you need to use ERXThreadStorage.
>
> in Session awake and the setter for user, push it into
> ERXThreadStorage. i.e:
>
> ERXThreadStorage.takeValueForKey(user(),
> "currentUser");
>
> In EO init:
>
> User user =
> ERXThreadStorage.valueForKey("currentUser");
> if (user != null) {
> User localUser =
> user.localInstanceIn(ec);
> // etc
> }
>
> --
> David LeBer
> Codeferous Software
>
> On 2012-04-06, at 10:22 AM, Theodore Petrosky wrote:
>
> > 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@hidden>
> wrote:
> >
> >> From: David Holt <email@hidden>
> >> Subject: Re: D2W creating a new object?
> >> To: "Theodore Petrosky" <email@hidden>
> >> Cc: "email@hidden"
> <email@hidden>
> >> 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@hidden>
> >> 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@hidden>
> >> 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@hidden)
> > Help/Unsubscribe/Update your Subscription:
> >
> > This email sent to email@hidden
>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden