RE: auditing mapped classes

2003-02-26 Thread Charles Anthony
afterLookup is fired regardless of whether it was cached or from the
database.

>-Original Message-
>From: Ebersole, Steven [mailto:[EMAIL PROTECTED]
>Sent: 26 February 2003 14:31
>To: 'OJB Users List'
>Subject: RE: auditing mapped classes
>
>
>The PersistenceBrokerListener could definitely be used as a 
>start for this
>functionality along the lines you mention.  A quick question, 
>how does using
>caching affect the afterLookup event?  Is this event only fired when an
>object is materialized from the DB, or after any lookup (regardless of
>whether found in cache or loaded from DB)?
>
>The transaction knowledge depends on what you are trying to 
>accomplish.  For
>example, another thing I need to perform is that if an object changed,
>update its audit fields.  However, a txn-commiting type event 
>is (at least
>has been) problematic because my event processing needs to be 
>included in
>the transaction.  And even for the audtiting requirment I 
>mentioned earlier,
>as long as the event-hub and/or audting gateway is 
>transactional, I don't
>think knowledge of the PB transaction is necessarily required; 
>at least for
>my specs and given my limited understanding of OJB.
>
>My plan would basically be to:
>1) On afterLookup event, store a deep copy of the object just read;
>2) On beforeStore calculate the instance's changeset (using the TopLink
>term);
>if (changes occurred)
>Publish change to the domain-event-hub
>reset the domain objects audit fields
>else
>Do nothing
>
>
>Or I could just leave the journalling as part of the domain objects
>themselves.  I'll have to think about this some more.
>
>
>
>|-Original Message-
>    |From: Charles Anthony [mailto:[EMAIL PROTECTED]
>|Sent: Wednesday, February 26, 2003 2:28 AM
>|To: 'OJB Users List'
>|Subject: RE: auditing mapped classes
>|
>|
>|Hi,
>|
>|I think it *may* be possible using the 
>|PersistenceBrokerListener mechanism.
>|The PersistenceBrokerListener is an interface, 
>|implementations of which can
>|be added to a persistence broker.
>|It has call-backs for when objects are "looked up", and 
>|when they are
>|"stored" (among other events).
>|
>|You could "copy" the objects attributes after looking up, 
>|and compare them
>|when they are stored.
>|
>|This is essentially what the ODMG layer is doing, but in a 
>|different way.
>|
>|The one caveat would be (and I need to solve this for a 
>|problem myself) is
>|knowing when the PersistenceBroker transaction is 
>|committed/rolled back -
>|that is really when you would want to compare the 
>|attributes of stored
>|objects. This should be possible by adding the appropriate 
>    |callbacks to the
>    |PBListener mechanism.
>|
>|HTH a little,
>|
>|Cheers,
>|
>|Charles.
>|
>|
>|>-Original Message-
>|>From: Ebersole, Steven [mailto:[EMAIL PROTECTED]
>|>Sent: 25 February 2003 20:39
>|>To: 'OJB Users List'
>|>Subject: RE: auditing mapped classes
>|>
>|>
>|>I think ideally this fits as low on the persistence mechanism 
>|>as possible
>|>(i.e., the DB).  However, the thought of implementing 
>|this as a web of
>|>triggers, when I have a nice Object layer directly above, just 
>|>seems silly.
>|>
>|>I impetus behind this is that I am writing a thin interface 
>|>layer over (and
>|>hiding) the particular O/R implementation; much like you have 
>|>spoken about
>|>on this list quite a few times.  Currently Castor is built and 
>|>OJB is a work
>|>in progress and TopLink is on the horizon.  Castor has no 
>|such concept,
>|>although they too have the callback mechanism.  This is what 
>|>lead me to the
>|>InvocationHandler/Map/Journaler approach.  Basically the 
>|domain objects
>|>extend a base, which instantiates a 
>|InvocationHandler-wrapped Map and
>|>listens for persistence callbacks.  The Map also has an attached
>|>"Journaller" responsible for maintaining changes state of 
>|the object
>|>(similiar to the DB concept).  At transaction start, it 
>|>initiailizes the
>|>Journaler and begins recording changes.  At commit, it 
>|>notifies an EventHub
>|>which is responsible for in turn notifying the 
>|integration and 

RE: auditing mapped classes

2003-02-26 Thread Ebersole, Steven
The PersistenceBrokerListener could definitely be used as a start for this
functionality along the lines you mention.  A quick question, how does using
caching affect the afterLookup event?  Is this event only fired when an
object is materialized from the DB, or after any lookup (regardless of
whether found in cache or loaded from DB)?

The transaction knowledge depends on what you are trying to accomplish.  For
example, another thing I need to perform is that if an object changed,
update its audit fields.  However, a txn-commiting type event is (at least
has been) problematic because my event processing needs to be included in
the transaction.  And even for the audtiting requirment I mentioned earlier,
as long as the event-hub and/or audting gateway is transactional, I don't
think knowledge of the PB transaction is necessarily required; at least for
my specs and given my limited understanding of OJB.

My plan would basically be to:
1) On afterLookup event, store a deep copy of the object just read;
2) On beforeStore calculate the instance's changeset (using the TopLink
term);
if (changes occurred)
Publish change to the domain-event-hub
reset the domain objects audit fields
else
Do nothing


