You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by mc...@apache.org on 2013/10/25 19:35:47 UTC

svn commit: r1535795 - in /qpid/trunk/qpid/cpp/bindings/qpid/ruby: ChangeLog ruby.i

Author: mcpierce
Date: Fri Oct 25 17:35:47 2013
New Revision: 1535795

URL: http://svn.apache.org/r1535795
Log:
QPID-5250: Raise all exceptions within Ruby bindings.

Created a static definition for MessagingError in Ruby, then had all
thrown exceptions within the bindings extend that to maintain backwards
compatibility.

Modified:
    qpid/trunk/qpid/cpp/bindings/qpid/ruby/ChangeLog
    qpid/trunk/qpid/cpp/bindings/qpid/ruby/ruby.i

Modified: qpid/trunk/qpid/cpp/bindings/qpid/ruby/ChangeLog
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/ruby/ChangeLog?rev=1535795&r1=1535794&r2=1535795&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/ruby/ChangeLog (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/ruby/ChangeLog Fri Oct 25 17:35:47 2013
@@ -1,5 +1,6 @@
 Version 0.26:
 	* QPID-4834: Ruby client examples incorrectly handles '--connection-options' option
+	* QPID-5250: Wrapped all C++ exceptions as Ruby exceptions.
 
 Version 0.24:
 	* No language-specific changes.

Modified: qpid/trunk/qpid/cpp/bindings/qpid/ruby/ruby.i
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/ruby/ruby.i?rev=1535795&r1=1535794&r2=1535795&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/ruby/ruby.i (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/ruby/ruby.i Fri Oct 25 17:35:47 2013
@@ -25,12 +25,95 @@
 
 /* Define the general-purpose exception handling */
 %exception {
+
+  static VALUE eMessagingError = rb_define_class("MessagingError",
+                                                 rb_eStandardError);
+
     try {
         $action
     }
-    catch (qpid::messaging::MessagingException& mex) {
-        static VALUE merror = rb_define_class("MessagingError", rb_eStandardError);
-        rb_raise(merror, mex.what());
+    catch(qpid::messaging::InvalidOptionString& error) {
+      static VALUE merror = rb_define_class("InvalidOptionString", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::KeyError& error) {
+      static VALUE merror = rb_define_class("KeyError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::LinkError& error) {
+      static VALUE merror = rb_define_class("LinkError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::AddressError& error) {
+      static VALUE merror = rb_define_class("AddressError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::ResolutionError& error) {
+      static VALUE merror = rb_define_class("ResolutionError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::AssertionFailed& error) {
+      static VALUE merror = rb_define_class("AssertionFailed", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::NotFound& error) {
+      static VALUE merror = rb_define_class("NotFound", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::MalformedAddress& error) {
+      static VALUE merror = rb_define_class("MalformedAddress", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::ReceiverError& error) {
+      static VALUE merror = rb_define_class("ReceiverError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::FetchError& error) {
+      static VALUE merror = rb_define_class("FetchError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::NoMessageAvailable& error) {
+      static VALUE merror = rb_define_class("NoMessageAvailable", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::SenderError& error) {
+      static VALUE merror = rb_define_class("SenderError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::SendError& error) {
+      static VALUE merror = rb_define_class("SendError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::TargetCapacityExceeded& error) {
+      static VALUE merror = rb_define_class("TargetCapacityExceeded", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::SessionError& error) {
+      static VALUE merror = rb_define_class("SessionError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::TransactionError& error) {
+      static VALUE merror = rb_define_class("TransactionError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::TransactionAborted& error) {
+      static VALUE merror = rb_define_class("TransactionAborted", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::UnauthorizedAccess& error) {
+      static VALUE merror = rb_define_class("UnauthorizedAccess", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::ConnectionError& error) {
+      static VALUE merror = rb_define_class("ConnectionError", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::TransportFailure& error) {
+      static VALUE merror = rb_define_class("TransportFailure", eMessagingError);
+      rb_raise(merror, error.what());
+    }
+    catch(qpid::messaging::MessagingException& error) {
+        rb_raise(eMessagingError, error.what());
     }
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org