Yes, its a deep copy which is why I require Serializable.

new MarshalledObject(obj).get();  

Maybe there is a better way to make copies?

> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Behalf Of Hiram
> Chirino
> Sent: Thursday, March 27, 2003 10:15 AM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] AOP versioned ACID objects 1st iteration
> 
> 
> 
> Bill,
> 
> If you use versioning on a POJO that is a the top of
> an object graph, will the children objects also be
> versions when they are modified???
> 
> I assume No.  But I think it would make sense for your
> Versioning interceptor to wrap up children objets with
> the versioning proxy also when they are accessed. 
> That way if you do a:
> 
> pojo = (POJO)Versioned.makeVersioned(pojo);
> pojo.getAccount().getBalance().add(10.00);
> 
> The modification of the Balance object will be
> versioned too.  Does that make sense to you??  Do you
> do this now??
> 
> Regards,
> Hiram
> 
> --- Bill Burke <[EMAIL PROTECTED]> wrote:
> > 
> > 
> > > -----Original Message-----
> > > From:
> > [EMAIL PROTECTED]
> > >
> >
> [mailto:[EMAIL PROTECTED]
> > Behalf Of
> > > Karthik
> > > Sent: Thursday, March 27, 2003 1:25 AM
> > > To: [EMAIL PROTECTED]
> > > Subject: RE: [JBoss-dev] AOP versioned ACID
> > objects 1st iteration
> > >
> > >
> > > Hi bill,
> > >    The versioning of POJO is very good. I have
> > some issues here. If I
> > > version a object, then I have to maintain all the
> > state in the same POJO
> > 
> > How is this not the general case?  All application
> > code accesses the POJO
> > through the proxy.  I am going to write a
> > constructor-pointcut that will
> > always return a proxy instead of the real POJO on
> > construction.
> > 
> > > which is not the general case and will bloat the
> > code. The states are
> > > maintained in the helper classes. Also defining
> > each POJO as versioned is
> > > meaningless. If new proxies are created for each
> > transaction with the deep
> > > copy of all the state or maintain a pool and
> > synchronize the state after
> > > update,  it will become real performance
> > bottleneck.How do you tackle this
> > > problem?
> > 
> > There is only one proxy, but you are correct.  For
> > each transaction, a full
> > snapshot is taken of the real object.  All access to
> > the object is done
> > through one proxy.
> > 
> > The performance hit is the full deep copy not the
> > synchronization.
> > Synchronization is only:
> > 
> > realObject = snapshot;
> > 
> > Remember, we're optimistically locking here. 
> > (Although I'd like to
> > optionally provide a transactional lock in the near
> > future).
> > 
> > The alternative solution is much much more complex. 
> > The biggest problem
> > being, how do you determine when a POJO's state has
> > changed?  For instance:
> > 
> > Pojo.someHashMapField.get().setValue(blah).  You see
> > my point?
> > 
> > A full deep copy greatly simplifies the code. 
> > Simplicity == robustness.
> > Plus I'm not even sure versioned fields would be
> > better performing.  Field
> > interception is quite expensive and versioned fields
> > would need field
> > interception.
> > 
> > The code is under: 
> > varia/src/main/org/jboss/aop/plugins/Version*.java
> > testcase is under
> >
> testsuite/src/main/org/jboss/test/aop/bean/Version*.java
> > (take a look at the AOP DD under
> > testsuite/src/resource/aop/META-INF/jboss-aop.xml
> > too).
> > 
> > Bill
> > 
> > 
> > 
> > >    Correct me if I am missing something.
> > >
> > >    Where or when can get the code from the CVS?
> > >
> > > Thanks
> > >
> > > Karthi
> > >
> > > > -----Original Message-----
> > > > From:
> > [EMAIL PROTECTED]
> > > >
> >
> [mailto:[EMAIL PROTECTED]
> > > > Behalf Of Bill
> > > > Burke
> > > > Sent: Thursday, March 27, 2003 10:43 AM
> > > > To: [EMAIL PROTECTED]
> > > > Subject: RE: [JBoss-dev] AOP versioned ACID
> > objects 1st iteration
> > > >
> > > >
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From:
> > [EMAIL PROTECTED]
> > > > >
> >
> [mailto:[EMAIL PROTECTED]
> > > > Behalf Of Jeff
> > > > > Haynie
> > > > > Sent: Wednesday, March 26, 2003 11:51 PM
> > > > > To: [EMAIL PROTECTED]
> > > > > Subject: RE: [JBoss-dev] AOP versioned ACID
> > objects 1st iteration
> > > > >
> > > > >
> > > > >
> > > > > >JBoss Remoting is much more fabulous.  We
> > need to get the
> > > > word out on
> > > > > it...
> > > > >
> > > > > I need to write some darn docs.. Too busy
> > trying to get a
> > > > new release
> > > > > out on our side. Not enough hours in a day.
> > > > >
> > > > >
> > > > > > I totally agree.  And yes, a constructor
> > pointcut is the
> > > > way to go.
> > > > > The only downside of constructor pointcuts is
> > that
> > > > reflection bypasses
> > > > > the interception!
> > > > > > Same thing with field interception.  The
> > problem is that unlike
> > > > > methods, you have to modify the bytecode of
> > the calling logic.
> > > > >
> > > > > Could you dynamically do an insertBefore into
> > the
> > > > CtConstructor of the
> > > > > advised class which would do the interception,
> > even on reflection?
> > > > >
> > > >
> > > > I'm not sure...The problem with Versioning and
> > Remoting is
> > > > that a proxy
> > > > object is required.  You have to return a
> > different object
> > > > than the one
> > > > actually constructed.  You getting me?  I'm not
> > sure if this
> > > > can be done
> > > > within bytecode manipulation.  I'll have to ask
> > the Javassist guys.
> > > >
> > > > > > I will write some testcases that put the
> > whole stack together with
> > > > > constructor pointcuts.
> > > > > >
> > > > > > I'm also working on the concept of an
> > abstract Container.
> > > >  But you got
> > > > > me thinking that constructor pointcuts may be
> > enough...
> > > > >
> > > > > I was just going to email you about the
> > Container - just
> > > > looking through
> > > > > the code. Is this just the ability to create
> > an AOP namespace or
> > > > > something?
> > > > >
> > > >
> > > > I guess you could think of it in that way and
> > use it in that
> > > > way, but the
> > > > original intent was to handle things like
> > dynamic loading through the
> > > > persistence mechanism much in the same way an
> > Entity Bean
> > > > Container handles
> > > > invocations on objects that are not in memory
> > yet.  You get
> > > > what I'm saying?
> > > >
> > > > Bill
> > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > 
> === message truncated ===
> 
> 
> __________________________________________________
> Do you Yahoo!?
> Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop!
> http://platinum.yahoo.com
> 
> 
> -------------------------------------------------------
> 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