You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2013/02/27 15:39:19 UTC

svn commit: r1450788 - in /qpid/proton/trunk: proton-c/bindings/java/src/main/java/org/apache/qpid/proton/messenger/jni/ proton-j/proton-api/src/main/java/org/apache/qpid/proton/ proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/ proto...

Author: rgodfrey
Date: Wed Feb 27 14:39:18 2013
New Revision: 1450788

URL: http://svn.apache.org/r1450788
Log:
PROTON-214 : JNIMessenger should check return code from native method calls and throw relevant exception

Added:
    qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/TimeoutException.java
Modified:
    qpid/proton/trunk/proton-c/bindings/java/src/main/java/org/apache/qpid/proton/messenger/jni/JNIMessenger.java
    qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/Messenger.java
    qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/MessengerException.java
    qpid/proton/trunk/proton-j/proton/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java

Modified: qpid/proton/trunk/proton-c/bindings/java/src/main/java/org/apache/qpid/proton/messenger/jni/JNIMessenger.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/java/src/main/java/org/apache/qpid/proton/messenger/jni/JNIMessenger.java?rev=1450788&r1=1450787&r2=1450788&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/bindings/java/src/main/java/org/apache/qpid/proton/messenger/jni/JNIMessenger.java (original)
+++ qpid/proton/trunk/proton-c/bindings/java/src/main/java/org/apache/qpid/proton/messenger/jni/JNIMessenger.java Wed Feb 27 14:39:18 2013
@@ -22,9 +22,10 @@ package org.apache.qpid.proton.messenger
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.concurrent.TimeoutException;
 import org.apache.qpid.proton.ProtonCEquivalent;
+import org.apache.qpid.proton.ProtonException;
 import org.apache.qpid.proton.ProtonUnsupportedOperationException;
+import org.apache.qpid.proton.TimeoutException;
 import org.apache.qpid.proton.jni.Proton;
 import org.apache.qpid.proton.jni.SWIGTYPE_p_pn_message_t;
 import org.apache.qpid.proton.jni.SWIGTYPE_p_pn_messenger_t;
