Author: rajith
Date: Mon Jun 18 14:50:19 2012
New Revision: 1351372
URL: http://svn.apache.org/viewvc?rev=1351372&view=rev
Log:
QPID-4027 Added unregister methods for session, sender and receivers.
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/ConnectionInternal.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/SessionInternal.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ConnectionManagementDecorator.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ReceiverManagementDecorator.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SenderManagementDecorator.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/ConnectionInternal.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/ConnectionInternal.java?rev=1351372&r1=1351371&r2=1351372&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/ConnectionInternal.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/ConnectionInternal.java
Mon Jun 18 14:50:19 2012
@@ -39,6 +39,8 @@ public interface ConnectionInternal exte
public void recreate() throws MessagingException;
+ public void unregisterSession(SessionInternal sesion);
+
/**
* The per connection lock that is used by the connection
* and it's child objects. A single lock is used to prevent
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/SessionInternal.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/SessionInternal.java?rev=1351372&r1=1351371&r2=1351372&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/SessionInternal.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/internal/SessionInternal.java
Mon Jun 18 14:50:19 2012
@@ -27,4 +27,10 @@ public interface SessionInternal extends
public void exception(MessagingException e);
public void recreate() throws MessagingException;
+
+ public String getName();
+
+ public void unregisterReceiver(ReceiverInternal receiver);
+
+ public void unregisterSender(SenderInternal sender);
}
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ConnectionManagementDecorator.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ConnectionManagementDecorator.java?rev=1351372&r1=1351371&r2=1351372&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ConnectionManagementDecorator.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ConnectionManagementDecorator.java
Mon Jun 18 14:50:19 2012
@@ -119,7 +119,14 @@ public class ConnectionManagementDecorat
_state = ConnectionState.CLOSED;
for (Session ssn : _sessions.values())
{
- ssn.close();
+ try
+ {
+ ssn.close();
+ }
+ catch (Exception e)
+ {
+ _logger.warn("Error closing session",e);
+ }
}
_sessions.clear();
@@ -138,7 +145,7 @@ public class ConnectionManagementDecorat
try
{
if (name == null || name.isEmpty()) { name =
generateSessionName(); }
- SessionInternal ssn = new
SessionManagementDecorator(this,_delegate.createSession(name));
+ SessionInternal ssn = new
SessionManagementDecorator(this,name,_delegate.createSession(name));
_sessions.put(name, ssn);
return ssn;
}
@@ -159,7 +166,7 @@ public class ConnectionManagementDecorat
try
{
if (name == null || name.isEmpty()) { name =
generateSessionName(); }
- SessionInternal ssn = new
SessionManagementDecorator(this,_delegate.createTransactionalSession(name));
+ SessionInternal ssn = new
SessionManagementDecorator(this,name,_delegate.createTransactionalSession(name));
_sessions.put(name, ssn);
return ssn;
}
@@ -213,6 +220,12 @@ public class ConnectionManagementDecorat
return new ArrayList<SessionInternal>(_sessions.values());
}
+ @Override
+ public void unregisterSession(SessionInternal ssn)
+ {
+ _sessions.remove(ssn.getName());
+ }
+
@Override // Called by the delegate or a a session created by this
connection.
public void exception(ConnectionException e)
{
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ReceiverManagementDecorator.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ReceiverManagementDecorator.java?rev=1351372&r1=1351371&r2=1351372&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ReceiverManagementDecorator.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/ReceiverManagementDecorator.java
Mon Jun 18 14:50:19 2012
@@ -170,6 +170,7 @@ public class ReceiverManagementDecorator
{
_state = ReceiverState.CLOSED;
_delegate.close();
+ _ssn.unregisterReceiver(this);
}
}
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SenderManagementDecorator.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SenderManagementDecorator.java?rev=1351372&r1=1351371&r2=1351372&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SenderManagementDecorator.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SenderManagementDecorator.java
Mon Jun 18 14:50:19 2012
@@ -64,6 +64,7 @@ public class SenderManagementDecorator i
{
_state = SenderState.CLOSED;
_delegate.close();
+ _ssn.unregisterSender(this);
}
}
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java?rev=1351372&r1=1351371&r2=1351372&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java
Mon Jun 18 14:50:19 2012
@@ -83,15 +83,17 @@ public class SessionManagementDecorator
private ConnectionInternal _conn;
private Session _delegate;
+ private String _name;
SessionState _state = SessionState.OPENED;
private List<ReceiverInternal> _receivers = new
ArrayList<ReceiverInternal>();
private List<SenderInternal> _senders = new ArrayList<SenderInternal>();
private final Object _connectionLock; // global per connection lock
- public SessionManagementDecorator(ConnectionInternal conn, Session
delegate)
+ public SessionManagementDecorator(ConnectionInternal conn, String name,
Session delegate)
{
_conn = conn;
_delegate = delegate;
+ _name = name;
_connectionLock = conn.getConnectionLock();
}
@@ -110,16 +112,31 @@ public class SessionManagementDecorator
_state = SessionState.CLOSED;
for (Sender sender: _senders)
{
- sender.close();
+ try
+ {
+ sender.close();
+ }
+ catch (Exception e)
+ {
+ _logger.warn("Error closing sender", e);
+ }
}
_senders.clear();
for (Receiver receiver: _receivers)
{
- receiver.close();
+ try
+ {
+ receiver.close();
+ }
+ catch (Exception e)
+ {
+ _logger.warn("Error closing receiver", e);
+ }
}
_receivers.clear();
_delegate.close();
+ _conn.unregisterSession(this);
}
}
@@ -442,6 +459,24 @@ public class SessionManagementDecorator
return _conn;
}
+ @Override
+ public String getName()
+ {
+ return _name;
+ }
+
+ @Override
+ public void unregisterReceiver(ReceiverInternal receiver)
+ {
+ _receivers.remove(receiver);
+ }
+
+ @Override
+ public void unregisterSender(SenderInternal sender)
+ {
+ _senders.remove(sender);
+ }
+
private void checkClosedAndThrowException() throws SessionException
{
checkClosedAndThrowException("Session is closed. You cannot invoke
methods on a closed sesion");
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]