You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by vm...@apache.org on 2012/06/21 05:34:05 UTC
svn commit: r1352400 - in
/subversion/branches/javahl-ra/subversion/bindings/javahl:
native/SVNBase.cpp native/SVNBase.h
src/org/apache/subversion/javahl/JNIObject.java
Author: vmpn
Date: Thu Jun 21 03:34:05 2012
New Revision: 1352400
URL: http://svn.apache.org/viewvc?rev=1352400&view=rev
Log:
On the javahl-ra branch:
JavaHL: New method for creating java objects linked to their C++ counterpart
[ in subversion/bindings/javahl/native ]
* SVNBase.cpp,
SVNBase.h
(createCppBoundObject): New method for creating java objects linked to their
C++ counterpart
[ in subversion/bindings/javahl/src/org/tigris/subversion/javahl/ ]
* JNIObject.java: Base class for JNI linked java objects
Added:
subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java
Modified:
subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp
subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.h
Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp?rev=1352400&r1=1352399&r2=1352400&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp Thu Jun 21 03:34:05 2012
@@ -97,3 +97,29 @@ inline void SVNBase::findCppAddrFieldID(
}
}
}
+
+jobject SVNBase::createCppBoundObject(const char *clazzName)
+{
+ JNIEnv *env = JNIUtil::getEnv();
+
+ // Create java session object
+ jclass clazz = env->FindClass(clazzName);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ static jmethodID ctor = 0;
+ if (ctor == 0)
+ {
+ ctor = env->GetMethodID(clazz, "<init>", "(J)V");
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ }
+
+ jlong cppAddr = this->getCppAddr();
+
+ jobject jself = env->NewObject(clazz, ctor, cppAddr);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ return jself;
+}
Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.h?rev=1352400&r1=1352399&r2=1352400&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.h (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.h Thu Jun 21 03:34:05 2012
@@ -82,6 +82,11 @@ class SVNBase
*/
void dispose(jobject jthis, jfieldID *fid, const char *className);
+ /**
+ * Instantiates java object attached to this base object
+ */
+ jobject createCppBoundObject(const char *clazzName);
+
private:
/**
* If the value pointed to by @a fid is zero, find the @c jfieldID
Added: subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java?rev=1352400&view=auto
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java (added)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java Thu Jun 21 03:34:05 2012
@@ -0,0 +1,43 @@
+/**
+ * @copyright
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ * @endcopyright
+ */
+
+package org.apache.subversion.javahl;
+
+/**
+ * This class is used internally by the JavaHL implementation and not
+ * considered part part of the public API.
+ */
+public abstract class JNIObject
+{
+ /**
+ * slot for the address of the native peer.
+ * The JNI code controls this field. If it is set to 0 then
+ * underlying JNI object has been freed
+ */
+ protected long cppAddr;
+
+ protected JNIObject(long cppAddr)
+ {
+ this.cppAddr = cppAddr;
+ }
+}
Re: svn commit: r1352400 - in /subversion/branches/javahl-ra/subversion/bindings/javahl:
native/SVNBase.cpp native/SVNBase.h src/org/apache/subversion/javahl/JNIObject.java
Posted by Vladimir Berezniker <vm...@hitechman.com>.
On Thu, Jun 21, 2012 at 1:43 PM, Blair Zajac <bl...@orcaware.com> wrote:
> On 06/20/2012 08:34 PM, vmpn@apache.org wrote:
>
>> Author: vmpn
>> Date: Thu Jun 21 03:34:05 2012
>> New Revision: 1352400
>>
>> URL: http://svn.apache.org/viewvc?**rev=1352400&view=rev<http://svn.apache.org/viewvc?rev=1352400&view=rev>
>> Log:
>> On the javahl-ra branch:
>>
>> JavaHL: New method for creating java objects linked to their C++
>> counterpart
>>
>> [ in subversion/bindings/javahl/**native ]
>>
>> * SVNBase.cpp,
>> SVNBase.h
>> (createCppBoundObject): New method for creating java objects linked to
>> their
>> C++ counterpart
>>
>> [ in subversion/bindings/javahl/**src/org/tigris/subversion/**javahl/ ]
>>
>> * JNIObject.java: Base class for JNI linked java objects
>>
>> Added:
>> subversion/branches/javahl-ra/**subversion/bindings/javahl/**
>> src/org/apache/subversion/**javahl/JNIObject.java
>> Modified:
>> subversion/branches/javahl-ra/**subversion/bindings/javahl/**
>> native/SVNBase.cpp
>> subversion/branches/javahl-ra/**subversion/bindings/javahl/**
>> native/SVNBase.h
>>
>> Modified: subversion/branches/javahl-ra/**subversion/bindings/javahl/**
>> native/SVNBase.cpp
>> URL: http://svn.apache.org/viewvc/**subversion/branches/javahl-ra/**
>> subversion/bindings/javahl/**native/SVNBase.cpp?rev=**
>> 1352400&r1=1352399&r2=1352400&**view=diff<http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp?rev=1352400&r1=1352399&r2=1352400&view=diff>
>> ==============================**==============================**
>> ==================
>> --- subversion/branches/javahl-ra/**subversion/bindings/javahl/**native/SVNBase.cpp
>> (original)
>> +++ subversion/branches/javahl-ra/**subversion/bindings/javahl/**native/SVNBase.cpp
>> Thu Jun 21 03:34:05 2012
>> @@ -97,3 +97,29 @@ inline void SVNBase::findCppAddrFieldID(
>> }
>> }
>> }
>> +
>> +jobject SVNBase::createCppBoundObject(**const char *clazzName)
>> +{
>> + JNIEnv *env = JNIUtil::getEnv();
>> +
>> + // Create java session object
>> + jclass clazz = env->FindClass(clazzName);
>> + if (JNIUtil::**isJavaExceptionThrown())
>> + return NULL;
>> +
>> + static jmethodID ctor = 0;
>> + if (ctor == 0)
>> + {
>>
>
> The { are indented two spaces:
>
> http://subversion.apache.org/**docs/community-guide/**conventions.html<http://subversion.apache.org/docs/community-guide/conventions.html>
>
> There's other indentation fixes also needed.
>
Noted. Revised in r1352727 and r1352734.
>
> +package org.apache.subversion.javahl;
>> +
>> +/**
>> + * This class is used internally by the JavaHL implementation and not
>> + * considered part part of the public API.
>> + */
>> +public abstract class JNIObject
>> +{
>> + /**
>> + * slot for the address of the native peer.
>> + * The JNI code controls this field. If it is set to 0 then
>> + * underlying JNI object has been freed
>> + */
>> + protected long cppAddr;
>>
>
> Can this be final?
>
> Very good point. Improved in r1352729
Thank you for the review,
Vladimir
Re: svn commit: r1352400 - in /subversion/branches/javahl-ra/subversion/bindings/javahl:
native/SVNBase.cpp native/SVNBase.h src/org/apache/subversion/javahl/JNIObject.java
Posted by Blair Zajac <bl...@orcaware.com>.
On 06/20/2012 08:34 PM, vmpn@apache.org wrote:
> Author: vmpn
> Date: Thu Jun 21 03:34:05 2012
> New Revision: 1352400
>
> URL: http://svn.apache.org/viewvc?rev=1352400&view=rev
> Log:
> On the javahl-ra branch:
>
> JavaHL: New method for creating java objects linked to their C++ counterpart
>
> [ in subversion/bindings/javahl/native ]
>
> * SVNBase.cpp,
> SVNBase.h
> (createCppBoundObject): New method for creating java objects linked to their
> C++ counterpart
>
> [ in subversion/bindings/javahl/src/org/tigris/subversion/javahl/ ]
>
> * JNIObject.java: Base class for JNI linked java objects
>
> Added:
> subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java
> Modified:
> subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp
> subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.h
>
> Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp
> URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp?rev=1352400&r1=1352399&r2=1352400&view=diff
> ==============================================================================
> --- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp (original)
> +++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNBase.cpp Thu Jun 21 03:34:05 2012
> @@ -97,3 +97,29 @@ inline void SVNBase::findCppAddrFieldID(
> }
> }
> }
> +
> +jobject SVNBase::createCppBoundObject(const char *clazzName)
> +{
> + JNIEnv *env = JNIUtil::getEnv();
> +
> + // Create java session object
> + jclass clazz = env->FindClass(clazzName);
> + if (JNIUtil::isJavaExceptionThrown())
> + return NULL;
> +
> + static jmethodID ctor = 0;
> + if (ctor == 0)
> + {
The { are indented two spaces:
http://subversion.apache.org/docs/community-guide/conventions.html
There's other indentation fixes also needed.
> +package org.apache.subversion.javahl;
> +
> +/**
> + * This class is used internally by the JavaHL implementation and not
> + * considered part part of the public API.
> + */
> +public abstract class JNIObject
> +{
> + /**
> + * slot for the address of the native peer.
> + * The JNI code controls this field. If it is set to 0 then
> + * underlying JNI object has been freed
> + */
> + protected long cppAddr;
Can this be final?
Blair