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