[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] JavaHL: Explicitly pass jobject jthis when processing dispose() call rather than stashing a reference in the SVNBase class where it can be missused later

From: Vladimir Berezniker <vmpn_at_hitechman.com>
Date: Fri, 25 May 2012 15:29:58 -0400

The reason they are long lived is because they are reusable. E.g. directory
can be used for any number of files/directories within it. However,
regarding not needing to keep track of objects I think I see where you
are coming from. At the moment the parent and child objects are tied
because I allocated child pools from parent pools therefore their order of
cleanup is important. The reason for that design was that I could free up
child resources when the parent was disposed even if the children were not.
But of the top of my head I cannot see why it has to be this way. For
example child object pools can be allocated from the global JNI pool
instead thus eliminating the need to track children. Code will be simpler
but the JavaHL users won't be as protected from themselves.

I need to dig through the code and think about it some more,

Vladimir

On Fri, May 25, 2012 at 2:36 PM, Hyrum K Wright
<hyrum.wright_at_wandisco.com>wrote:

> +1 to commit to trunk. Please include "Approved by: hwright" in the
> log message.
>
> Out of curiosity, why do directory objects need to live across method
> invocations with the RA interface? I would have thought that even if
> this is true, it won't matter, since those objects would be pure Java
> objects handled by the JVM.
>
> -Hyrum
>
> On Fri, May 25, 2012 at 12:35 PM, Vladimir Berezniker
> <vmpn_at_hitechman.com> wrote:
> > Greetings,
> >
> > Currently SVNBase class uses a member variable jthis to hold a copy of
> > jobject
> > reference. This variable lives as long as SVNClient object lives,
> however,
> > the
> > reference itself is only valid during a single JNI call. To address this
> > mismatch
> > the attached patch passes the jobject reference as a parameter instead.
> > This
> > eliminates the risk of the jobject reference being misused outside the
> > scope
> > where it is valid. This mismatch becomes more evident on JavaHL
> > RA editor API is implemented where objects like directories live across
> > method
> > calls.
> >
> > [[[
> > JavaHL: Explicitly pass jobject jthis when processing dispose() call
> rather
> > than stashing a reference in the SVNBase class where it can be misused
> > later
> >
> > [ in subversion/bindings/javahl/native ]
> >
> > * SVNBase.cpp,
> > SVNBase.h
> > (dispose, jthis): Accept jobject jthis as explicit parameter to
> dispose()
> > and
> > delete the member variable jthis
> >
> > * SVNClient.cpp,
> > SVNClient.h,
> > SVNRepos.cpp,
> > SVNRepos.h
> > (dispose): Accept object jthis as explicit parameter and pass it to
> > SVNBase::dispose
> >
> > * org_apache_subversion_javahl_SVNClient.cpp,
> > org_apache_subversion_javahl_SVNRepos.cpp
> > (Java_org_apache_subversion_javahl_SVNClient_dispose,
> > Java_org_apache_subversion_javahl_SVNRepos_dispose):
> > Pass object jthis as explicit parameter and pass it to the C++ wrapper
> > class
> > ]]]
> >
> > Thank you,
> >
> > Vladimir
>
>
>
> --
>
> uberSVN: Apache Subversion Made Easy
> http://www.uberSVN.com/
>
Received on 2012-05-25 21:30:33 CEST

This is an archived mail posted to the Subversion Dev mailing list.