summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2012-06-15 17:20:12 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2012-06-15 17:20:12 +0000
commit885d63becb5b651b161d3e695a7bc4b3b512c424 (patch)
tree5e8fdb08bbaaaf58b759acfd1660816419eac831
parentfa8babc296c51c31166e718af1cdd3b4c650142e (diff)
downloadqpid-python-885d63becb5b651b161d3e695a7bc4b3b512c424.tar.gz
QPID-4027 Continuing to fill in the blanks for the CPP implementation.
Changed the JNILayerException to extend the MessagingException. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/address-refactor2@1350700 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java34
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java12
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java104
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java2
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/JNILayerException.java6
5 files changed, 87 insertions, 71 deletions
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java
index 7103af1083..016a80ab21 100644
--- a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java
@@ -18,54 +18,58 @@
package org.apache.qpid.messaging.cpp;
import org.apache.qpid.messaging.Connection;
+import org.apache.qpid.messaging.MessagingException;
import org.apache.qpid.messaging.Session;
+/**
+ * This class relies on the ConnectionManagementDecorator for
+ * management and synchronized access to it's resources.
+ * This class is merely a delegate/wrapper for the,
+ * underlying c++ connection object.
+ */
public class CppConnection implements Connection
{
private org.apache.qpid.messaging.cpp.jni.Connection _cppConn;
-
+
public CppConnection(String url)
{
_cppConn = new org.apache.qpid.messaging.cpp.jni.Connection(url);
}
@Override
- public void open()
+ public void open() throws MessagingException
{
_cppConn.open();
}
@Override
- public boolean isOpen()
+ public boolean isOpen() throws MessagingException
{
- // TODO Auto-generated method stub
- return false;
+ return _cppConn.isOpen();
}
@Override
- public void close()
+ public void close() throws MessagingException
{
_cppConn.close();
+ _cppConn.delete(); //clean up the c++ object
}
@Override
- public Session createSession(String name)
+ public Session createSession(String name) throws MessagingException
{
- return new CppSession(_cppConn.createSession());
+ return new CppSession(this,_cppConn.createSession());
}
@Override
- public Session createTransactionalSession(String name)
+ public Session createTransactionalSession(String name) throws MessagingException
{
- // TODO Auto-generated method stub
- return null;
+ return new CppSession(this,_cppConn.createTransactionalSession());
}
@Override
- public String getAuthenticatedUsername()
+ public String getAuthenticatedUsername() throws MessagingException
{
- // TODO Auto-generated method stub
- return null;
+ return _cppConn.getAuthenticatedUsername();
}
-
}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java
index 5e606cdc23..4f163d7f6b 100644
--- a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java
@@ -19,30 +19,26 @@ package org.apache.qpid.messaging.cpp;
import org.apache.qpid.messaging.Connection;
import org.apache.qpid.messaging.ConnectionFactory;
+import org.apache.qpid.messaging.util.ConnectionManagementDecorator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CppConnectionFactory extends ConnectionFactory
{
private static final Logger _logger = LoggerFactory.getLogger(CppConnectionFactory.class);
-
+
static
{
System.loadLibrary("cqpid_java");
_logger.info("native qpid library was loaded sucessfully");
}
-
+
public CppConnectionFactory()
{
}
- public Connection create(String url)
- {
- return new CppConnection(url);
- }
-
public Connection createConnection(String url)
{
- return create(url);
+ return new ConnectionManagementDecorator(new CppConnection(url));
}
}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java
index 503e07f8c0..f6c822f34e 100644
--- a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java
@@ -20,104 +20,106 @@ package org.apache.qpid.messaging.cpp;
import org.apache.qpid.messaging.Address;
import org.apache.qpid.messaging.Connection;
import org.apache.qpid.messaging.Message;
+import org.apache.qpid.messaging.MessagingException;
import org.apache.qpid.messaging.Receiver;
import org.apache.qpid.messaging.Sender;
import org.apache.qpid.messaging.Session;
+/**
+ * This class relies on the SessionManagementDecorator for
+ * management and synchronized access to it's resources.
+ * This class is merely a delegate/wrapper for the,
+ * underlying c++ session object.
+ */
public class CppSession implements Session
{
- org.apache.qpid.messaging.cpp.jni.Session _cppSession;
-
- public CppSession(org.apache.qpid.messaging.cpp.jni.Session cppSsn)
+ private org.apache.qpid.messaging.cpp.jni.Session _cppSession;
+ private CppConnection _conn;
+
+ public CppSession(CppConnection conn,
+ org.apache.qpid.messaging.cpp.jni.Session cppSsn)
{
_cppSession = cppSsn;
+ _conn = conn;
}
-
+
@Override
public boolean isClosed()
{
- return false;
+ return _cppSession.hasError();
}
@Override
- public void close()
+ public void close() throws MessagingException
{
_cppSession.close();
+ _cppSession.delete(); // delete c++ object.
}
@Override
- public void commit()
+ public void commit() throws MessagingException
{
- // TODO Auto-generated method stub
-
+ _cppSession.commit();
}
@Override
public void rollback()
{
- // TODO Auto-generated method stub
-
+ _cppSession.rollback();
}
@Override
- public void acknowledge(boolean sync)
+ public void acknowledge(boolean sync) throws MessagingException
{
- // TODO Auto-generated method stub
-
+ _cppSession.acknowledge(sync);
}
@Override
- public <T> void acknowledge(Message message, boolean sync)
+ public void acknowledge(Message message, boolean sync) throws MessagingException
{
- // TODO Auto-generated method stub
-
+ _cppSession.acknowledge((org.apache.qpid.messaging.cpp.jni.Message)message, sync);
}
@Override
- public <T> void reject(Message message)
+ public void reject(Message message) throws MessagingException
{
- // TODO Auto-generated method stub
-
+ _cppSession.reject((org.apache.qpid.messaging.cpp.jni.Message)message);
}
@Override
- public <T> void release(Message message)
+ public void release(Message message) throws MessagingException
{
- // TODO Auto-generated method stub
-
+ _cppSession.release((org.apache.qpid.messaging.cpp.jni.Message)message);
}
@Override
- public void sync(boolean block)
+ public void sync(boolean block) throws MessagingException
{
- // TODO Auto-generated method stub
-
+ _cppSession.sync(block);
}
@Override
- public int getReceivable()
+ public int getReceivable() throws MessagingException
{
- // TODO Auto-generated method stub
- return 0;
+ return _cppSession.getReceivable();
}
@Override
- public int getUnsettledAcks()
+ public int getUnsettledAcks() throws MessagingException
{
- // TODO Auto-generated method stub
- return 0;
+ return _cppSession.getUnsettledAcks();
}
@Override
- public Receiver nextReceiver(long timeout)
+ public Receiver nextReceiver(long timeout) throws MessagingException
{
- // TODO Auto-generated method stub
- return null;
+ // This is not correct ..need to revist
+ return new CppReceiver(_cppSession.nextReceiver(new org.apache.qpid.messaging.cpp.jni.Duration(timeout)));
}
@Override
- public Sender createSender(Address address)
+ public Sender createSender(Address address) throws MessagingException
{
return new CppSender(_cppSession
.createSender(new org.apache.qpid.messaging.cpp.jni.Address(
@@ -125,29 +127,43 @@ public class CppSession implements Session
}
@Override
- public Sender createSender(String address)
+ public Sender createSender(String address) throws MessagingException
{
return new CppSender(_cppSession.createSender(address));
}
@Override
- public Receiver createReceiver(Address address)
+ public Receiver createReceiver(Address address) throws MessagingException
{
- // TODO Auto-generated method stub
- return null;
+ return new CppReceiver(_cppSession
+ .createReceiver(new org.apache.qpid.messaging.cpp.jni.Address(
+ address.toString())));
}
@Override
- public Receiver createReceiver(String address)
+ public Receiver createReceiver(String address) throws MessagingException
{
return new CppReceiver(_cppSession.createReceiver(address));
}
@Override
- public Connection getConnection()
+ public Connection getConnection() throws MessagingException
+ {
+ return _conn;
+ }
+
+
+ @Override
+ public boolean hasError()
+ {
+ return _cppSession.hasError();
+ }
+
+
+ @Override
+ public void checkError() throws MessagingException
{
- // TODO Auto-generated method stub
- return null;
+ _cppSession.checkError();
}
}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
index 61678eda47..70303a52a7 100644
--- a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
@@ -28,7 +28,7 @@ import org.apache.qpid.messaging.Sender;
public class CppTest
{
- public static void main(String[] args)
+ public static void main(String[] args) throws Exception
{
Connection con = ConnectionFactory.get().createConnection("localhost:5672");
con.open();
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/JNILayerException.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/JNILayerException.java
index 9921c9e542..62239de667 100644
--- a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/JNILayerException.java
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/JNILayerException.java
@@ -17,9 +17,10 @@
*/
package org.apache.qpid.messaging.cpp;
-public class JNILayerException extends RuntimeException
-{
+import org.apache.qpid.messaging.MessagingException;
+public class JNILayerException extends MessagingException
+{
public JNILayerException(String message)
{
super(message);
@@ -29,5 +30,4 @@ public class JNILayerException extends RuntimeException
{
super(message,t);
}
-
}