From 40c5aa3f6dfdaa456e84d886448c25c4a889c906 Mon Sep 17 00:00:00 2001 From: Eduardo Sanchez-Ros Date: Wed, 10 Feb 2021 12:24:20 +0100 Subject: [PATCH 1/7] Add SessionID to SessionStateListener methods --- .../jmx/mbean/session/SessionAdmin.java | 22 +- .../src/main/java/quickfix/Session.java | 22 +- .../java/quickfix/SessionStateListener.java | 87 ++++++-- .../SessionDisconnectConcurrentlyTest.java | 22 +- .../test/java/quickfix/SessionResetTest.java | 22 +- .../quickfix/SessionStateListenerTest.java | 206 ++++++++++++++++++ .../src/test/java/quickfix/SessionTest.java | 4 +- .../java/quickfix/SocketInitiatorTest.java | 32 +-- .../java/quickfix/UnitTestApplication.java | 18 +- 9 files changed, 342 insertions(+), 93 deletions(-) create mode 100644 quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java diff --git a/quickfixj-core/src/main/java/org/quickfixj/jmx/mbean/session/SessionAdmin.java b/quickfixj-core/src/main/java/org/quickfixj/jmx/mbean/session/SessionAdmin.java index a0bfc2d6ba..527325b060 100644 --- a/quickfixj-core/src/main/java/org/quickfixj/jmx/mbean/session/SessionAdmin.java +++ b/quickfixj-core/src/main/java/org/quickfixj/jmx/mbean/session/SessionAdmin.java @@ -391,47 +391,47 @@ public ObjectName preRegister(MBeanServer server, ObjectName name) throws Except // Session State Notifications // - public void onConnect() { + public void onConnect(SessionID sessionID) { sendNotification("connect"); } - public void onDisconnect() { + public void onDisconnect(SessionID sessionID) { sendNotification("disconnect"); } - public void onLogon() { + public void onLogon(SessionID sessionID) { sendNotification("logon"); } - public void onLogout() { + public void onLogout(SessionID sessionID) { sendNotification("logout"); } - public void onHeartBeatTimeout() { + public void onHeartBeatTimeout(SessionID sessionID) { sendNotification("heartBeatTimeout"); } - public void onMissedHeartBeat() { + public void onMissedHeartBeat(SessionID sessionID) { sendNotification("missedHeartBeat"); } - public void onRefresh() { + public void onRefresh(SessionID sessionID) { sendNotification("refresh"); } - public void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { sendNotification("resendRequestSent"); } - public void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { + public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { sendNotification("sequenceResetReceived"); } - public void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { + public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { sendNotification("resentRequestSatisfied"); } - public void onReset() { + public void onReset(SessionID sessionID) { sendNotification("reset"); } diff --git a/quickfixj-core/src/main/java/quickfix/Session.java b/quickfixj-core/src/main/java/quickfix/Session.java index 803ccd2b54..f1eae32768 100644 --- a/quickfixj-core/src/main/java/quickfix/Session.java +++ b/quickfixj-core/src/main/java/quickfix/Session.java @@ -564,9 +564,9 @@ public void setResponder(Responder responder) { synchronized (responderLock) { this.responder = responder; if (responder != null) { - stateListener.onConnect(); + stateListener.onConnect(sessionID); } else { - stateListener.onDisconnect(); + stateListener.onDisconnect(sessionID); } } } @@ -1489,7 +1489,7 @@ private void nextSequenceReset(Message sequenceReset) throws IOException, Reject if (validateSequenceNumbers && sequenceReset.isSetField(NewSeqNo.FIELD)) { final int newSequence = sequenceReset.getInt(NewSeqNo.FIELD); - stateListener.onSequenceResetReceived(newSequence, isGapFill); + stateListener.onSequenceResetReceived(sessionID, newSequence, isGapFill); getLog().onEvent( "Received SequenceReset FROM: " + getExpectedTargetNum() + " TO: " + newSequence); @@ -1789,7 +1789,7 @@ private boolean verify(Message msg, boolean checkTooHigh, boolean checkTooLow) getLog().onEvent( "ResendRequest for messages FROM " + range.getBeginSeqNo() + " TO " + range.getEndSeqNo() + " has been satisfied."); - stateListener.onResendRequestSatisfied(range.getBeginSeqNo(), range.getEndSeqNo()); + stateListener.onResendRequestSatisfied(sessionID, range.getBeginSeqNo(), range.getEndSeqNo()); state.setResendRange(0, 0, 0); } } @@ -1958,7 +1958,7 @@ public void next() throws IOException { if (state.isTimedOut()) { if (!disableHeartBeatCheck) { disconnect("Timed out waiting for heartbeat", true); - stateListener.onHeartBeatTimeout(); + stateListener.onHeartBeatTimeout(sessionID); } else { LOG.warn("Heartbeat failure detected but deactivated"); } @@ -1966,7 +1966,7 @@ public void next() throws IOException { if (state.isTestRequestNeeded()) { generateTestRequest("TEST"); getLog().onEvent("Sent test request TEST"); - stateListener.onMissedHeartBeat(); + stateListener.onMissedHeartBeat(sessionID); } else if (state.isHeartBeatNeeded()) { generateHeartbeat(); } @@ -2079,7 +2079,7 @@ public void disconnect(String reason, boolean logError) throws IOException { logApplicationException("onLogout()", t); } - stateListener.onLogout(); + stateListener.onLogout(sessionID); } } finally { // QFJ-457 now enabled again if acceptor @@ -2262,7 +2262,7 @@ private void nextLogon(Message logon) throws FieldNotFound, RejectLogon, Incorre } catch (final Throwable t) { logApplicationException("onLogon()", t); } - stateListener.onLogon(); + stateListener.onLogon(sessionID); lastSessionLogon = SystemTime.currentTimeMillis(); logonAttempts = 0; } @@ -2485,7 +2485,7 @@ private void sendResendRequest(String beginString, int msgSeqNum, int beginSeqNo int resendRangeEndSeqNum = msgSeqNum - 1; int resendRangeCurrentSeqNum = resendRequestChunkSize == 0 ? 0 : lastEndSeqNoSent; state.setResendRange(beginSeqNo, resendRangeEndSeqNum, resendRangeCurrentSeqNum); - stateListener.onResendRequestSent(beginSeqNo, resendRangeEndSeqNum, resendRangeCurrentSeqNum); + stateListener.onResendRequestSent(sessionID, beginSeqNo, resendRangeEndSeqNum, resendRangeCurrentSeqNum); } private boolean validatePossDup(Message msg) throws FieldNotFound, IOException { @@ -2661,7 +2661,7 @@ private void resetState() { } try { state.reset(); - stateListener.onReset(); + stateListener.onReset(sessionID); } finally { isResettingState.set(false); state.setResetStatePending(false); @@ -3035,7 +3035,7 @@ private void setLogonTags(final Message logon) { private void refreshState() throws IOException { getLog().onEvent("Refreshing message/state store on Logon"); getStore().refresh(); - stateListener.onRefresh(); + stateListener.onRefresh(sessionID); } } diff --git a/quickfixj-core/src/main/java/quickfix/SessionStateListener.java b/quickfixj-core/src/main/java/quickfix/SessionStateListener.java index 3d039a4a72..6aea13d458 100644 --- a/quickfixj-core/src/main/java/quickfix/SessionStateListener.java +++ b/quickfixj-core/src/main/java/quickfix/SessionStateListener.java @@ -21,37 +21,80 @@ public interface SessionStateListener { - default void onConnect(){ - } + @Deprecated + default void onConnect() { + onConnect(null); + } - default void onDisconnect(){ - } + void onConnect(SessionID sessionID); - default void onLogon(){ - } + @Deprecated + default void onDisconnect() { + onDisconnect(null); + } - default void onLogout(){ - } + void onDisconnect(SessionID sessionID); - default void onReset(){ - } + @Deprecated + default void onLogon() { + onLogon(null); + } - default void onRefresh(){ - } + void onLogon(SessionID sessionID); - default void onMissedHeartBeat(){ - } + @Deprecated + default void onLogout() { + onLogout(null); + } - default void onHeartBeatTimeout(){ - } + void onLogout(SessionID sessionID); - default void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo){ - } + @Deprecated + default void onReset() { + onReset(null); + } - default void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag){ - } + void onReset(SessionID sessionID); - default void onResendRequestSatisfied(int beginSeqNo, int endSeqNo){ - } + @Deprecated + default void onRefresh() { + onRefresh(null); + } + void onRefresh(SessionID sessionID); + + @Deprecated + default void onMissedHeartBeat() { + onMissedHeartBeat(null); + } + + void onMissedHeartBeat(SessionID sessionID); + + @Deprecated + default void onHeartBeatTimeout() { + onHeartBeatTimeout(null); + } + + void onHeartBeatTimeout(SessionID sessionID); + + @Deprecated + default void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + onResendRequestSent(null, beginSeqNo, endSeqNo, currentEndSeqNo); + } + + void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo); + + @Deprecated + default void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { + onSequenceResetReceived(null, newSeqNo, gapFillFlag); + } + + void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag); + + @Deprecated + default void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { + onResendRequestSatisfied(null, beginSeqNo, endSeqNo); + } + + void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo); } diff --git a/quickfixj-core/src/test/java/quickfix/SessionDisconnectConcurrentlyTest.java b/quickfixj-core/src/test/java/quickfix/SessionDisconnectConcurrentlyTest.java index 815d5676d9..7cfeed11b9 100644 --- a/quickfixj-core/src/test/java/quickfix/SessionDisconnectConcurrentlyTest.java +++ b/quickfixj-core/src/test/java/quickfix/SessionDisconnectConcurrentlyTest.java @@ -330,37 +330,37 @@ public void disconnect() { } } - public void onConnect() { + public void onConnect(SessionID sessionID) { } - public void onDisconnect() { + public void onDisconnect(SessionID sessionID) { } - public void onLogon() { + public void onLogon(SessionID sessionID) { } - public void onLogout() { + public void onLogout(SessionID sessionID) { } - public void onReset() { + public void onReset(SessionID sessionID) { } - public void onRefresh() { + public void onRefresh(SessionID sessionID) { } - public void onMissedHeartBeat() { + public void onMissedHeartBeat(SessionID sessionID) { } - public void onHeartBeatTimeout() { + public void onHeartBeatTimeout(SessionID sessionID) { } - public void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { } - public void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { + public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { } - public void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { + public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { } } diff --git a/quickfixj-core/src/test/java/quickfix/SessionResetTest.java b/quickfixj-core/src/test/java/quickfix/SessionResetTest.java index effb7c8a07..486a056223 100644 --- a/quickfixj-core/src/test/java/quickfix/SessionResetTest.java +++ b/quickfixj-core/src/test/java/quickfix/SessionResetTest.java @@ -107,38 +107,38 @@ public String getRemoteAddress() { public void disconnect() { } - public void onConnect() { + public void onConnect(SessionID sessionID) { } - public void onDisconnect() { + public void onDisconnect(SessionID sessionID) { } - public void onLogon() { + public void onLogon(SessionID sessionID) { } - public void onLogout() { + public void onLogout(SessionID sessionID) { } - public void onReset() { + public void onReset(SessionID sessionID) { onResetCalled = true; } - public void onRefresh() { + public void onRefresh(SessionID sessionID) { } - public void onMissedHeartBeat() { + public void onMissedHeartBeat(SessionID sessionID) { } - public void onHeartBeatTimeout() { + public void onHeartBeatTimeout(SessionID sessionID) { } - public void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { } - public void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { + public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { } - public void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { + public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { } } diff --git a/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java b/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java new file mode 100644 index 0000000000..f523af589f --- /dev/null +++ b/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java @@ -0,0 +1,206 @@ +package quickfix; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.verify; + +public class SessionStateListenerTest { + + private DefaultSessionStateListener spySessionStateListener; + + @Before + public void setUp() throws Exception { + DefaultSessionStateListener sessionStateListener = new DefaultSessionStateListener(); + spySessionStateListener = Mockito.spy(sessionStateListener); + } + + @Test + public void testOnConnect() { + // Given + + // When + spySessionStateListener.onConnect(); + + // Then + verify(spySessionStateListener).onConnect(any()); + } + + @Test + public void testOnDisconnect() { + // Given + + // When + spySessionStateListener.onDisconnect(); + + // Then + verify(spySessionStateListener).onDisconnect(null); + } + + @Test + public void testOnLogon() { + // Given + + // When + spySessionStateListener.onLogon(); + + // Then + verify(spySessionStateListener).onLogon(null); + } + + @Test + public void testOnLogout() { + // Given + + // When + spySessionStateListener.onLogout(); + + // Then + verify(spySessionStateListener).onLogout(null); + } + + @Test + public void testOnReset() { + // Given + + // When + spySessionStateListener.onReset(); + + // Then + verify(spySessionStateListener).onReset(null); + } + + @Test + public void testOnRefresh() { + // Given + + // When + spySessionStateListener.onRefresh(); + + // Then + verify(spySessionStateListener).onRefresh(null); + } + + @Test + public void testOnMissedHeartBeat() { + // Given + + // When + spySessionStateListener.onMissedHeartBeat(); + + // Then + verify(spySessionStateListener).onMissedHeartBeat(null); + } + + @Test + public void testOnHeartBeatTimeout() { + // Given + + // When + spySessionStateListener.onHeartBeatTimeout(); + + // Then + verify(spySessionStateListener).onHeartBeatTimeout(null); + } + + @Test + public void testOnResendRequestSent() { + // Given + int beginSeqNo = 1; + int endSeqNo = 10; + int currentEndSeqNo = 5; + + // When + spySessionStateListener.onResendRequestSent(beginSeqNo, endSeqNo, currentEndSeqNo); + + // Then + verify(spySessionStateListener).onResendRequestSent(eq(null), eq(beginSeqNo), eq(endSeqNo), eq(currentEndSeqNo)); + } + + @Test + public void testOnSequenceResetReceived() { + // Given + int newSeqNo = 20; + boolean gapFillFlag = true; + + // When + spySessionStateListener.onSequenceResetReceived(newSeqNo, gapFillFlag); + + // Then + verify(spySessionStateListener).onSequenceResetReceived(eq(null), eq(newSeqNo), eq(gapFillFlag)); + } + + @Test + public void testOnResendRequestSatisfied() { + // Given + int beginSeqNo = 1; + int endSeqNo = 10; + + // When + spySessionStateListener.onResendRequestSatisfied(beginSeqNo, endSeqNo); + + // Then + verify(spySessionStateListener).onResendRequestSatisfied(eq(null), eq(beginSeqNo), eq(endSeqNo)); + } + + static class DefaultSessionStateListener implements SessionStateListener { + + @Override + public void onConnect(SessionID sessionID) { + + } + + @Override + public void onDisconnect(SessionID sessionID) { + + } + + @Override + public void onLogon(SessionID sessionID) { + + } + + @Override + public void onLogout(SessionID sessionID) { + + } + + @Override + public void onReset(SessionID sessionID) { + + } + + @Override + public void onRefresh(SessionID sessionID) { + + } + + @Override + public void onMissedHeartBeat(SessionID sessionID) { + + } + + @Override + public void onHeartBeatTimeout(SessionID sessionID) { + + } + + @Override + public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + + } + + @Override + public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { + + } + + @Override + public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { + + } + } +} diff --git a/quickfixj-core/src/test/java/quickfix/SessionTest.java b/quickfixj-core/src/test/java/quickfix/SessionTest.java index 03c10d1b57..17630caa4b 100644 --- a/quickfixj-core/src/test/java/quickfix/SessionTest.java +++ b/quickfixj-core/src/test/java/quickfix/SessionTest.java @@ -1215,7 +1215,7 @@ public void testSendingTimeRejectBeforeLogon() throws Exception { session.next(message); - verify(mockStateListener).onDisconnect(); + verify(mockStateListener).onDisconnect(session.getSessionID()); verifyNoMoreInteractions(mockStateListener); } } @@ -1238,7 +1238,7 @@ public void testCorruptLogonReject() throws Exception { session.next(message); - verify(mockStateListener).onDisconnect(); + verify(mockStateListener).onDisconnect(session.getSessionID()); verifyNoMoreInteractions(mockStateListener); } } diff --git a/quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java b/quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java index 404bf04ac0..88c501dc52 100644 --- a/quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java +++ b/quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java @@ -22,13 +22,17 @@ import org.apache.mina.core.filterchain.IoFilterAdapter; import org.apache.mina.core.session.IoSession; import org.apache.mina.core.write.WriteRequest; +import org.apache.mina.util.AvailablePortFinder; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import quickfix.field.MsgType; import quickfix.mina.ProtocolFactory; import quickfix.mina.SingleThreadedEventHandlingStrategy; import quickfix.test.acceptance.ATServer; +import quickfix.test.util.ReflectionUtil; import java.io.File; import java.io.IOException; @@ -46,15 +50,11 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; -import static junit.framework.TestCase.assertNotNull; -import org.apache.mina.util.AvailablePortFinder; -import org.junit.After; +import static junit.framework.TestCase.assertNotNull; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import quickfix.field.MsgType; -import quickfix.test.util.ReflectionUtil; public class SocketInitiatorTest { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -301,49 +301,49 @@ public void onErrorEvent(String text) { } @Override - public void onConnect() { + public void onConnect(SessionID sessionID) { onConnectCallCount.incrementAndGet(); } @Override - public void onDisconnect() { + public void onDisconnect(SessionID sessionID) { onDisconnectCallCount.incrementAndGet(); } @Override - public void onLogon() { + public void onLogon(SessionID sessionID) { } @Override - public void onLogout() { + public void onLogout(SessionID sessionID) { } @Override - public void onReset() { + public void onReset(SessionID sessionID) { } @Override - public void onRefresh() { + public void onRefresh(SessionID sessionID) { } @Override - public void onMissedHeartBeat() { + public void onMissedHeartBeat(SessionID sessionID) { } @Override - public void onHeartBeatTimeout() { + public void onHeartBeatTimeout(SessionID sessionID) { } @Override - public void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { } @Override - public void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { + public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { } @Override - public void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { + public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { } }; diff --git a/quickfixj-core/src/test/java/quickfix/UnitTestApplication.java b/quickfixj-core/src/test/java/quickfix/UnitTestApplication.java index 6dfaa926e5..01c1d35dbe 100644 --- a/quickfixj-core/src/test/java/quickfix/UnitTestApplication.java +++ b/quickfixj-core/src/test/java/quickfix/UnitTestApplication.java @@ -113,10 +113,10 @@ public Message lastToAdminMessage() { return toAdminMessages.get(toAdminMessages.size() - 1); } - public void onConnect() { + public void onConnect(SessionID sessionID) { } - public void onDisconnect() { + public void onDisconnect(SessionID sessionID) { } public void onLogon() { @@ -125,25 +125,25 @@ public void onLogon() { public void onLogout() { } - public void onReset() { + public void onReset(SessionID sessionID) { sessionResets++; } - public void onRefresh() { + public void onRefresh(SessionID sessionID) { } - public void onMissedHeartBeat() { + public void onMissedHeartBeat(SessionID sessionID) { } - public void onHeartBeatTimeout() { + public void onHeartBeatTimeout(SessionID sessionID) { } - public void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { } - public void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { + public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { } - public void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { + public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { } } From c301c312cc24fa8ab36715a6b54e1a445eb13eef Mon Sep 17 00:00:00 2001 From: Eduardo Sanchez-Ros Date: Wed, 10 Feb 2021 12:49:07 +0100 Subject: [PATCH 2/7] Fixed indentation --- .../java/quickfix/SessionStateListener.java | 108 +++---- .../quickfix/SessionStateListenerTest.java | 272 +++++++++--------- 2 files changed, 190 insertions(+), 190 deletions(-) diff --git a/quickfixj-core/src/main/java/quickfix/SessionStateListener.java b/quickfixj-core/src/main/java/quickfix/SessionStateListener.java index 6aea13d458..6737165e80 100644 --- a/quickfixj-core/src/main/java/quickfix/SessionStateListener.java +++ b/quickfixj-core/src/main/java/quickfix/SessionStateListener.java @@ -21,80 +21,80 @@ public interface SessionStateListener { - @Deprecated - default void onConnect() { - onConnect(null); - } + @Deprecated + default void onConnect() { + onConnect(null); + } - void onConnect(SessionID sessionID); + void onConnect(SessionID sessionID); - @Deprecated - default void onDisconnect() { - onDisconnect(null); - } + @Deprecated + default void onDisconnect() { + onDisconnect(null); + } - void onDisconnect(SessionID sessionID); + void onDisconnect(SessionID sessionID); - @Deprecated - default void onLogon() { - onLogon(null); - } + @Deprecated + default void onLogon() { + onLogon(null); + } - void onLogon(SessionID sessionID); + void onLogon(SessionID sessionID); - @Deprecated - default void onLogout() { - onLogout(null); - } + @Deprecated + default void onLogout() { + onLogout(null); + } - void onLogout(SessionID sessionID); + void onLogout(SessionID sessionID); - @Deprecated - default void onReset() { - onReset(null); - } + @Deprecated + default void onReset() { + onReset(null); + } - void onReset(SessionID sessionID); + void onReset(SessionID sessionID); - @Deprecated - default void onRefresh() { - onRefresh(null); - } + @Deprecated + default void onRefresh() { + onRefresh(null); + } - void onRefresh(SessionID sessionID); + void onRefresh(SessionID sessionID); - @Deprecated - default void onMissedHeartBeat() { - onMissedHeartBeat(null); - } + @Deprecated + default void onMissedHeartBeat() { + onMissedHeartBeat(null); + } - void onMissedHeartBeat(SessionID sessionID); + void onMissedHeartBeat(SessionID sessionID); - @Deprecated - default void onHeartBeatTimeout() { - onHeartBeatTimeout(null); - } + @Deprecated + default void onHeartBeatTimeout() { + onHeartBeatTimeout(null); + } - void onHeartBeatTimeout(SessionID sessionID); + void onHeartBeatTimeout(SessionID sessionID); - @Deprecated - default void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { - onResendRequestSent(null, beginSeqNo, endSeqNo, currentEndSeqNo); - } + @Deprecated + default void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + onResendRequestSent(null, beginSeqNo, endSeqNo, currentEndSeqNo); + } - void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo); + void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo); - @Deprecated - default void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { - onSequenceResetReceived(null, newSeqNo, gapFillFlag); - } + @Deprecated + default void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { + onSequenceResetReceived(null, newSeqNo, gapFillFlag); + } - void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag); + void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag); - @Deprecated - default void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { - onResendRequestSatisfied(null, beginSeqNo, endSeqNo); - } + @Deprecated + default void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { + onResendRequestSatisfied(null, beginSeqNo, endSeqNo); + } void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo); } diff --git a/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java b/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java index f523af589f..ba1a2c6379 100644 --- a/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java +++ b/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java @@ -10,197 +10,197 @@ public class SessionStateListenerTest { - private DefaultSessionStateListener spySessionStateListener; + private DefaultSessionStateListener spySessionStateListener; - @Before - public void setUp() throws Exception { - DefaultSessionStateListener sessionStateListener = new DefaultSessionStateListener(); - spySessionStateListener = Mockito.spy(sessionStateListener); - } + @Before + public void setUp() throws Exception { + DefaultSessionStateListener sessionStateListener = new DefaultSessionStateListener(); + spySessionStateListener = Mockito.spy(sessionStateListener); + } - @Test - public void testOnConnect() { - // Given + @Test + public void testOnConnect() { + // Given - // When - spySessionStateListener.onConnect(); + // When + spySessionStateListener.onConnect(); - // Then - verify(spySessionStateListener).onConnect(any()); - } + // Then + verify(spySessionStateListener).onConnect(any()); + } - @Test - public void testOnDisconnect() { - // Given + @Test + public void testOnDisconnect() { + // Given - // When - spySessionStateListener.onDisconnect(); + // When + spySessionStateListener.onDisconnect(); - // Then - verify(spySessionStateListener).onDisconnect(null); - } + // Then + verify(spySessionStateListener).onDisconnect(null); + } - @Test - public void testOnLogon() { - // Given + @Test + public void testOnLogon() { + // Given - // When - spySessionStateListener.onLogon(); + // When + spySessionStateListener.onLogon(); - // Then - verify(spySessionStateListener).onLogon(null); - } + // Then + verify(spySessionStateListener).onLogon(null); + } - @Test - public void testOnLogout() { - // Given + @Test + public void testOnLogout() { + // Given - // When - spySessionStateListener.onLogout(); + // When + spySessionStateListener.onLogout(); - // Then - verify(spySessionStateListener).onLogout(null); - } + // Then + verify(spySessionStateListener).onLogout(null); + } - @Test - public void testOnReset() { - // Given + @Test + public void testOnReset() { + // Given - // When - spySessionStateListener.onReset(); + // When + spySessionStateListener.onReset(); - // Then - verify(spySessionStateListener).onReset(null); - } + // Then + verify(spySessionStateListener).onReset(null); + } - @Test - public void testOnRefresh() { - // Given + @Test + public void testOnRefresh() { + // Given - // When - spySessionStateListener.onRefresh(); + // When + spySessionStateListener.onRefresh(); - // Then - verify(spySessionStateListener).onRefresh(null); - } + // Then + verify(spySessionStateListener).onRefresh(null); + } - @Test - public void testOnMissedHeartBeat() { - // Given + @Test + public void testOnMissedHeartBeat() { + // Given - // When - spySessionStateListener.onMissedHeartBeat(); + // When + spySessionStateListener.onMissedHeartBeat(); - // Then - verify(spySessionStateListener).onMissedHeartBeat(null); - } + // Then + verify(spySessionStateListener).onMissedHeartBeat(null); + } - @Test - public void testOnHeartBeatTimeout() { - // Given + @Test + public void testOnHeartBeatTimeout() { + // Given - // When - spySessionStateListener.onHeartBeatTimeout(); + // When + spySessionStateListener.onHeartBeatTimeout(); - // Then - verify(spySessionStateListener).onHeartBeatTimeout(null); - } + // Then + verify(spySessionStateListener).onHeartBeatTimeout(null); + } - @Test - public void testOnResendRequestSent() { - // Given - int beginSeqNo = 1; - int endSeqNo = 10; - int currentEndSeqNo = 5; + @Test + public void testOnResendRequestSent() { + // Given + int beginSeqNo = 1; + int endSeqNo = 10; + int currentEndSeqNo = 5; - // When - spySessionStateListener.onResendRequestSent(beginSeqNo, endSeqNo, currentEndSeqNo); + // When + spySessionStateListener.onResendRequestSent(beginSeqNo, endSeqNo, currentEndSeqNo); - // Then - verify(spySessionStateListener).onResendRequestSent(eq(null), eq(beginSeqNo), eq(endSeqNo), eq(currentEndSeqNo)); - } + // Then + verify(spySessionStateListener).onResendRequestSent(eq(null), eq(beginSeqNo), eq(endSeqNo), eq(currentEndSeqNo)); + } - @Test - public void testOnSequenceResetReceived() { - // Given - int newSeqNo = 20; - boolean gapFillFlag = true; + @Test + public void testOnSequenceResetReceived() { + // Given + int newSeqNo = 20; + boolean gapFillFlag = true; - // When - spySessionStateListener.onSequenceResetReceived(newSeqNo, gapFillFlag); + // When + spySessionStateListener.onSequenceResetReceived(newSeqNo, gapFillFlag); - // Then - verify(spySessionStateListener).onSequenceResetReceived(eq(null), eq(newSeqNo), eq(gapFillFlag)); - } + // Then + verify(spySessionStateListener).onSequenceResetReceived(eq(null), eq(newSeqNo), eq(gapFillFlag)); + } - @Test - public void testOnResendRequestSatisfied() { - // Given - int beginSeqNo = 1; - int endSeqNo = 10; + @Test + public void testOnResendRequestSatisfied() { + // Given + int beginSeqNo = 1; + int endSeqNo = 10; - // When - spySessionStateListener.onResendRequestSatisfied(beginSeqNo, endSeqNo); + // When + spySessionStateListener.onResendRequestSatisfied(beginSeqNo, endSeqNo); - // Then - verify(spySessionStateListener).onResendRequestSatisfied(eq(null), eq(beginSeqNo), eq(endSeqNo)); - } + // Then + verify(spySessionStateListener).onResendRequestSatisfied(eq(null), eq(beginSeqNo), eq(endSeqNo)); + } - static class DefaultSessionStateListener implements SessionStateListener { + static class DefaultSessionStateListener implements SessionStateListener { - @Override - public void onConnect(SessionID sessionID) { + @Override + public void onConnect(SessionID sessionID) { - } + } - @Override - public void onDisconnect(SessionID sessionID) { + @Override + public void onDisconnect(SessionID sessionID) { - } + } - @Override - public void onLogon(SessionID sessionID) { + @Override + public void onLogon(SessionID sessionID) { - } + } - @Override - public void onLogout(SessionID sessionID) { + @Override + public void onLogout(SessionID sessionID) { - } + } - @Override - public void onReset(SessionID sessionID) { + @Override + public void onReset(SessionID sessionID) { - } + } - @Override - public void onRefresh(SessionID sessionID) { + @Override + public void onRefresh(SessionID sessionID) { - } + } - @Override - public void onMissedHeartBeat(SessionID sessionID) { + @Override + public void onMissedHeartBeat(SessionID sessionID) { - } + } - @Override - public void onHeartBeatTimeout(SessionID sessionID) { + @Override + public void onHeartBeatTimeout(SessionID sessionID) { - } + } - @Override - public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { + @Override + public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { - } + } - @Override - public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { + @Override + public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { - } + } - @Override - public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { + @Override + public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { - } - } + } + } } From d70f3f4dbb49ff1c60107d7e1605632b5f4e86db Mon Sep 17 00:00:00 2001 From: Eduardo Sanchez-Ros Date: Thu, 11 Feb 2021 13:30:52 +0100 Subject: [PATCH 3/7] Change method signatures on SessionStateListener to include SessionID --- .../java/quickfix/SessionStateListener.java | 66 +----- .../quickfix/SessionStateListenerTest.java | 206 ------------------ 2 files changed, 11 insertions(+), 261 deletions(-) delete mode 100644 quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java diff --git a/quickfixj-core/src/main/java/quickfix/SessionStateListener.java b/quickfixj-core/src/main/java/quickfix/SessionStateListener.java index 6737165e80..d6220506d9 100644 --- a/quickfixj-core/src/main/java/quickfix/SessionStateListener.java +++ b/quickfixj-core/src/main/java/quickfix/SessionStateListener.java @@ -21,80 +21,36 @@ public interface SessionStateListener { - @Deprecated - default void onConnect() { - onConnect(null); + default void onConnect(SessionID sessionID) { } - void onConnect(SessionID sessionID); - - @Deprecated - default void onDisconnect() { - onDisconnect(null); + default void onDisconnect(SessionID sessionID) { } - void onDisconnect(SessionID sessionID); - - @Deprecated - default void onLogon() { - onLogon(null); + default void onLogon(SessionID sessionID) { } - void onLogon(SessionID sessionID); - - @Deprecated - default void onLogout() { - onLogout(null); + default void onLogout(SessionID sessionID) { } - void onLogout(SessionID sessionID); - - @Deprecated - default void onReset() { - onReset(null); + default void onReset(SessionID sessionID) { } - void onReset(SessionID sessionID); - - @Deprecated - default void onRefresh() { - onRefresh(null); + default void onRefresh(SessionID sessionID) { } - void onRefresh(SessionID sessionID); - - @Deprecated - default void onMissedHeartBeat() { - onMissedHeartBeat(null); + default void onMissedHeartBeat(SessionID sessionID) { } - void onMissedHeartBeat(SessionID sessionID); - - @Deprecated - default void onHeartBeatTimeout() { - onHeartBeatTimeout(null); + default void onHeartBeatTimeout(SessionID sessionID) { } - void onHeartBeatTimeout(SessionID sessionID); - - @Deprecated - default void onResendRequestSent(int beginSeqNo, int endSeqNo, int currentEndSeqNo) { - onResendRequestSent(null, beginSeqNo, endSeqNo, currentEndSeqNo); + default void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { } - void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo); - - @Deprecated - default void onSequenceResetReceived(int newSeqNo, boolean gapFillFlag) { - onSequenceResetReceived(null, newSeqNo, gapFillFlag); + default void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { } - void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag); - - @Deprecated - default void onResendRequestSatisfied(int beginSeqNo, int endSeqNo) { - onResendRequestSatisfied(null, beginSeqNo, endSeqNo); + default void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { } - - void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo); } diff --git a/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java b/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java deleted file mode 100644 index ba1a2c6379..0000000000 --- a/quickfixj-core/src/test/java/quickfix/SessionStateListenerTest.java +++ /dev/null @@ -1,206 +0,0 @@ -package quickfix; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; - -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.verify; - -public class SessionStateListenerTest { - - private DefaultSessionStateListener spySessionStateListener; - - @Before - public void setUp() throws Exception { - DefaultSessionStateListener sessionStateListener = new DefaultSessionStateListener(); - spySessionStateListener = Mockito.spy(sessionStateListener); - } - - @Test - public void testOnConnect() { - // Given - - // When - spySessionStateListener.onConnect(); - - // Then - verify(spySessionStateListener).onConnect(any()); - } - - @Test - public void testOnDisconnect() { - // Given - - // When - spySessionStateListener.onDisconnect(); - - // Then - verify(spySessionStateListener).onDisconnect(null); - } - - @Test - public void testOnLogon() { - // Given - - // When - spySessionStateListener.onLogon(); - - // Then - verify(spySessionStateListener).onLogon(null); - } - - @Test - public void testOnLogout() { - // Given - - // When - spySessionStateListener.onLogout(); - - // Then - verify(spySessionStateListener).onLogout(null); - } - - @Test - public void testOnReset() { - // Given - - // When - spySessionStateListener.onReset(); - - // Then - verify(spySessionStateListener).onReset(null); - } - - @Test - public void testOnRefresh() { - // Given - - // When - spySessionStateListener.onRefresh(); - - // Then - verify(spySessionStateListener).onRefresh(null); - } - - @Test - public void testOnMissedHeartBeat() { - // Given - - // When - spySessionStateListener.onMissedHeartBeat(); - - // Then - verify(spySessionStateListener).onMissedHeartBeat(null); - } - - @Test - public void testOnHeartBeatTimeout() { - // Given - - // When - spySessionStateListener.onHeartBeatTimeout(); - - // Then - verify(spySessionStateListener).onHeartBeatTimeout(null); - } - - @Test - public void testOnResendRequestSent() { - // Given - int beginSeqNo = 1; - int endSeqNo = 10; - int currentEndSeqNo = 5; - - // When - spySessionStateListener.onResendRequestSent(beginSeqNo, endSeqNo, currentEndSeqNo); - - // Then - verify(spySessionStateListener).onResendRequestSent(eq(null), eq(beginSeqNo), eq(endSeqNo), eq(currentEndSeqNo)); - } - - @Test - public void testOnSequenceResetReceived() { - // Given - int newSeqNo = 20; - boolean gapFillFlag = true; - - // When - spySessionStateListener.onSequenceResetReceived(newSeqNo, gapFillFlag); - - // Then - verify(spySessionStateListener).onSequenceResetReceived(eq(null), eq(newSeqNo), eq(gapFillFlag)); - } - - @Test - public void testOnResendRequestSatisfied() { - // Given - int beginSeqNo = 1; - int endSeqNo = 10; - - // When - spySessionStateListener.onResendRequestSatisfied(beginSeqNo, endSeqNo); - - // Then - verify(spySessionStateListener).onResendRequestSatisfied(eq(null), eq(beginSeqNo), eq(endSeqNo)); - } - - static class DefaultSessionStateListener implements SessionStateListener { - - @Override - public void onConnect(SessionID sessionID) { - - } - - @Override - public void onDisconnect(SessionID sessionID) { - - } - - @Override - public void onLogon(SessionID sessionID) { - - } - - @Override - public void onLogout(SessionID sessionID) { - - } - - @Override - public void onReset(SessionID sessionID) { - - } - - @Override - public void onRefresh(SessionID sessionID) { - - } - - @Override - public void onMissedHeartBeat(SessionID sessionID) { - - } - - @Override - public void onHeartBeatTimeout(SessionID sessionID) { - - } - - @Override - public void onResendRequestSent(SessionID sessionID, int beginSeqNo, int endSeqNo, int currentEndSeqNo) { - - } - - @Override - public void onSequenceResetReceived(SessionID sessionID, int newSeqNo, boolean gapFillFlag) { - - } - - @Override - public void onResendRequestSatisfied(SessionID sessionID, int beginSeqNo, int endSeqNo) { - - } - } -} From fa72ec3814bd404b707faf1a37b1474a0b16f5a1 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Mon, 27 Sep 2021 12:10:28 +0200 Subject: [PATCH 4/7] added SessionID to calls to onConnectException() --- .../main/java/quickfix/mina/initiator/IoSessionInitiator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickfixj-core/src/main/java/quickfix/mina/initiator/IoSessionInitiator.java b/quickfixj-core/src/main/java/quickfix/mina/initiator/IoSessionInitiator.java index 3438837998..37084224c1 100644 --- a/quickfixj-core/src/main/java/quickfix/mina/initiator/IoSessionInitiator.java +++ b/quickfixj-core/src/main/java/quickfix/mina/initiator/IoSessionInitiator.java @@ -263,10 +263,10 @@ private void handleConnectException(Throwable e) { final String nextRetryMsg = " (Next retry in " + computeNextRetryConnectDelay() + " milliseconds)"; if (e instanceof IOException) { fixSession.getLog().onErrorEvent(e.getClass().getName() + " during connection to " + socketAddress + ": " + e + nextRetryMsg); - fixSession.getStateListener().onConnectException((IOException) e); + fixSession.getStateListener().onConnectException(fixSession.getSessionID(), (IOException) e); } else { LogUtil.logThrowable(fixSession.getLog(), "Exception during connection to " + socketAddress + nextRetryMsg, e); - fixSession.getStateListener().onConnectException(new Exception(e)); + fixSession.getStateListener().onConnectException(fixSession.getSessionID(), new Exception(e)); } connectFuture = null; } From ca2783edf4b290770e478f7b1e3d03c0241a6056 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Mon, 27 Sep 2021 12:24:43 +0200 Subject: [PATCH 5/7] Update SocketInitiatorTest.java --- quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java b/quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java index 9ab9b9d194..6dd8033f58 100644 --- a/quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java +++ b/quickfixj-core/src/test/java/quickfix/SocketInitiatorTest.java @@ -247,7 +247,7 @@ public void testInitiatorConnectionException() throws Exception { SessionStateListener sessionStateListener = new SessionStateListener() { @Override - public void onConnectException(Exception e) { + public void onConnectException(SessionID sessionID, Exception e) { onConnectExceptionWasCalled.set(true); } }; From 103753471483ed0ad4f5ac328635bd2a40f3db56 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Mon, 27 Sep 2021 14:45:55 +0200 Subject: [PATCH 6/7] minor change, add @Override --- quickfixj-core/src/test/java/quickfix/UnitTestApplication.java | 1 + 1 file changed, 1 insertion(+) diff --git a/quickfixj-core/src/test/java/quickfix/UnitTestApplication.java b/quickfixj-core/src/test/java/quickfix/UnitTestApplication.java index 88c7325c5a..656dbc5b92 100644 --- a/quickfixj-core/src/test/java/quickfix/UnitTestApplication.java +++ b/quickfixj-core/src/test/java/quickfix/UnitTestApplication.java @@ -128,6 +128,7 @@ public Message lastToAdminMessage() { return toAdminMessages.get(toAdminMessages.size() - 1); } + @Override public void onReset(SessionID sessionID) { sessionResets++; } From 76c6539853dad16122914704d7813dad001b9242 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Mon, 27 Sep 2021 23:34:36 +0200 Subject: [PATCH 7/7] updated javadoc comment --- quickfixj-core/src/main/java/quickfix/SessionStateListener.java | 1 + 1 file changed, 1 insertion(+) diff --git a/quickfixj-core/src/main/java/quickfix/SessionStateListener.java b/quickfixj-core/src/main/java/quickfix/SessionStateListener.java index 14a4bb450a..4c1f0ea594 100644 --- a/quickfixj-core/src/main/java/quickfix/SessionStateListener.java +++ b/quickfixj-core/src/main/java/quickfix/SessionStateListener.java @@ -29,6 +29,7 @@ default void onConnect(SessionID sessionID) { /** * Called when Exception occurs during connection establishment. * + * @param sessionID affected SessionID * @param exception thrown Exception */ default void onConnectException(SessionID sessionID, Exception exception) {