22
33import net .sharksystem .asap .ASAPException ;
44import net .sharksystem .asap .ASAPMessages ;
5- import net .sharksystem .asap .apps .ASAPMessageReceivedListener ;
6- import net .sharksystem .asap .apps .ASAPMessageSender ;
5+ import net .sharksystem .asap .apps .*;
6+ import net .sharksystem .asap .listenermanager .ASAPEnvironmentChangesListenerManager ;
7+ import net .sharksystem .asap .listenermanager .ASAPMessageReceivedListenerManager ;
78
8- import java .io .IOException ;
99import java .util .*;
1010
11- public class ASAPSessionMock implements ASAPMessageSender {
12- private Map <CharSequence , Map <CharSequence , List <byte []>>> appMsgStorage = new HashMap <>();
13- private Map <CharSequence , List <ASAPMessageReceivedListener >> listenerMap = new HashMap <>();
11+ public class ASAPSessionMock implements ASAPPeerServices {
1412 private boolean connected = false ;
1513
14+ /**
15+ * Simulate a connection - this mock will notify all registered listeners and remove messages.
16+ * After connected - any sendASAPMessage call will immediately lead to a listener call.
17+ */
18+ public void connect () {
19+ this .connected = true ;
20+ this .notifyMessageReceived ();
21+ }
22+
23+ /**
24+ * disconnect - opposite of connect
25+ */
26+ public void disconnect () {
27+ this .connected = false ;
28+ }
29+
30+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
31+ // ASAPMessageManagement //
32+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
33+ private Map <CharSequence , Map <CharSequence , List <byte []>>> appMsgStorage = new HashMap <>();
34+
1635 private List <byte []> getStorage (CharSequence appName , CharSequence uri ) {
1736 Map <CharSequence , List <byte []>> charSequenceListMap = this .appMsgStorage .get (appName );
1837 if (charSequenceListMap == null ) {
@@ -36,73 +55,59 @@ public void sendASAPMessage(CharSequence appName, CharSequence uri, byte[] messa
3655 storage .add (message );
3756 }
3857
39- if (this .connected ) this .notifyListeners ();
58+ if (this .connected ) this .notifyMessageReceived ();
4059 }
4160
42- public void addASAPMessageReceivedListener (CharSequence format , ASAPMessageReceivedListener listener ) {
43- List <ASAPMessageReceivedListener > asapMessageReceivedListeners = this .listenerMap .get (format );
44- if (asapMessageReceivedListeners == null ) {
45- asapMessageReceivedListeners = new ArrayList <>();
46- this .listenerMap .put (format , asapMessageReceivedListeners );
47- }
48-
49- asapMessageReceivedListeners .add (listener );
50- }
61+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
62+ // ASAPMessageReceivedListener //
63+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
64+ private ASAPMessageReceivedListenerManager asapMessageReceivedListenerManager =
65+ new ASAPMessageReceivedListenerManager ();
5166
52- /**
53- * Simulate a connection - this mock will notify all registered listeners and remove messages.
54- * After connected - any sendASAPMessage call will immediately lead to a listener call.
55- */
56- public void connect () {
57- this .connected = true ;
58- this .notifyListeners ();
67+ public void addASAPMessageReceivedListener (CharSequence format , ASAPMessageReceivedListener listener ) {
68+ this .asapMessageReceivedListenerManager .addASAPMessageReceivedListener (format , listener );
5969 }
6070
61- private void notifyListeners () {
71+ private void notifyMessageReceived () {
6272 Map <CharSequence , Map <CharSequence , List <byte []>>> appUriMessages = null ;
6373 synchronized (this .appMsgStorage ) {
64- if (this .appMsgStorage .isEmpty ()) return ;
65-
74+ if (this .appMsgStorage .isEmpty ()) return ; // nothing to do
6675 // else copy
6776 appUriMessages = this .appMsgStorage ;
68-
6977 // create empty
7078 this .appMsgStorage = new HashMap <>();
79+
80+ // now: new message can be written and do not disturb notification process
7181 }
7282
73- // send
83+ // notify about new messages == simulate sending
7484 for (CharSequence appName : appUriMessages .keySet ()) {
7585 Map <CharSequence , List <byte []>> appMap = appUriMessages .get (appName );
7686 if (appMap != null ) {
77- List <ASAPMessageReceivedListener > asapMessageReceivedListeners = this .listenerMap .get (appName );
78- if (asapMessageReceivedListeners != null && !asapMessageReceivedListeners .isEmpty ()) {
79- Set <CharSequence > uris = appMap .keySet ();
80- for (CharSequence uri : uris ) {
81- List <byte []> serializedAppPDUs = appMap .get (uri );
82- for (ASAPMessageReceivedListener listener : asapMessageReceivedListeners ) {
83- // create a thread for each listener
84- new Thread (new Runnable () {
85- @ Override
86- public void run () {
87- ASAPMessages messagesMock = new ASAPMessagesMock (appName , uri , serializedAppPDUs );
88- try {
89- listener .asapMessagesReceived (messagesMock );
90- } catch (IOException e ) {
91- e .printStackTrace ();
92- }
93- }
94- }).start ();
95- }
96- }
87+ Set <CharSequence > uris = appMap .keySet ();
88+ for (CharSequence uri : uris ) {
89+ List <byte []> serializedAppPDUs = appMap .get (uri );
90+ ASAPMessages messagesMock = new ASAPMessagesMock (appName , uri , serializedAppPDUs );
91+ this .asapMessageReceivedListenerManager .notifyReceived (appName , messagesMock , true );
9792 }
9893 }
9994 }
10095 }
10196
102- /**
103- * disconnect - opposite of connect
104- */
105- public void disconnect () {
106- this .connected = false ;
97+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
98+ // ASAPEnvironmentChangesListener //
99+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
100+
101+ private ASAPEnvironmentChangesListenerManager environmentChangesListenerManager =
102+ new ASAPEnvironmentChangesListenerManager ();
103+
104+ @ Override
105+ public void addASAPEnvironmentChangesListener (ASAPEnvironmentChangesListener changesListener ) {
106+ this .environmentChangesListenerManager .addASAPEnvironmentChangesListener (changesListener );
107+ }
108+
109+ @ Override
110+ public void removeASAPEnvironmentChangesListener (ASAPEnvironmentChangesListener changesListener ) {
111+ this .environmentChangesListenerManager .removeASAPEnvironmentChangesListener (changesListener );
107112 }
108113}
0 commit comments