diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2012-06-15 17:20:12 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2012-06-15 17:20:12 +0000 |
commit | 885d63becb5b651b161d3e695a7bc4b3b512c424 (patch) | |
tree | 5e8fdb08bbaaaf58b759acfd1660816419eac831 | |
parent | fa8babc296c51c31166e718af1cdd3b4c650142e (diff) | |
download | qpid-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
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); } - } |