Hi Andrus
Here are my findings. I think point number three is the reason that
callbacks are not happening for me.
Question - Just to reconfirm - if I have configured the callbacks in my
modeler and I can see an abstract declaration for the callback in the
parent class, and overriding them in the sub class - it means I have
configured them correctly?
1) Class EntityResolver
public LifecycleCallbackRegistry getCallbackRegistry() {
if (callbackRegistry == null) {
initCallbacks();
}
return callbackRegistry;
}
*here callbackRegistry is Not null.*
2) Class LifeCycleCallBackEventHandler
void performCallbacks(Persistent object) {
Statement - if (!defaultListeners.isEmpty()
&&
!excludingDefaultListeners(object.getObjectId().getEntityName()))
*here is defaultListeners isEmpty condition is true.*
3) Class LifeCycleCallBackEventHandler
private void performCallbacks(Persistent object, Class<?>
callbackEntityClass) {
Statement - Collection<AbstractCallback> entityListeners =
listeners.get(key);
*here - entityListeners is null*
Cheers
Manish
On Fri, Aug 3, 2012 at 5:55 PM, Kanwar Manish <[email protected]>wrote:
> Starting Netbeans has worked. I will post my inputs ASAP.
>
> Cheers
> Manish
>
> On Fri, Aug 3, 2012 at 5:42 PM, Kanwar Manish <[email protected]>wrote:
>
>> Thanks Andrus and MRG
>>
>> Thankyou all for this much support.
>>
>> I can see at the breakpoint that it is indeed a DataContext only.
>>
>> Unfortunately I need some help from a NetBeans guy since even after
>> attaching the source - I can't step into the newObject code.
>>
>> Error I get while trying to set a breakpoint for injectInitialValue is
>>
>> "Not able to submit breakpoint LineBreakpoint BaseContext.java : 638,
>> reason: No source root found for URL
>> 'jar:file:/home/manish/Downloads/cayenne-server-3.1B1-sources.jar!/org/apache/cayenne/BaseContext.java'.
>> Verify the setup of project sources.
>> "
>> I think if I can cross this - I am close to finding something for sure.
>>
>> Anybody from the netbeans background please - your help is badly required?
>>
>> Thanks
>> Kanwar Manish
>>
>>
>> On Fri, Aug 3, 2012 at 5:02 PM, Andrus Adamchik
>> <[email protected]>wrote:
>>
>>> ObjectContext is an interface... When you are dealing with an object in
>>> debugger, the instance will be of a specific implementation type (there
>>> can't be an instance of an interface obviously). Which is normally
>>> DataContext. So yes, not a problem.
>>>
>>> On Aug 3, 2012, at 2:04 PM, Kanwar Manish wrote:
>>>
>>> > Hey Thanks again
>>> >
>>> > This worked out like a charm.
>>> >
>>> > But I am using ObjectContext for creating my objects. I hope that is
>>> not
>>> > the problem?
>>> >
>>> > Thanks
>>> > Kanwar Manish
>>> >
>>> > On Fri, Aug 3, 2012 at 3:54 PM, Andrus Adamchik <
>>> [email protected]>wrote:
>>> >
>>> >> I am an Eclipse user.. I have no NetBeans experience at all
>>> unfortunately.
>>> >>
>>> >> But you can get the source jars matching Cayenne binary jars straight
>>> from
>>> >> Maven repo. Here is the one you likely need:
>>> >>
>>> >>
>>> >>
>>> http://search.maven.org/remotecontent?filepath=org/apache/cayenne/cayenne-server/3.1B1/cayenne-server-3.1B1-sources.jar
>>> >>
>>> >> Andrus
>>> >>
>>> >> On Aug 3, 2012, at 1:16 PM, Kanwar Manish wrote:
>>> >>
>>> >>> Thanks Andrus.
>>> >>>
>>> >>> I am afraid that will be a bit tough for me - for now. I am a
>>> complete
>>> >> Java
>>> >>> and Linux noob, coming from .NET background.
>>> >>>
>>> >>> I tried attaching 3.1B1 source to the binaries [in Netbeans 7.2] but
>>> >>> failed. I just can't figure out which source folder to attach with
>>> which
>>> >>> Cayenne Jar [Client, server, tools or lifecycle].
>>> >>>
>>> >>> Can anybody help me out here please?
>>> >>>
>>> >>> Thanks
>>> >>> Manish
>>> >>>
>>> >>>
>>> >>>
>>> >>> On Fri, Aug 3, 2012 at 1:28 PM, Andrus Adamchik <
>>> [email protected]
>>> >>> wrote:
>>> >>>
>>> >>>> Hi,
>>> >>>>
>>> >>>> I am not aware of any issues with PostAdd. Your best bet is to debug
>>> >>>> inside Cayenne DataContext.newObject(..). Specifically in
>>> BaseContext
>>> >> there
>>> >>>> is a method "injectInitialValue" that has this line at the end:
>>> >>>>
>>> >>>> // invoke callbacks
>>> >>>> getEntityResolver().getCallbackRegistry().performCallbacks(
>>> >>>> LifecycleEvent.POST_ADD,
>>> >>>> object);
>>> >>>>
>>> >>>> This is where callbacks are invoked. Please share what you find
>>> here,
>>> >> and
>>> >>>> maybe based on those clues we can unwind it further.
>>> >>>>
>>> >>>> Cheers,
>>> >>>> Andrus
>>> >>>>
>>> >>>>
>>> >>>> On Aug 3, 2012, at 9:08 AM, KM wrote:
>>> >>>>
>>> >>>>> Removed the check for the key.
>>> >>>>>
>>> >>>>> It seems that the problem is that this is not getting fired at all.
>>> >>>>> Breakpoint is not being hit. This is strange.
>>> >>>>>
>>> >>>>> I have checked for the abstract declaration in the parent class.
>>> >> Setting
>>> >>>>> this up in the modeler.
>>> >>>>>
>>> >>>>> Has anyone faced this problem before?
>>> >>>>>
>>> >>>>> Thanks
>>> >>>>> Kanwar Manish
>>> >>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>> --
>>> >>>>> View this message in context:
>>> >>>>
>>> >>
>>> http://cayenne.195.n3.nabble.com/Can-default-values-be-set-in-Constructor-instead-of-setPersistenceState-tp3320047p4024479.html
>>> >>>>> Sent from the Cayenne - User mailing list archive at Nabble.com.
>>> >>>>>
>>> >>>>
>>> >>>>
>>> >>
>>> >>
>>>
>>>
>>
>