Or I could just leave the journalling as part of the domain objects
themselves.  I'll have to think about this some more.



|-Original Message-
|From: Charles Anthony [mailto:[EMAIL PROTECTED]
|Sent: Wednesday, February 26, 2003 2:28 AM
|To: 'OJB Users List'
    |Subject: RE: auditing mapped classes
|
|
|Hi,
|
|I think it *may* be possible using the 
|PersistenceBrokerListener mechanism.
|The PersistenceBrokerListener is an interface, 
|implementations of which can
|be added to a persistence broker.
|It has call-backs for when objects are "looked up", and 
|when they are
|"stored" (among other events).
|
|You could "copy" the objects attributes after looking up, 
|and compare them
|when they are stored.
|
|This is essentially what the ODMG layer is doing, but in a 
|different way.
|
|The one caveat would be (and I need to solve this for a 
|problem myself) is
|knowing when the PersistenceBroker transaction is 
|committed/rolled back -
|that is really when you would want to compare the 
|attributes of stored
|objects. This should be possible by adding the appropriate 
|callbacks to the
|PBListener mechanism.
|
|HTH a little,
|
|Cheers,
|
|Charles.
|
|
|>-Original Message-
|>From: Ebersole, Steven [mailto:[EMAIL PROTECTED]
|>Sent: 25 February 2003 20:39
|>To: 'OJB Users List'
|>Subject: RE: auditing mapped classes
|>
|>
|>I think ideally this fits as low on the persistence mechanism 
|>as possible
|>(i.e., the DB).  However, the thought of implementing 
|this as a web of
|>triggers, when I have a nice Object layer directly above, just 
|>seems silly.
|>
|>I impetus behind this is that I am writing a thin interface 
|>layer over (and
|>hiding) the particular O/R implementation; much like you have 
|>spoken about
|>on this list quite a few times.  Currently Castor is built and 
|>OJB is a work
|>in progress and TopLink is on the horizon.  Castor has no 
|such concept,
|>although they too have the callback mechanism.  This is what 
|>lead me to the
|>InvocationHandler/Map/Journaler approach.  Basically the 
|domain objects
|>extend a base, which instantiates a 
|InvocationHandler-wrapped Map and
|>listens for persistence callbacks.  The Map also has an attached
|>"Journaller" responsible for maintaining changes state of 
|the object
|>(similiar to the DB concept).  At transaction start, it 
|>initiailizes the
|>Journaler and begins recording changes.  At commit, it 
|>notifies an EventHub
|>which is responsible for in turn notifying the 
|integration and audting
|>gateways.
|>
|>Then, on doing some advanced scouting on the TopLink stuff, I 
|>noticed the
|>changeset stuff and thought it would be really, really nice to 
|>have this
|>refactored out of the domain classes theselves.  I guess, I 
|>wasn't thinking
|>of the processing integrated into the O/R layer, just a 
|callback-level
|>interface so that parallel systems could basically 
|register interest in
|>changes.
|>
|>With the OJB persistence wrapping, I was hoping to utilize the 
|>PB approach.
|>But it sounds like this will not be possible.
    |>
    |>
|>
|>|-Original Message-
 

RE: auditing mapped classes

2003-02-26 Thread Charles Anthony
Hi,

I think it *may* be possible using the PersistenceBrokerListener mechanism.
The PersistenceBrokerListener is an interface, implementations of which can
be added to a persistence broker.
It has call-backs for when objects are "looked up", and when they are
"stored" (among other events).

You could "copy" the objects attributes after looking up, and compare them
when they are stored.

This is essentially what the ODMG layer is doing, but in a different way.

The one caveat would be (and I need to solve this for a problem myself) is
knowing when the PersistenceBroker transaction is committed/rolled back -
that is really when you would want to compare the attributes of stored
objects. This should be possible by adding the appropriate callbacks to the
PBListener mechanism.

HTH a little,

Cheers,

Charles.


>-Original Message-
>From: Ebersole, Steven [mailto:[EMAIL PROTECTED]
>Sent: 25 February 2003 20:39
>To: 'OJB Users List'
>Subject: RE: auditing mapped classes
>
>
>I think ideally this fits as low on the persistence mechanism 
>as possible
>(i.e., the DB).  However, the thought of implementing this as a web of
>triggers, when I have a nice Object layer directly above, just 
>seems silly.
>
>I impetus behind this is that I am writing a thin interface 
>layer over (and
>hiding) the particular O/R implementation; much like you have 
>spoken about
>on this list quite a few times.  Currently Castor is built and 
>OJB is a work
>in progress and TopLink is on the horizon.  Castor has no such concept,
>although they too have the callback mechanism.  This is what 
>lead me to the
>InvocationHandler/Map/Journaler approach.  Basically the domain objects
>extend a base, which instantiates a InvocationHandler-wrapped Map and
>listens for persistence callbacks.  The Map also has an attached
>"Journaller" responsible for maintaining changes state of the object
>(similiar to the DB concept).  At transaction start, it 
>initiailizes the
>Journaler and begins recording changes.  At commit, it 
>notifies an EventHub
>which is responsible for in turn notifying the integration and audting
>gateways.
>
>Then, on doing some advanced scouting on the TopLink stuff, I 
>noticed the
>changeset stuff and thought it would be really, really nice to 
>have this
>refactored out of the domain classes theselves.  I guess, I 
>wasn't thinking
>of the processing integrated into the O/R layer, just a callback-level
>interface so that parallel systems could basically register interest in
>changes.
>
>With the OJB persistence wrapping, I was hoping to utilize the 
>PB approach.
>But it sounds like this will not be possible.
>
>
>
>|-Original Message-
>|From: Thomas Mahler [mailto:[EMAIL PROTECTED]
>|Sent: Tuesday, February 25, 2003 2:16 PM
>|To: OJB Users List
>|Subject: Re: auditing mapped classes
>|
>|
>|Hi STeven,
>|
>|Ebersole, Steven wrote:
>|> I'll take silence as a no...
>|
>|In my case silence just means "tom did not find the time 
>to answer 
>|yet... or even worse he did miss the original posting..."
>|
>|> 
>|> |-Original Message-
>|> |From: Ebersole, Steven 
>[mailto:[EMAIL PROTECTED]
>|> |Sent: Monday, February 24, 2003 10:35 AM
>|> |To: OJB Users List (E-mail)
>|> |Subject: auditing mapped classes
>|> |
>|> |
>|> |I was wondering if OJB has built-in support for auditing 
>|> |state changes in
>|> |the classes which are mapped under its control.  What I am 
>|> |thinking of is
>|> |something along the lines of TopLink's changeset concept.
>|
>|depends on the API we are talking about:
>|- For OJB-PersistenceBroker it's a clear no.
>|- For OJB-JDO it's a clear yes. The JDO spec does require JDO 
>|implementations to do this. The required code is injected 
>into the 
>|persistent classes by bytecode  enhancement.
>|- For OJB-ODMG it's a clear "partially":
>|in our ODMG implementation all instances managed by a 
>|transaction are 
>|inserted into so called ObjectEnvelope objects. The 
>ObjectEnvelope 
>|implements the contract between a persistent instance and 
>|the ODMG ty 
>|management. It contains a snapshot of the persistent 
>|instance of the 
>|point in time when it was registered.
>|This Envelope is use on TX commit to detect all changes to the 
>|persistent instance.
>|But as we do no bytecode enhancement in ODMG, we don't get 
&g

RE: auditing mapped classes

2003-02-25 Thread Ebersole, Steven
I think ideally this fits as low on the persistence mechanism as possible
(i.e., the DB).  However, the thought of implementing this as a web of
triggers, when I have a nice Object layer directly above, just seems silly.

I impetus behind this is that I am writing a thin interface layer over (and
hiding) the particular O/R implementation; much like you have spoken about
on this list quite a few times.  Currently Castor is built and OJB is a work
in progress and TopLink is on the horizon.  Castor has no such concept,
although they too have the callback mechanism.  This is what lead me to the
InvocationHandler/Map/Journaler approach.  Basically the domain objects
extend a base, which instantiates a InvocationHandler-wrapped Map and
listens for persistence callbacks.  The Map also has an attached
"Journaller" responsible for maintaining changes state of the object
(similiar to the DB concept).  At transaction start, it initiailizes the
Journaler and begins recording changes.  At commit, it notifies an EventHub
which is responsible for in turn notifying the integration and audting
gateways.

Then, on doing some advanced scouting on the TopLink stuff, I noticed the
changeset stuff and thought it would be really, really nice to have this
refactored out of the domain classes theselves.  I guess, I wasn't thinking
of the processing integrated into the O/R layer, just a callback-level
interface so that parallel systems could basically register interest in
changes.

With the OJB persistence wrapping, I was hoping to utilize the PB approach.
But it sounds like this will not be possible.



|-Original Message-
|From: Thomas Mahler [mailto:[EMAIL PROTECTED]
|Sent: Tuesday, February 25, 2003 2:16 PM
|To: OJB Users List
    |Subject: Re: auditing mapped classes
|
|
|Hi STeven,
|
|Ebersole, Steven wrote:
|> I'll take silence as a no...
|
|In my case silence just means "tom did not find the time to answer 
|yet... or even worse he did miss the original posting..."
|
|> 
|> |-Original Message-
|> |From: Ebersole, Steven [mailto:[EMAIL PROTECTED]
|> |Sent: Monday, February 24, 2003 10:35 AM
|> |To: OJB Users List (E-mail)
|> |Subject: auditing mapped classes
|> |
|> |
|> |I was wondering if OJB has built-in support for auditing 
|> |state changes in
|> |the classes which are mapped under its control.  What I am 
|> |thinking of is
|> |something along the lines of TopLink's changeset concept.
|
|depends on the API we are talking about:
|- For OJB-PersistenceBroker it's a clear no.
|- For OJB-JDO it's a clear yes. The JDO spec does require JDO 
|implementations to do this. The required code is injected into the 
|persistent classes by bytecode  enhancement.
|- For OJB-ODMG it's a clear "partially":
|in our ODMG implementation all instances managed by a 
|transaction are 
|inserted into so called ObjectEnvelope objects. The ObjectEnvelope 
|implements the contract between a persistent instance and 
|the ODMG ty 
|management. It contains a snapshot of the persistent 
|instance of the 
|point in time when it was registered.
|This Envelope is use on TX commit to detect all changes to the 
|persistent instance.
|But as we do no bytecode enhancement in ODMG, we don't get 
|triggered, 
|when user code modifies an instance under ODMG control.
|
|
|> |Currently I have a base domain class which is responsible 
|> |for tracking these
|> |property changes, and then publishing notification to an 
|> |event manager which
|> |brokers those notifications to auditing and 
|integration gateways.
|> |
|> |In TopLink, I could utilize its EventManager and 
|DescriptorEvent to
|> |externalize this whole process (basically refactoring it 
|> |out of the domain
|> |classes).  And basically, I was just wondering if 
|> |something similiar already
|> |exists in OJB.
|
|No there is nothing that maps directly to this concepts. 
|We only provide 
|simple instance callback mechanisms to inform instances about 
|persistence operations going on.
|
|But (apart from the bytecode enhanced JDO) we do not 
|interfere with user 
|code accessing attributes.
|
|
|Do you think this is an important functionality for an O/R layer?
|Where (which OJB layer) could you imagine to fit it in?
|Would a generalized bytecode-enhancement or an aspect 
|weaving mechanism 
|be a possible solution?
|
|cheers,
|Thomas
|
|
|
|> |
|> |
|> |
|> |
|&g

Re: auditing mapped classes

2003-02-25 Thread Thomas Mahler
Hi STeven,

Ebersole, Steven wrote:
I'll take silence as a no...
In my case silence just means "tom did not find the time to answer 
yet... or even worse he did miss the original posting..."

|-Original Message-
|From: Ebersole, Steven [mailto:[EMAIL PROTECTED]
|Sent: Monday, February 24, 2003 10:35 AM
|To: OJB Users List (E-mail)
|Subject: auditing mapped classes
|
|
|I was wondering if OJB has built-in support for auditing 
|state changes in
|the classes which are mapped under its control.  What I am 
|thinking of is
|something along the lines of TopLink's changeset concept.
depends on the API we are talking about:
- For OJB-PersistenceBroker it's a clear no.
- For OJB-JDO it's a clear yes. The JDO spec does require JDO 
implementations to do this. The required code is injected into the 
persistent classes by bytecode  enhancement.
- For OJB-ODMG it's a clear "partially":
in our ODMG implementation all instances managed by a transaction are 
inserted into so called ObjectEnvelope objects. The ObjectEnvelope 
implements the contract between a persistent instance and the ODMG ty 
management. It contains a snapshot of the persistent instance of the 
point in time when it was registered.
This Envelope is use on TX commit to detect all changes to the 
persistent instance.
But as we do no bytecode enhancement in ODMG, we don't get triggered, 
when user code modifies an instance under ODMG control.


|Currently I have a base domain class which is responsible 
|for tracking these
|property changes, and then publishing notification to an 
|event manager which
|brokers those notifications to auditing and integration gateways.
|
|In TopLink, I could utilize its EventManager and DescriptorEvent to
|externalize this whole process (basically refactoring it 
|out of the domain
|classes).  And basically, I was just wondering if 
|something similiar already
|exists in OJB.
No there is nothing that maps directly to this concepts. We only provide 
simple instance callback mechanisms to inform instances about 
persistence operations going on.

But (apart from the bytecode enhanced JDO) we do not interfere with user 
code accessing attributes.

Do you think this is an important functionality for an O/R layer?
Where (which OJB layer) could you imagine to fit it in?
Would a generalized bytecode-enhancement or an aspect weaving mechanism 
be a possible solution?

cheers,
Thomas


|
|
|
|
|Steve Ebersole
|IT Integration Engineer
|Vignette Corporation 
|Office: 512.741.4195
|Mobile: 512.297.5438
|
|Visit http://www.vignette.com
|
|---
|--
|To unsubscribe, e-mail: [EMAIL PROTECTED]
|For additional commands, e-mail: [EMAIL PROTECTED]
|

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


RE: auditing mapped classes

2003-02-25 Thread Ebersole, Steven
I'll take silence as a no...


|-Original Message-
|From: Ebersole, Steven [mailto:[EMAIL PROTECTED]
|Sent: Monday, February 24, 2003 10:35 AM
|To: OJB Users List (E-mail)
|Subject: auditing mapped classes
|
|
|I was wondering if OJB has built-in support for auditing 
|state changes in
|the classes which are mapped under its control.  What I am 
|thinking of is
|something along the lines of TopLink's changeset concept.
|
|Currently I have a base domain class which is responsible 
|for tracking these
|property changes, and then publishing notification to an 
|event manager which
|brokers those notifications to auditing and integration gateways.
|
|In TopLink, I could utilize its EventManager and DescriptorEvent to
|externalize this whole process (basically refactoring it 
|out of the domain
|classes).  And basically, I was just wondering if 
|something similiar already
|exists in OJB.
|
|
|
|
|Steve Ebersole
|IT Integration Engineer
|Vignette Corporation 
|Office: 512.741.4195
|Mobile: 512.297.5438
|
|Visit http://www.vignette.com
|
|---
|--
|To unsubscribe, e-mail: [EMAIL PROTECTED]
|For additional commands, e-mail: [EMAIL PROTECTED]
|

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]