@@ -56,13 +57,8 @@ class JNIMessenger implements Messenger
     {
         SWIGTYPE_p_pn_message_t message_t = (message instanceof JNIMessage) ? ((JNIMessage)message).getImpl() : convertMessage(message);
         int err = Proton.pn_messenger_put(_impl, message_t);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
-
     private SWIGTYPE_p_pn_message_t convertMessage(final Message message)
     {
         int length = 512;
@@ -86,11 +82,7 @@ class JNIMessenger implements Messenger
     public void send() throws TimeoutException
     {
         int err = Proton.pn_messenger_send(_impl);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
@@ -104,11 +96,7 @@ class JNIMessenger implements Messenger
     public void recv(final int count) throws TimeoutException
     {
         int err = Proton.pn_messenger_recv(_impl, count);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
@@ -116,11 +104,7 @@ class JNIMessenger implements Messenger
     {
         SWIGTYPE_p_pn_message_t msg = Proton.pn_message();
         int err = Proton.pn_messenger_get(_impl, msg);
-        if(err != 0)
-        {
-            //TODO - error handling... null?
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
         return new JNIMessage(msg);
     }
 
@@ -128,33 +112,21 @@ class JNIMessenger implements Messenger
     public void start() throws IOException
     {
         int err = Proton.pn_messenger_start(_impl);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
     public void stop()
     {
         int err = Proton.pn_messenger_stop(_impl);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
     public void setTimeout(final long timeInMillis)
     {
         int err = Proton.pn_messenger_set_timeout(_impl, (int) timeInMillis);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
@@ -185,11 +157,7 @@ class JNIMessenger implements Messenger
     public void setIncomingWindow(final int window)
     {
         int err = Proton.pn_messenger_set_incoming_window(_impl, window);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
@@ -202,11 +170,7 @@ class JNIMessenger implements Messenger
     public void setOutgoingWindow(final int window)
     {
         int err = Proton.pn_messenger_set_outgoing_window(_impl, window);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
@@ -225,33 +189,21 @@ class JNIMessenger implements Messenger
     public void reject(final Tracker tracker, final int flags)
     {
         int err = Proton.pn_messenger_reject(_impl, ((JNITracker) tracker).getTracker(), flags);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
     public void accept(final Tracker tracker, final int flags)
     {
         int err = Proton.pn_messenger_accept(_impl, ((JNITracker) tracker).getTracker(), flags);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
     public void settle(final Tracker tracker, final int flags)
     {
         int err = Proton.pn_messenger_settle(_impl, ((JNITracker) tracker).getTracker(), flags);
-        if(err != 0)
-        {
-            //TODO - error handling
-            throw new ProtonUnsupportedOperationException("Messenger error handling not yet implemented");
-        }
+        check(err);
     }
 
     @Override
@@ -278,6 +230,23 @@ class JNIMessenger implements Messenger
         return Status.UNKNOWN;  //TODO - is this correct?
     }
 
+    private void check(int errorCode) throws ProtonException
+    {
+        if(errorCode != 0)
+        {
+            String errorMessage = Proton.pn_messenger_error(_impl);
+            if(errorCode == Proton.PN_TIMEOUT)
+            {
+                throw new TimeoutException(errorMessage);
+            }
+            else
+            {
+                throw new MessengerException(errorMessage);
+            }
+        }
+    }
+
+
     @Override
     protected void finalize() throws Throwable
     {

Added: qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/TimeoutException.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/TimeoutException.java?rev=1450788&view=auto
==============================================================================
--- qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/TimeoutException.java (added)
+++ qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/TimeoutException.java Wed Feb 27 14:39:18 2013
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+package org.apache.qpid.proton;
+
+public class TimeoutException extends ProtonException
+{
+    public TimeoutException()
+    {
+    }
+
+    public TimeoutException(String message)
+    {
+        super(message);
+    }
+
+    public TimeoutException(String message, Throwable cause)
+    {
+        super(message, cause);
+    }
+
+    public TimeoutException(Throwable cause)
+    {
+        super(cause);
+    }
+}

Modified: qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/Messenger.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/Messenger.java?rev=1450788&r1=1450787&r2=1450788&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/Messenger.java (original)
+++ qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/Messenger.java Wed Feb 27 14:39:18 2013
@@ -21,8 +21,8 @@
 package org.apache.qpid.proton.messenger;
 
 import java.io.IOException;
-import java.util.concurrent.TimeoutException;
 
+import org.apache.qpid.proton.TimeoutException;
 import org.apache.qpid.proton.message.Message;
 
 /**

Modified: qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/MessengerException.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/MessengerException.java?rev=1450788&r1=1450787&r2=1450788&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/MessengerException.java (original)
+++ qpid/proton/trunk/proton-j/proton-api/src/main/java/org/apache/qpid/proton/messenger/MessengerException.java Wed Feb 27 14:39:18 2013
@@ -21,7 +21,9 @@
 
 package org.apache.qpid.proton.messenger;
 
-public class MessengerException extends Exception
+import org.apache.qpid.proton.ProtonException;
+
+public class MessengerException extends ProtonException
 {
     public MessengerException()
     {

Modified: qpid/proton/trunk/proton-j/proton/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/proton/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java?rev=1450788&r1=1450787&r2=1450788&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/proton/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java (original)
+++ qpid/proton/trunk/proton-j/proton/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java Wed Feb 27 14:39:18 2013
@@ -25,11 +25,11 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.EnumSet;
 import java.util.Iterator;
-import java.util.concurrent.TimeoutException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.apache.qpid.proton.ProtonFactoryLoader;
+import org.apache.qpid.proton.TimeoutException;
 import org.apache.qpid.proton.driver.Connector;
 import org.apache.qpid.proton.driver.Driver;
 import org.apache.qpid.proton.driver.DriverFactory;
@@ -202,12 +202,12 @@ public class MessengerImpl implements Me
         }
     }
 
-    public void send() throws java.util.concurrent.TimeoutException
+    public void send() throws TimeoutException
     {
         waitUntil(_sentSettled);
     }
 
-    public void recv(int n) throws java.util.concurrent.TimeoutException
+    public void recv(int n) throws TimeoutException
     {
         if (n == -1) {
             _unlimitedCredit = true;



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