From d2a6ebc1dcfd4c8756e1a23bc0ebc09d3c86290f Mon Sep 17 00:00:00 2001
From: cuneytozturk <c.ozturk1@student.han.nl>
Date: Thu, 1 Jun 2023 13:23:33 +0200
Subject: [PATCH 01/13] AddSubscriber mesh functionaliteit toe

---
 .../modules/infrastructure/networkmodule/Peer.java       | 4 ++--
 .../infrastructure/networkmodule/PeerUnitTest.java       | 9 +++++++--
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index 77443288..a21d52be 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -371,9 +371,9 @@ public class Peer implements IPeer, INetwork {
      * @param subscriber {@link IPeer} is the new subscriber that will be added to the subscription list of the coordinator.
      */
     @Override
-    public void addNewSubscriber(IPeer subscriber, LotDTO lotDTO) {
+    public void addNewSubscriber(IPeer newSubscriber, LotDTO lotDTO) {
         // print subscriber request and send it to everyone in the network. Used for testing.
-        String message = "Received request to subscribe from " + subscriber.getId();
+        String message = "Received request to subscribe from " + newSubscriber.getId();
         System.out.println(message);
 
         // add the new subscriber to subscriber hashmap
diff --git a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
index ef3a0cf1..14329d83 100644
--- a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
+++ b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
@@ -32,6 +32,11 @@ public class PeerUnitTest {
     public IRpcServer mockRpcServer;
 
     public Peer sut;
+    public Peer subscriber1;
+    public Peer subscriber2;
+    public Peer subscriber3;
+
+    public Peer newSubscriber;
 
     @BeforeEach
     public void setup() {
@@ -125,7 +130,7 @@ public class PeerUnitTest {
     public void testAddNewSubscriberWhereSubscribersNotNull() {
         // Arrange
         Peer spyPeer = spy(sut);
-        IPeer subscriber = mock(IPeer.class);
+        IPeer subscriber = newSubscriber;
         LotDTO lotDTO = mock(LotDTO.class);
         HashMap<String, HashMap<String, List<IPeer>>> subscriptions = mock(HashMap.class);
         List<IPeer> subscribers = mock(ArrayList.class);
@@ -134,7 +139,7 @@ public class PeerUnitTest {
 
         when(lotDTO.getAuctionid()).thenReturn("auctionId");
         when(lotDTO.getLotid()).thenReturn("lotId");
-        when(subscribers.contains(subscriber)).thenReturn(false);
+        //when(subscribers.contains(subscriber)).thenReturn(false);
         when(subscriptions.get(anyString())).thenReturn(mock());
         when(subscriptions.get(anyString()).get(anyString())).thenReturn(subscribers);
 
-- 
GitLab


From 4c1b45279f01019383933fab776a4d2f92564e31 Mon Sep 17 00:00:00 2001
From: cuneytozturk <c.ozturk1@student.han.nl>
Date: Thu, 1 Jun 2023 13:23:42 +0200
Subject: [PATCH 02/13] Changes by aron

---
 .../infrastructure/networkmodule/Peer.java       | 16 ++++++++++++----
 .../networkmodule/PeerUnitTest.java              | 11 ++++++++---
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index a21d52be..d2f5f9fa 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -368,7 +368,7 @@ public class Peer implements IPeer, INetwork {
     /**
      * Function that will subscribe a peer to an auction.
      *
-     * @param subscriber {@link IPeer} is the new subscriber that will be added to the subscription list of the coordinator.
+     * @param newSubscriber {@link IPeer} is the new subscriber that will be added to the subscription list of the coordinator.
      */
     @Override
     public void addNewSubscriber(IPeer newSubscriber, LotDTO lotDTO) {
@@ -382,10 +382,18 @@ public class Peer implements IPeer, INetwork {
             subscribers = new ArrayList<>();
             subscriptions.get(lotDTO.getAuctionid()).put(lotDTO.getLotid(), subscribers);
         }
-        if (!subscribers.contains(subscriber)) {
-            subscribers.add(subscriber);
-            System.out.println(subscriber.getId() + " is now subscribed to lot " + lotDTO.getLotid() + " from auction " + lotDTO.getAuctionid());
+
+        if (!subscribers.contains(newSubscriber)) {
+            subscribers.add(newSubscriber);
+            System.out.println(newSubscriber.getId() + " is now subscribed to lot " + lotDTO.getLotid() + " from auction " + lotDTO.getAuctionid());
             System.out.println(getSubscribersForLot(lotDTO));
+
+            //for subscribed in subscribers add new subscriber and send subscribed to newSubscriber
+            for(IPeer subscribed : subscribers){
+                subscribed.addNewSubscriber(newSubscriber, lotDTO);
+
+                newSubscriber.addNewSubscriber(subscribed, lotDTO);
+            }
         }
     }
 
diff --git a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
index 14329d83..728ef12e 100644
--- a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
+++ b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
@@ -41,6 +41,10 @@ public class PeerUnitTest {
     @BeforeEach
     public void setup() {
         sut = new Peer(mockRpcServer, mockHeartBeatManager);
+        subscriber1 = new Peer(mockRpcServer, mockHeartBeatManager);
+        subscriber2 = new Peer(mockRpcServer, mockHeartBeatManager);
+        subscriber3 = new Peer(mockRpcServer, mockHeartBeatManager);
+        newSubscriber = new Peer(mockRpcServer, mockHeartBeatManager);
     }
 
     @Test
@@ -132,8 +136,9 @@ public class PeerUnitTest {
         Peer spyPeer = spy(sut);
         IPeer subscriber = newSubscriber;
         LotDTO lotDTO = mock(LotDTO.class);
-        HashMap<String, HashMap<String, List<IPeer>>> subscriptions = mock(HashMap.class);
-        List<IPeer> subscribers = mock(ArrayList.class);
+        HashMap<String, HashMap<String, List<IPeer>>> subscriptions = new HashMap<>();
+
+        List<IPeer> subscribers = new ArrayList<IPeer>();
 
         spyPeer.setSubscriptions(subscriptions);
 
@@ -151,7 +156,7 @@ public class PeerUnitTest {
         // Assert
         verify(subscriptions).get("auctionId");
         verify(subscribers).add(subscriber);
-        verify(subscriber, times(2)).getId();
+//        verify(subscriber, times(2)).getId();
     }
 
     @Test
-- 
GitLab


From 67fe774824624ecdb6cab6a41ae845c01d618831 Mon Sep 17 00:00:00 2001
From: Tom Janssen <t.janssen16@student.han.nl>
Date: Thu, 1 Jun 2023 13:45:14 +0200
Subject: [PATCH 03/13] Solved auctions in network bug

---
 .../infrastructure/networkmodule/IPeer.java   |  3 ++
 .../infrastructure/networkmodule/Peer.java    | 28 +++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/IPeer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/IPeer.java
index 1f3eb184..23791d57 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/IPeer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/IPeer.java
@@ -5,7 +5,9 @@ import nl.han.aim.asd.veilveilig.core.application.dtos.LotDTO;
 import nl.han.aim.asd.veilveilig.core.application.dtos.OfferDTO;
 import nl.han.aim.asd.veilveilig.rpc.annotations.RpcCache;
 import nl.han.aim.asd.veilveilig.rpc.annotations.RpcObject;
+import nl.han.aim.asd.veilveilig.rpc.models.IpAddress;
 
+import java.util.HashMap;
 import java.util.List;
 
 @RpcObject
@@ -33,4 +35,5 @@ public interface IPeer {
     void receiveDataFromParent();
     List<AuctionDTO> getAuctionDataFromParent();
     List<LotDTO> getLotDataFromParent();
+    HashMap<String, IpAddress> getCurrentAuctionsInNetwork();
 }
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index 77443288..23e9ac67 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -14,6 +14,7 @@ import nl.han.aim.asd.veilveilig.core.application.usecases.OfferService;
 import nl.han.aim.asd.veilveilig.rpc.IRpcServer;
 import nl.han.aim.asd.veilveilig.rpc.helpers.IpAddressHelper;
 import nl.han.aim.asd.veilveilig.rpc.helpers.ProxyHelper;
+import nl.han.aim.asd.veilveilig.rpc.models.IpAddress;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -121,6 +122,7 @@ public class Peer implements IPeer, INetwork {
                 grandParent = parent.getParent();
                 addPeerToHeartbeat(parent);
                 receiveDataFromParent();
+                getAllActiveCoordinators();
                 if (grandParent != null) addPeerToHeartbeat(grandParent);
             } else {
                 current = result;
@@ -128,6 +130,16 @@ public class Peer implements IPeer, INetwork {
         }
     }
 
+    private void getAllActiveCoordinators(){
+        if(parent!=null){
+            HashMap<String, IpAddress> result = parent.getCurrentAuctionsInNetwork();
+
+            result.forEach((s, ip) -> {
+                auctionsInNetwork.put(s, server.createRpcProxy(IPeer.class, ip.Address, ip.port));
+            });
+        }
+    }
+
 
     /**
      * Adds a new peer in the Tree structured network. It will add the new peer as a direct {@link #leftChild} or {@link #rightChild},
@@ -488,6 +500,11 @@ public class Peer implements IPeer, INetwork {
      */
     @Override
     public void receiveAuctionPing(AuctionDTO auction, LotDTO lot, IPeer auctioneer, IPeer sender) {
+        if(auctionsInNetwork.containsKey(auction.getAuctionid())){
+            auctionsInNetwork.replace(auction.getAuctionid(), auctioneer);
+            return;
+        }
+
         auctionsInNetwork.put(auction.getAuctionid(), auctioneer);
 
         //ugly fix for demo
@@ -731,4 +748,15 @@ public class Peer implements IPeer, INetwork {
     public void setId(String id) {
         this.peerId = id;
     }
+
+    @Override
+    public HashMap<String, IpAddress> getCurrentAuctionsInNetwork() {
+        HashMap<String, IpAddress> result = new HashMap<>();
+
+        auctionsInNetwork.forEach((s, p) -> {
+            result.put(s, ProxyHelper.getIpAddressFromProxy(p));
+        });
+
+        return result;
+    }
 }
-- 
GitLab


From 59fbaf7cd8f0868f37581b3c251515aea4f1e3eb Mon Sep 17 00:00:00 2001
From: Tom Janssen <t.janssen16@student.han.nl>
Date: Thu, 1 Jun 2023 13:52:15 +0200
Subject: [PATCH 04/13] Solved test

---
 .../modules/infrastructure/networkmodule/Peer.java           | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index c0379ad5..ddc70d6d 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -510,11 +510,10 @@ public class Peer implements IPeer, INetwork {
     public void receiveAuctionPing(AuctionDTO auction, LotDTO lot, IPeer auctioneer, IPeer sender) {
         if(auctionsInNetwork.containsKey(auction.getAuctionid())){
             auctionsInNetwork.replace(auction.getAuctionid(), auctioneer);
-            return;
+        } else {
+            auctionsInNetwork.put(auction.getAuctionid(), auctioneer);
         }
 
-        auctionsInNetwork.put(auction.getAuctionid(), auctioneer);
-
         //ugly fix for demo
         List<LotDTO> lots = new ArrayList<>();
         lots.add(lot);
-- 
GitLab


From 9b54bd6f333ea15c2fbf1c0e4deddcd037282e95 Mon Sep 17 00:00:00 2001
From: oshalabi <O.Halabi@student.han.nl>
Date: Thu, 1 Jun 2023 13:53:53 +0200
Subject: [PATCH 05/13] fixed testAddNewSubscriberWhereSubscribersNotNull

---
 .../networkmodule/PeerUnitTest.java           | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
index 728ef12e..90a7802b 100644
--- a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
+++ b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
@@ -134,19 +134,19 @@ public class PeerUnitTest {
     public void testAddNewSubscriberWhereSubscribersNotNull() {
         // Arrange
         Peer spyPeer = spy(sut);
-        IPeer subscriber = newSubscriber;
+        IPeer subscriber = mock(IPeer.class);
         LotDTO lotDTO = mock(LotDTO.class);
         HashMap<String, HashMap<String, List<IPeer>>> subscriptions = new HashMap<>();
-
-        List<IPeer> subscribers = new ArrayList<IPeer>();
+        HashMap<String, List<IPeer>> lotIdToSubscribersMap = new HashMap<>();
+        List<IPeer> subscribers = new ArrayList<>();
 
         spyPeer.setSubscriptions(subscriptions);
 
+        subscriptions.put("auctionId", lotIdToSubscribersMap);
+        lotIdToSubscribersMap.put("lotId", subscribers);
+
         when(lotDTO.getAuctionid()).thenReturn("auctionId");
         when(lotDTO.getLotid()).thenReturn("lotId");
-        //when(subscribers.contains(subscriber)).thenReturn(false);
-        when(subscriptions.get(anyString())).thenReturn(mock());
-        when(subscriptions.get(anyString()).get(anyString())).thenReturn(subscribers);
 
         doReturn("").when(spyPeer).getSubscribersForLot(lotDTO);
 
@@ -154,11 +154,12 @@ public class PeerUnitTest {
         spyPeer.addNewSubscriber(subscriber, lotDTO);
 
         // Assert
-        verify(subscriptions).get("auctionId");
-        verify(subscribers).add(subscriber);
-//        verify(subscriber, times(2)).getId();
+        assertTrue(subscribers.contains(subscriber));
+        verify(spyPeer).getSubscribersForLot(lotDTO);
+        verify(subscriber, times(2)).getId();
     }
 
+
     @Test
     public void testAddNewSubscriberWhereSubscribersNull() {
         // Arrange
-- 
GitLab


From c2c6c0008fcb665fcc834dc08f1f72094efce50a Mon Sep 17 00:00:00 2001
From: Tom Janssen <t.janssen16@student.han.nl>
Date: Thu, 1 Jun 2023 14:25:10 +0200
Subject: [PATCH 06/13] Solved small bug

---
 .../modules/infrastructure/networkmodule/Peer.java        | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index ddc70d6d..16e80e99 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -134,9 +134,11 @@ public class Peer implements IPeer, INetwork {
         if(parent!=null){
             HashMap<String, IpAddress> result = parent.getCurrentAuctionsInNetwork();
 
-            result.forEach((s, ip) -> {
-                auctionsInNetwork.put(s, server.createRpcProxy(IPeer.class, ip.Address, ip.port));
-            });
+            if(result != null) {
+                result.forEach((s, ip) -> {
+                    auctionsInNetwork.put(s, server.createRpcProxy(IPeer.class, ip.Address, ip.port));
+                });
+            }
         }
     }
 
-- 
GitLab


From a8e544afc00b0cb5b258f272833bde682f0e3636 Mon Sep 17 00:00:00 2001
From: cuneytozturk <c.ozturk1@student.han.nl>
Date: Thu, 1 Jun 2023 14:25:40 +0200
Subject: [PATCH 07/13] AddSubscriber mesh functionaliteit toe

---
 .../application/adapters/NetworkAdapter.java     |  5 +++++
 .../core/application/dependencies/INetwork.java  |  1 +
 .../core/application/ports/INetworkPort.java     |  1 +
 .../infrastructure/networkmodule/Peer.java       | 16 +++++++++++-----
 src/test/java/network/manual/Main.java           |  5 ++++-
 5 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
index e264a990..50511b85 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
@@ -49,6 +49,11 @@ public class NetworkAdapter implements INetworkPort {
         network.sendOffer(offer, auctionId);
     }
 
+    @Override
+    public void showSubs() {
+        network.showSubs();
+    }
+
     @Override
     public void sendAuctionToNetwork(AuctionDTO auctionDTO, List<LotDTO> lotDTOList) {
         network.sendAuctionToNetwork(auctionDTO,lotDTOList);
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
index 414d0c21..d467d21f 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
@@ -20,4 +20,5 @@ public interface INetwork {
 
     void sendOffer(OfferDTO offer, String auctionId);
     void setId(String id);
+    void showSubs();
 }
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
index 45730b05..484e8444 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
@@ -12,6 +12,7 @@ public interface INetworkPort {
     void subscribeToLot(LotDTO lotDTO);
     void createAuction(AuctionDTO auctionDTO, List<LotDTO> lotDTOList);
     void sendOffer(OfferDTO offer, String auctionId);
+    void showSubs();
 
    void sendAuctionToNetwork(AuctionDTO auctionDTO, List<LotDTO> lotDTOList);
 }
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index c0379ad5..d93e8cc1 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -16,10 +16,7 @@ import nl.han.aim.asd.veilveilig.rpc.helpers.IpAddressHelper;
 import nl.han.aim.asd.veilveilig.rpc.helpers.ProxyHelper;
 import nl.han.aim.asd.veilveilig.rpc.models.IpAddress;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 
 /**
@@ -403,8 +400,8 @@ public class Peer implements IPeer, INetwork {
             //for subscribed in subscribers add new subscriber and send subscribed to newSubscriber
             for(IPeer subscribed : subscribers){
                 subscribed.addNewSubscriber(newSubscriber, lotDTO);
-
                 newSubscriber.addNewSubscriber(subscribed, lotDTO);
+                System.out.println("I have subscriber: "+subscribed.getId());
             }
         }
     }
@@ -478,6 +475,15 @@ public class Peer implements IPeer, INetwork {
         thread.start();
     }
 
+    @Override
+    public void showSubs(){
+
+for(Map.Entry<String, HashMap<String, List<IPeer>>> set : subscriptions.entrySet()){
+        for (IPeer subscriber : subscriptions.get(String.class).get(String.class)) {
+            System.out.println(subscriber.getId());
+        }}
+    }
+
     /**
      * sends offer to auctioning peer based on the auctionId in the offer
      *
diff --git a/src/test/java/network/manual/Main.java b/src/test/java/network/manual/Main.java
index e3832b22..a35f0dfe 100644
--- a/src/test/java/network/manual/Main.java
+++ b/src/test/java/network/manual/Main.java
@@ -81,7 +81,10 @@ public class Main {
                     makeOffer(br);
                 } else if (line.equals("create auction")) {
                     createAuction(br);
-                }else {
+                }else if (line.equals("view subscribers")){
+                    peer.showSubs();
+                }
+                 else {
                     peer.broadcastMessage(line);
                 }
             }
-- 
GitLab


From bfd2415bb0020463ae9d05609208effdee99312e Mon Sep 17 00:00:00 2001
From: cuneytozturk <c.ozturk1@student.han.nl>
Date: Thu, 1 Jun 2023 14:58:22 +0200
Subject: [PATCH 08/13] rpc 21

---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index c14e3172..315ebac5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -144,7 +144,7 @@
         <dependency>
             <groupId>nl.han.asd</groupId>
             <artifactId>rpc</artifactId>
-            <version>1.1.20-SNAPSHOT</version>
+            <version>1.1.21</version>
         </dependency>
 
         <dependency>
-- 
GitLab


From 836c463ea1ac4a4503aa8e2b9c030b4185eef8c0 Mon Sep 17 00:00:00 2001
From: Tom Janssen <t.janssen16@student.han.nl>
Date: Thu, 1 Jun 2023 15:22:17 +0200
Subject: [PATCH 09/13] Solved some more bugs

---
 .../modules/infrastructure/networkmodule/Peer.java        | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index 16e80e99..e8af0cf9 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -367,7 +367,11 @@ public class Peer implements IPeer, INetwork {
     @Override
     public void createAuction(AuctionDTO auctionDTO, List<LotDTO> lots) {
         // add the new auction to the auctionsInNetwork list
-        auctionsInNetwork.put(auctionDTO.getAuctionid(), this);
+        if(auctionsInNetwork.containsKey(auctionDTO.getAuctionid())){
+            auctionsInNetwork.replace(auctionDTO.getAuctionid(), this);
+        } else {
+            auctionsInNetwork.put(auctionDTO.getAuctionid(), this);
+        }
 
         // create subscription list for the new auction
         for (LotDTO lot : lots) {
@@ -376,7 +380,7 @@ public class Peer implements IPeer, INetwork {
         }
 
         // ping the whole network about the newly created auction
-        sendAuctionToNetwork(auctionDTO, lots, this, this);
+        sendAuctionToNetwork(auctionDTO, lots);
     }
 
     /**
-- 
GitLab


From b996d6e99994b62c395b18f5cfef5b369aa05000 Mon Sep 17 00:00:00 2001
From: cuneytozturk <c.ozturk1@student.han.nl>
Date: Thu, 1 Jun 2023 16:23:04 +0200
Subject: [PATCH 10/13] number of invocations aangepast naar 3 vanwege
 verandering structuur netwerk

---
 .../infrastructure/networkmodule/PeerUnitTest.java    | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
index 90a7802b..32a69ae4 100644
--- a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
+++ b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
@@ -32,19 +32,12 @@ public class PeerUnitTest {
     public IRpcServer mockRpcServer;
 
     public Peer sut;
-    public Peer subscriber1;
-    public Peer subscriber2;
-    public Peer subscriber3;
 
-    public Peer newSubscriber;
 
     @BeforeEach
     public void setup() {
         sut = new Peer(mockRpcServer, mockHeartBeatManager);
-        subscriber1 = new Peer(mockRpcServer, mockHeartBeatManager);
-        subscriber2 = new Peer(mockRpcServer, mockHeartBeatManager);
-        subscriber3 = new Peer(mockRpcServer, mockHeartBeatManager);
-        newSubscriber = new Peer(mockRpcServer, mockHeartBeatManager);
+
     }
 
     @Test
@@ -156,7 +149,7 @@ public class PeerUnitTest {
         // Assert
         assertTrue(subscribers.contains(subscriber));
         verify(spyPeer).getSubscribersForLot(lotDTO);
-        verify(subscriber, times(2)).getId();
+        verify(subscriber, times(3)).getId();
     }
 
 
-- 
GitLab


From 0662db0a6c180a54796243d7eb4adc3f130ad0f9 Mon Sep 17 00:00:00 2001
From: cuneytozturk <c.ozturk1@student.han.nl>
Date: Fri, 2 Jun 2023 09:57:55 +0200
Subject: [PATCH 11/13] unsubscribeFromLot functionaliteit toegevoegd, geen
 tests omdat dit nog een "could" is

---
 .../application/adapters/NetworkAdapter.java  | 16 +++++---
 .../application/dependencies/INetwork.java    |  2 +-
 .../core/application/ports/INetworkPort.java  |  3 +-
 .../infrastructure/networkmodule/IPeer.java   |  2 +
 .../infrastructure/networkmodule/Peer.java    | 40 +++++++++++++------
 src/test/java/network/manual/Main.java        |  5 +--
 6 files changed, 44 insertions(+), 24 deletions(-)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
index 50511b85..95ebd9ad 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
@@ -24,7 +24,7 @@ public class NetworkAdapter implements INetworkPort {
     INetwork network;
 
     /**
-     * Calls the INetwork interface to subscribe the Peer to lot {@param lotId} of auction {@param auctionId}.
+     * Calls the INetwork interface to subscribe the Peer to lot {@param lotId}.
      *
      */
     @Override
@@ -32,6 +32,15 @@ public class NetworkAdapter implements INetworkPort {
        network.subscribeToLot(lotDTO);
     }
 
+    /**
+     * Calls the INetwork interface to unsubscribe the Peer from lot {@param lotId}.
+     *
+     */
+    @Override
+    public void unsubscribeFromLot(LotDTO lotDTO) {
+        network.unsubscribeFromLot(lotDTO);
+    }
+
 
     @Override
     public void createAuction(AuctionDTO auctionDTO, List<LotDTO> lots) {
@@ -49,10 +58,7 @@ public class NetworkAdapter implements INetworkPort {
         network.sendOffer(offer, auctionId);
     }
 
-    @Override
-    public void showSubs() {
-        network.showSubs();
-    }
+
 
     @Override
     public void sendAuctionToNetwork(AuctionDTO auctionDTO, List<LotDTO> lotDTOList) {
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
index d467d21f..af664925 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
@@ -14,11 +14,11 @@ public interface INetwork {
     String getNetworkInfo();
     void kill();
     void subscribeToLot(LotDTO lotDTO);
+    void unsubscribeFromLot(LotDTO lotDTO);
     void createAuction(AuctionDTO auctionDTO, List<LotDTO> lotDTOList);
 
     void sendAuctionToNetwork(AuctionDTO auction, List<LotDTO> lots);
 
     void sendOffer(OfferDTO offer, String auctionId);
     void setId(String id);
-    void showSubs();
 }
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
index 484e8444..2f45a4da 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
@@ -10,9 +10,8 @@ import java.util.List;
 public interface INetworkPort {
 
     void subscribeToLot(LotDTO lotDTO);
+    void unsubscribeFromLot(LotDTO lotDTO);
     void createAuction(AuctionDTO auctionDTO, List<LotDTO> lotDTOList);
     void sendOffer(OfferDTO offer, String auctionId);
-    void showSubs();
-
    void sendAuctionToNetwork(AuctionDTO auctionDTO, List<LotDTO> lotDTOList);
 }
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/IPeer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/IPeer.java
index 23791d57..c85fd0c7 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/IPeer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/IPeer.java
@@ -28,6 +28,8 @@ public interface IPeer {
     IPeer getMaster();
     String getAllPeerParentInfoConcurrently();
     Integer getHeartbeatManagerPort();
+    void unsubscribeFromLot(IPeer subscriber, LotDTO lotDTO);
+
     void addNewSubscriber(IPeer subscriber, LotDTO lotDTO);
     void receiveAuctionPing(AuctionDTO auctionDTO, LotDTO lot, IPeer auctioneer, IPeer sender);
     void sendAuctionToNetwork(AuctionDTO auction, List<LotDTO> lots, IPeer auctioneer, IPeer sender);
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index acaa2279..4ac748aa 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -356,6 +356,31 @@ public class Peer implements IPeer, INetwork {
         coordinator.addNewSubscriber(this, lotDTO);
     }
 
+    /**
+     * This function is responsible for subscribing the peer to an existing auction.
+     */
+    @Override
+    public void unsubscribeFromLot(IPeer subscriber,LotDTO lotDTO) {
+        // print unsubscribe request and send it to everyone in the network. Used for testing.
+        String message = subscriber.getId()+" has unsubscribed from this auction";
+        System.out.println(message);
+
+        // get the list of subscribers from this list.
+        List<IPeer> subscribers = subscriptions.get(lotDTO.getAuctionid()).get(lotDTO.getLotid());
+
+        //removes subscriber from this peers subscribers
+        if (subscribers.contains(subscriber)) {
+            subscribers.remove(subscriber.getId());
+            System.out.println(subscriber.getId() + " is now unsubscribed from lot " + lotDTO.getLotid() + " from auction " + lotDTO.getAuctionid());
+
+            //sends call to remove the subscriber from this peers its subscribers, and then unsubscribes the current sub from the given sub
+            for(IPeer subscribed : subscribers){
+                subscribed.unsubscribeFromLot(subscriber, lotDTO);
+                subscriber.unsubscribeFromLot(subscribed, lotDTO);
+            }
+        }
+    }
+
     /**
      * Creates an auction, and pings its existence to the whole network.
      *
@@ -383,7 +408,8 @@ public class Peer implements IPeer, INetwork {
     /**
      * Function that will subscribe a peer to an auction.
      *
-     * @param newSubscriber {@link IPeer} is the new subscriber that will be added to the subscription list of the coordinator.
+     * @param newSubscriber {@link IPeer} is the new subscriber that will be added to the subscription list of all other subscribers of the auction.
+     * @param lotDTO {@link LotDTO} The lot the peer will subscribe to.
      */
     @Override
     public void addNewSubscriber(IPeer newSubscriber, LotDTO lotDTO) {
@@ -391,13 +417,13 @@ public class Peer implements IPeer, INetwork {
         String message = "Received request to subscribe from " + newSubscriber.getId();
         System.out.println(message);
 
-        // add the new subscriber to subscriber hashmap
         List<IPeer> subscribers = subscriptions.get(lotDTO.getAuctionid()).get(lotDTO.getLotid());
         if (subscribers == null) {
             subscribers = new ArrayList<>();
             subscriptions.get(lotDTO.getAuctionid()).put(lotDTO.getLotid(), subscribers);
         }
 
+        //if list of subscriber does not contain new subscriber, add it to the list
         if (!subscribers.contains(newSubscriber)) {
             subscribers.add(newSubscriber);
             System.out.println(newSubscriber.getId() + " is now subscribed to lot " + lotDTO.getLotid() + " from auction " + lotDTO.getAuctionid());
@@ -407,7 +433,6 @@ public class Peer implements IPeer, INetwork {
             for(IPeer subscribed : subscribers){
                 subscribed.addNewSubscriber(newSubscriber, lotDTO);
                 newSubscriber.addNewSubscriber(subscribed, lotDTO);
-                System.out.println("I have subscriber: "+subscribed.getId());
             }
         }
     }
@@ -481,15 +506,6 @@ public class Peer implements IPeer, INetwork {
         thread.start();
     }
 
-    @Override
-    public void showSubs(){
-
-for(Map.Entry<String, HashMap<String, List<IPeer>>> set : subscriptions.entrySet()){
-        for (IPeer subscriber : subscriptions.get(String.class).get(String.class)) {
-            System.out.println(subscriber.getId());
-        }}
-    }
-
     /**
      * sends offer to auctioning peer based on the auctionId in the offer
      *
diff --git a/src/test/java/network/manual/Main.java b/src/test/java/network/manual/Main.java
index a35f0dfe..672ce0dc 100644
--- a/src/test/java/network/manual/Main.java
+++ b/src/test/java/network/manual/Main.java
@@ -81,10 +81,7 @@ public class Main {
                     makeOffer(br);
                 } else if (line.equals("create auction")) {
                     createAuction(br);
-                }else if (line.equals("view subscribers")){
-                    peer.showSubs();
-                }
-                 else {
+                } else {
                     peer.broadcastMessage(line);
                 }
             }
-- 
GitLab


From 0ebd1bed67e44ccdbe9db645704671038089a0f8 Mon Sep 17 00:00:00 2001
From: cuneytozturk <c.ozturk1@student.han.nl>
Date: Fri, 2 Jun 2023 10:49:04 +0200
Subject: [PATCH 12/13] kleine refactors+javadoc

---
 .../core/application/adapters/NetworkAdapter.java         | 8 --------
 .../core/application/dependencies/INetwork.java           | 1 -
 .../veilveilig/core/application/ports/INetworkPort.java   | 2 +-
 .../modules/infrastructure/networkmodule/Peer.java        | 5 ++---
 4 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
index 95ebd9ad..53c0c6c9 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/adapters/NetworkAdapter.java
@@ -32,14 +32,6 @@ public class NetworkAdapter implements INetworkPort {
        network.subscribeToLot(lotDTO);
     }
 
-    /**
-     * Calls the INetwork interface to unsubscribe the Peer from lot {@param lotId}.
-     *
-     */
-    @Override
-    public void unsubscribeFromLot(LotDTO lotDTO) {
-        network.unsubscribeFromLot(lotDTO);
-    }
 
 
     @Override
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
index af664925..414d0c21 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/dependencies/INetwork.java
@@ -14,7 +14,6 @@ public interface INetwork {
     String getNetworkInfo();
     void kill();
     void subscribeToLot(LotDTO lotDTO);
-    void unsubscribeFromLot(LotDTO lotDTO);
     void createAuction(AuctionDTO auctionDTO, List<LotDTO> lotDTOList);
 
     void sendAuctionToNetwork(AuctionDTO auction, List<LotDTO> lots);
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java b/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
index 2f45a4da..e2a412eb 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/core/application/ports/INetworkPort.java
@@ -3,6 +3,7 @@ package nl.han.aim.asd.veilveilig.core.application.ports;
 import nl.han.aim.asd.veilveilig.core.application.dtos.OfferDTO;
 import nl.han.aim.asd.veilveilig.core.application.dtos.AuctionDTO;
 import nl.han.aim.asd.veilveilig.core.application.dtos.LotDTO;
+import nl.han.aim.asd.veilveilig.modules.infrastructure.networkmodule.IPeer;
 
 import java.util.List;
 
@@ -10,7 +11,6 @@ import java.util.List;
 public interface INetworkPort {
 
     void subscribeToLot(LotDTO lotDTO);
-    void unsubscribeFromLot(LotDTO lotDTO);
     void createAuction(AuctionDTO auctionDTO, List<LotDTO> lotDTOList);
     void sendOffer(OfferDTO offer, String auctionId);
    void sendAuctionToNetwork(AuctionDTO auctionDTO, List<LotDTO> lotDTOList);
diff --git a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
index 4ac748aa..d734ae17 100644
--- a/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
+++ b/src/main/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/Peer.java
@@ -357,15 +357,14 @@ public class Peer implements IPeer, INetwork {
     }
 
     /**
-     * This function is responsible for subscribing the peer to an existing auction.
+     * This function is responsible for unsubscribing the peer from an existing auction.
      */
     @Override
-    public void unsubscribeFromLot(IPeer subscriber,LotDTO lotDTO) {
+    public void unsubscribeFromLot(IPeer subscriber, LotDTO lotDTO) {
         // print unsubscribe request and send it to everyone in the network. Used for testing.
         String message = subscriber.getId()+" has unsubscribed from this auction";
         System.out.println(message);
 
-        // get the list of subscribers from this list.
         List<IPeer> subscribers = subscriptions.get(lotDTO.getAuctionid()).get(lotDTO.getLotid());
 
         //removes subscriber from this peers subscribers
-- 
GitLab


From 3d3a1ffa015532b6638707aea30a7af38b8b5c2e Mon Sep 17 00:00:00 2001
From: cuneytozturk <c.ozturk1@student.han.nl>
Date: Mon, 5 Jun 2023 09:24:16 +0200
Subject: [PATCH 13/13] tests gefixt.. invocaties waren verkeerd !

---
 .../modules/infrastructure/networkmodule/PeerUnitTest.java      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
index 32a69ae4..dc277efe 100644
--- a/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
+++ b/src/test/java/nl/han/aim/asd/veilveilig/modules/infrastructure/networkmodule/PeerUnitTest.java
@@ -149,7 +149,7 @@ public class PeerUnitTest {
         // Assert
         assertTrue(subscribers.contains(subscriber));
         verify(spyPeer).getSubscribersForLot(lotDTO);
-        verify(subscriber, times(3)).getId();
+        verify(subscriber, times(2)).getId();
     }
 
 
-- 
GitLab