Re: Should ERXEC get sharedEC automagically?
Re: Should ERXEC get sharedEC automagically?
- Subject: Re: Should ERXEC get sharedEC automagically?
- From: Chuck Hill <email@hidden>
- Date: Wed, 22 Aug 2018 03:11:25 +0000
- Thread-topic: Should ERXEC get sharedEC automagically?
That is a good question. I’ve not used the combination. There must be some
code that uses the default instead of getting the SEC from the
EOEditingContext. There is a lot of code in Wonder (and some in WO) that
assumes the defaultWhatever is the only one that will ever exist. You would
have to step into the code to see where this is happening, or enable the
logging of stack traces of fetches. It should be a simple fix once you find
the spot.
Chuck
From: "ocs@ocs" <email@hidden>
Date: Tuesday, August 21, 2018 at 1:02 PM
To: Chuck Hill <email@hidden>
Cc: "email@hidden" <email@hidden>
Subject: Re: Should ERXEC get sharedEC automagically?
Indeed! If I switch off the OSCPool, it starts to work properly.
Thanks just again!
Nevertheless, I still must be missing something of grave importance, for with
OCSPool (I use ), I would presume the SEC for the pool being currently used by
the ERXEC would load the shared objects?
It does not: the global one does automatically load the shared objects, but the
SEC-based one of ERXEC remains empty.
Note: the code in question does not run in a session context; it is performed
at launch, before the first session is created. Might that be important perhaps?
All the best,
OC
On 21 Aug 2018, at 9:42 PM, Chuck Hill
<email@hidden<mailto:email@hidden>> wrote:
Are you using the ERXObjectStoreCoordinatorPool? It keeps one SEC per pool,
not one shared globally. EOSharedEditingContext.defaultSharedEditingContext()
is the global one.
Chuck
From: "ocs@ocs" <email@hidden<mailto:email@hidden>>
Date: Tuesday, August 21, 2018 at 12:23 PM
To: Chuck Hill <email@hidden<mailto:email@hidden>>
Cc: "email@hidden<mailto:email@hidden>"
<email@hidden<mailto:email@hidden>>
Subject: Re: Should ERXEC get sharedEC automagically?
P.S. It seems ERX completely ignores the default shared EC, using its own one.
If I try e.g., this:
===
println "The default sharedEC is
${EOSharedEditingContext.defaultSharedEditingContext()}"
6.times {
def e=ERXEC.newEditingContext()
println "EC $e gets sec $e.sharedEditingContext"
}
println "The default sharedEC still is
${EOSharedEditingContext.defaultSharedEditingContext()}"
===
it looks like this:
===
The default sharedEC is com.webobjects.eocontrol.EOSharedEditingContext@26bbe604
2005 [main] INFO er.extensions.eof.ERXObjectStoreCoordinatorPool -
initializing Pool...
2008 [main] INFO er.extensions.eof.ERXObjectStoreCoordinatorPool -
initializing Pool finished
EC er.extensions.eof.ERXEC@40e32762 gets sec
com.webobjects.eocontrol.EOSharedEditingContext@5875de6a
EC er.extensions.eof.ERXEC@7d78f3d5 gets sec
com.webobjects.eocontrol.EOSharedEditingContext@5875de6a
EC er.extensions.eof.ERXEC@f5b6e78 gets sec
com.webobjects.eocontrol.EOSharedEditingContext@5875de6a
EC er.extensions.eof.ERXEC@71926a36 gets sec
com.webobjects.eocontrol.EOSharedEditingContext@5875de6a
EC er.extensions.eof.ERXEC@48976e6d gets sec
com.webobjects.eocontrol.EOSharedEditingContext@5875de6a
EC er.extensions.eof.ERXEC@7f6874f2 gets sec
com.webobjects.eocontrol.EOSharedEditingContext@5875de6a
The default sharedEC still is
com.webobjects.eocontrol.EOSharedEditingContext@26bbe604
===
Thanks and all the best,
OC
On 21 Aug 2018, at 9:07 PM, ocs@ocs <email@hidden<mailto:email@hidden>> wrote:
Chuck,
sorry, I did not describe the problem clearly enough...
On 21 Aug 2018, at 8:39 PM, Chuck Hill
<email@hidden<mailto:email@hidden>> wrote:
Once an EC has objects in it, its shared EC won’t get changed if a new default
is set. The notification is ignored.
Quite, but that's not the problem.
With EOEditingContext, it works like this:
(i) ec created, has no sharedEC (ec.sharedEditingContext==null)
(ii) (due to something which creates a DBContext, I believe) the default
sharedEC is initialized; it loads the shared objects, and sends the notification
(iii) ec observes the notification, and sets the default sharedEC as its own
sharedEC (for it is still empty)
(iv) now, ec fetches the objects — automatically giving shared ones from its
sharedEC, which does contain them
With ERXEC (and ERXEC.useSharedEditingContext=true), there's an important
difference:
(i) erxec created, immediately gets a sharedEC (ec.sharedEditingContext!=null).
This sharedEC differs from the default shared EC
(ii) (due to something which creates a DBContext, I believe) the default
sharedEC is initialized; it loads the shared objects, and sends the notification
(iii) erxec (although still empty) does nothing, it already has a sharedEC,
different from the default one
(iv) now, erxec fetches the objects — would automatically give shared ones from
its sharedEC, which, alas, contains nothing (the default one does).
Thanks and all the best,
OC
From: "ocs@ocs" <email@hidden<mailto:email@hidden>>
Date: Tuesday, August 21, 2018 at 11:21 AM
To: Chuck Hill <email@hidden<mailto:email@hidden>>
Cc: "email@hidden<mailto:email@hidden>"
<email@hidden<mailto:email@hidden>>
Subject: Re: Should ERXEC get sharedEC automagically?
Chuck,
On 21 Aug 2018, at 7:50 PM, Chuck Hill
<email@hidden<mailto:email@hidden>> wrote:
See er.extensions.ERXEC.useSharedEditingContext at
https://wiki.wocommunity.org/display/documentation/Explanation+of+the+default+properties+in+a+Wonder+project
Thanks a lot!
(Why on earth don't they mention this on the ERXEC documentation page? Oh,
never mind.)
Did that fix it?
Well, sort of.
It gets curiouser and curiouser — in other words, I must be doing something far
wrong.
When I set the “ERXEC.useSharedEditingContext” property to true, then
- the newly created ERXEC gets a shared editing context immediately upon
creation, not later upon receiving
DefaultSharedEditingContextWasInitializedNotification;
- and it is a different shared EC instance, not
EOSharedEditingContext.defaultSharedEditingContext()
- but it is EOSharedEditingContext.defaultSharedEditingContext() who reads in
automatically all the shared EOs
- and therefore, when fetching EOs through the ERXEC, I am still getting
non-shared ones in the ERXEC (for its own sharedEC is empty, and thus
EOSharedEditingContext.defaultSharedEditingContext is ignored).
Can you make any sense of that?
Thanks again a very big lot,
OC
On 2018-08-21, 9:43 AM, "Webobjects-dev on behalf of ocs@ocs"
<webobjects-dev-bounces+chill=email@hidden<mailto:webobjects-dev-bounces+chill=email@hidden>
on behalf of email@hidden<mailto:email@hidden>> wrote:
Hi there,
the EOEditing context doc pretty unequivocally says
===
By default, an editing context that has no shared editing context listens
for DefaultSharedEditingContextWasInitializedNotifications. If a notification
is posted while the context has no registered objects, the editing context sets
its shared editing context to the newly initialized default shared editing
context.
===
Should it apply for an ERXEC, too? I sort of inferred it would, but by my
testing, it does not seem so: an ERXEC I make (through
ERXEC.newEditingContext()) seems to adamantly stay without
sharedEditingContext, although the notification is posted all right (I have
observed it myself to be sure), and if there's a good ole EOEditingContext, it
indeed duly sets its sharedEC at the time.
Have I missed something of importance somewhere? The ERXEC documentation
does not say essentially anything of the sharedEC, far as I can say:
http://wonder.sourceforge.net/javadoc/er/extensions/ERXEC.html
In principle, I could work around the problem by setting the sharedEC to all
my ERXECs programmatically -- that works all right --, but it would be a lot of
work, with a danger I overlook something somewhere and got bit in the tender
parts by that...
Thanks,
OC
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list
(email@hidden<mailto:email@hidden>)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden<mailto:email@hidden>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list
(email@hidden<mailto:email@hidden>)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden<mailto: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