second revolution, 

I just can't say how excited I am.

We are doing magic, critical mass.

Julien goes "I got a silly idea.."

bill makes it real, there is war..

we are doing RAW stuff, and rarely

was I that excited about it all...

you ain't seen nothing yet wankers

PLgC

marcf






> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On 
> Behalf Of Bill Burke
> Sent: Wednesday, March 26, 2003 7:09 PM
> To: Jboss-Dev
> Subject: [JBoss-dev] AOP versioned ACID objects 1st iteration
> 
> 
> I have implemented a new AOP service for Serializable POJOs, 
> Versioned Objects.  You can transactionally version an 
> object.  If you modify the object within a transaction, this 
> modification is not seen by other transactions.  If the tx 
> commits, the changes seen, if a rollback happens the changes 
> are rolled back.  On commit, if another tx has modified the 
> object, the tx will rollback (OptimisticLocking).
> 
> The way it works is as follows:
> 
> POJO pojo = new POJO();
> pojo = (POJO)org.jboss.aop.plugins.Versioned.makeVersioned(pojo);
> 
> calling Versioned.makeVersioned creates a proxy that sits in 
> front of the real object.
> 
> transactionManager.begin();
> 
> pojo.callMethod();
> 
> when callMethod is invoked since there is a transaction, an 
> interceptor creates a copy of the REAL pojo and does all 
> further invocations on this copy.
> 
> pojo.someField = 5;
> 
> If you have field interception turned on, public field will 
> also be accessed via the copy/version
> 
> tm.commit();
> 
> On commit, a tx Synchronization checks to see if the version 
> you have created is the latest and greatest.  If not an 
> org.jboss.aop.plugins.OptimisticLockFailure exception is 
> thrown in beforeCompletion.  I'm not sure how this exception 
> is wrapped.
> 
> Some other semantics:
> 
> 1. All method invocations force a version to be created.  You 
> can avoid this by declared class-metadata as follows:
> 
> <class-metadata name="234234" group="VERSIONED" 
> class="org.jboss.test.aop.bean.VersionedPOJO">
> <method name="get.*">
>   <read-only>true</read-only>
> </method>
> </class-metadata>
> 
> A readonly method will not cause the creation of a version 
> and the current object will be used.
> 
> 
> An example and unit test is under 
> testsuite/src/main/org/jboss/test/aop/bean/VersionedObjectTester.java
> 
> The example object VersionedPOJO.java, has 1 interceptor 
> pointcut declared on the class to do Tx stuff.  See 
> testsuite/src/resources/aop/META-INF/jboss-aop.xml for more details.
> 
> What would be nice is to also write a TransactionalLock 
> interceptor for versioned POJO's that have high 
> OptimisticLock failures.
> 
> Bill
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.net email is sponsored by:
> The Definitive IT and Networking Event. Be There!
> NetWorld+Interop Las Vegas 2003 -- Register today!
> http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en
> _______________________________________________
> Jboss-development mailing list [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
> 



-------------------------------------------------------
This SF.net email is sponsored by:
The Definitive IT and Networking Event. Be There!
NetWorld+Interop Las Vegas 2003 -- Register today!
http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to