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:21:34 -0700 (PDT)
I should have also said that I still get the error:
Error: java.lang.IllegalStateException: Adaptor com.webobjects.jdbcadaptor.JDBCAdaptor@7f1633fd failed to provide new primary keys for entity 'Brief'
--- On Fri, 4/6/12, Theodore Petrosky <email@hidden> wrote:
> From: Theodore Petrosky <email@hidden>
> Subject: Re: D2W creating a new object?
> To: "David LeBer" <email@hidden>
> Cc: "David Holt" <email@hidden>, "email@hidden" <email@hidden>
> Date: Friday, April 6, 2012, 11:11 AM
> 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