You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2013/11/21 01:07:30 UTC

svn commit: r1543991 - in /subversion/trunk/subversion/bindings/javahl/native/jniwrapper: jni_base.cpp jni_env.hpp jni_exception.hpp jni_javahl_exception.hpp jni_stack.hpp

Author: brane
Date: Thu Nov 21 00:07:30 2013
New Revision: 1543991

URL: http://svn.apache.org/r1543991
Log:
Put JavaHL/jniwrapper's exception signal into the correct namespace.

[in subversion/bindings/javahl]
* native/jniwrapper/jni_javahl_exception.hpp: Removed.
* native/jniwrapper/jni_env.hpp: Do not include jni_javahl_exception.hpp.
  (Java::SignalExceptionThrown): replaces JavaHL::JavaException, and is
   no longer derived from std::exception.
  (Java::Env::throw_java_exception, Java::Env::check_java_exception):
   Update references to JavaHL::JavaException.

* native/jniwrapper/jni_base.cpp,
  native/jniwrapper/jni_exception.hpp,
  native/jniwrapper/jni_stack.hpp:
   Update all references to JavaHL::JavaException.

Removed:
    subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_javahl_exception.hpp
Modified:
    subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp
    subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_env.hpp
    subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp
    subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp

Modified: subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp?rev=1543991&r1=1543990&r2=1543991&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp Thu Nov 21 00:07:30 2013
@@ -212,29 +212,10 @@ const char* const IndexOutOfBoundsExcept
 const char* const IOException::m_class_name =
   "java/io/IOException";
 
-} // namespace Java
-
-
-namespace JavaHL {
-
-// class JavaHL::JavaException
-
-JavaException::~JavaException() throw() {}
-
-const char* JavaException::what() const throw()
-{
-  // FIXME: Implement this?
-  return "";
-}
-
-} // namespace JavaHL
-
 
 // Implementation of jni_stack.hpp
 
-namespace Java {
-
-void handle_svn_error(::Java::Env env, ::svn_error_t* err)
+void handle_svn_error(Env env, ::svn_error_t* err)
 {
   jthrowable cause = NULL;
 
@@ -244,14 +225,13 @@ void handle_svn_error(::Java::Env env, :
   if (env.ExceptionCheck())
     {
       cause = env.ExceptionOccurred();
-      const jclass excls = ::Java::ClassCache::get_subversion_exception();
-      if (env.IsInstanceOf(cause, excls))
+      if (env.IsInstanceOf(cause, ClassCache::get_subversion_exception()))
         {
           // XXX FIXME: Should really have a special error code
           // specifically for propagating Java exceptions from
           // callbacks through native code.
           svn_error_clear(err);
-          throw ::JavaHL::JavaException();
+          throw SignalExceptionThrown();
         }
     }
 
@@ -260,7 +240,7 @@ void handle_svn_error(::Java::Env env, :
     env.ExceptionClear();
 
   ::JNIUtil::handleSVNError(err, cause);
-  throw ::JavaHL::JavaException();
+  throw SignalExceptionThrown();
 }
 
 } // namespace Java

Modified: subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_env.hpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_env.hpp?rev=1543991&r1=1543990&r2=1543991&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_env.hpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_env.hpp Thu Nov 21 00:07:30 2013
@@ -30,8 +30,6 @@
 
 #include "svn_private_config.h"
 
-#include "jni_javahl_exception.hpp"
-
 #ifdef SVN_JAVAHL_DEBUG
 #  ifndef SVN_JAVAHL_JNIWRAPPER_LOG
 #    include <iostream>
@@ -45,6 +43,17 @@
 namespace Java {
 
 /**
+ * A C++ exception object for signalling that a Java exception has
+ * been thrown.
+ *
+ * Thrown to unwind the stack while avoiding code clutter when a Java
+ * exception is detected in the JNI environment.
+ *
+ * @since New in 1.9.
+ */
+class SignalExceptionThrown {};
+
+/**
  * Auto-initializing proxy for the JNI method ID.
  *
  * Behaves like a @c jmethodID but automatically initializes to @c NULL.
@@ -542,13 +551,13 @@ private:
 
   void throw_java_exception() const
     {
-      throw ::JavaHL::JavaException();
+      throw SignalExceptionThrown();
     }
 
   void check_java_exception() const
     {
       if (m_env->ExceptionCheck())
-        throw ::JavaHL::JavaException();
+        throw SignalExceptionThrown();
     }
 
   void throw_java_out_of_memory(const char* message) const;

Modified: subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp?rev=1543991&r1=1543990&r2=1543991&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp Thu Nov 21 00:07:30 2013
@@ -27,7 +27,6 @@
 
 #include "jni_env.hpp"
 #include "jni_object.hpp"
-#include "jni_javahl_exception.hpp"
 
 namespace Java {
 
@@ -60,7 +59,7 @@ public:
   void raise() const
     {
       throw_java_exception();
-      throw ::JavaHL::JavaException();
+      throw SignalExceptionThrown();
     }
 
   /**
@@ -73,7 +72,7 @@ public:
   void raise(const char* message) const
     {
       throw_java_exception(message);
-      throw ::JavaHL::JavaException();
+      throw SignalExceptionThrown();
     }
 
   /**

Modified: subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp?rev=1543991&r1=1543990&r2=1543991&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp Thu Nov 21 00:07:30 2013
@@ -102,7 +102,7 @@
  * @since New in 1.9.
  */
 #define SVN_JAVAHL_JNI_CATCH_TO_EXCEPTION(X)                            \
-  catch (const ::JavaHL::JavaException&)                                \
+  catch (const ::Java::SignalExceptionThrown&)                          \
     {                                                                   \
       SVN_JAVAHL_ASSERT_EXCEPTION_THROWN(::Java::Env(jenv));            \
     }                                                                   \
@@ -158,7 +158,7 @@
     {                                                                   \
       S;                                                                \
     }                                                                   \
-  catch (const ::JavaHL::JavaException&)                                \
+  catch (const ::Java::SignalExceptionThrown&)                          \
     {                                                                   \
       SVN_JAVAHL_ASSERT_EXCEPTION_THROWN((E));                          \
       return svn_error_create((C), NULL, _("Java exception"));          \