From b92c3ee1b61302b26802ea9df8cc9f35e476c233 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 23 Jul 2016 15:30:11 +0200 Subject: [PATCH] Move supportedCapabilities from super class to concrete classes as it breaks serialisation. --- .../alert/PrivateNotificationMessage.java | 12 +++++++----- .../messages/DisputeCommunicationMessage.java | 10 ++++++++++ .../arbitration/messages/DisputeMessage.java | 15 +++------------ .../messages/DisputeResultMessage.java | 11 +++++++++++ .../messages/OpenNewDisputeMessage.java | 11 +++++++++++ .../messages/PeerOpenedDisputeMessage.java | 11 +++++++++++ .../PeerPublishedPayoutTxMessage.java | 10 ++++++++++ .../messages/OfferAvailabilityRequest.java | 11 +++++++++++ .../messages/OfferAvailabilityResponse.java | 11 +++++++++++ .../availability/messages/OfferMessage.java | 11 +---------- .../messages/DepositTxPublishedMessage.java | 10 ++++++++++ .../messages/FiatTransferStartedMessage.java | 10 ++++++++++ .../messages/FinalizePayoutTxRequest.java | 10 ++++++++++ .../trade/messages/PayDepositRequest.java | 9 +++++++++ .../messages/PayoutTxFinalizedMessage.java | 10 ++++++++++ .../messages/PublishDepositTxRequest.java | 9 +++++++++ .../protocol/trade/messages/TradeMessage.java | 12 +----------- .../keepalive/messages/KeepAliveMessage.java | 19 ++++++++----------- .../p2p/peers/keepalive/messages/Ping.java | 12 ++++++++++++ .../p2p/peers/keepalive/messages/Pong.java | 12 ++++++++++++ .../messages/GetPeersRequest.java | 10 ++++++++++ .../messages/GetPeersResponse.java | 10 ++++++++++ .../messages/PeerExchangeMessage.java | 13 ++----------- .../p2p/storage/messages/AddDataMessage.java | 11 +++++++++++ .../storage/messages/BroadcastMessage.java | 12 +----------- .../storage/messages/RefreshTTLMessage.java | 10 ++++++++++ .../storage/messages/RemoveDataMessage.java | 11 +++++++++++ .../messages/RemoveMailboxDataMessage.java | 11 +++++++++++ 28 files changed, 243 insertions(+), 71 deletions(-) diff --git a/core/src/main/java/io/bitsquare/alert/PrivateNotificationMessage.java b/core/src/main/java/io/bitsquare/alert/PrivateNotificationMessage.java index 73f1f6eb5a..76768c6c5b 100644 --- a/core/src/main/java/io/bitsquare/alert/PrivateNotificationMessage.java +++ b/core/src/main/java/io/bitsquare/alert/PrivateNotificationMessage.java @@ -10,13 +10,9 @@ import javax.annotation.Nullable; import java.util.ArrayList; import java.util.UUID; -public class PrivateNotificationMessage implements MailboxMessage { +public final class PrivateNotificationMessage implements MailboxMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; - private static final Logger log = LoggerFactory.getLogger(PrivateNotificationMessage.class); - private NodeAddress myNodeAddress; - public PrivateNotification privateNotification; - private final String uid = UUID.randomUUID().toString(); private final int messageVersion = Version.getP2PMessageVersion(); @Nullable private ArrayList supportedCapabilities = Version.getCapabilities(); @@ -27,6 +23,12 @@ public class PrivateNotificationMessage implements MailboxMessage { return supportedCapabilities; } + + private static final Logger log = LoggerFactory.getLogger(PrivateNotificationMessage.class); + private NodeAddress myNodeAddress; + public PrivateNotification privateNotification; + private final String uid = UUID.randomUUID().toString(); + public PrivateNotificationMessage(PrivateNotification privateNotification, NodeAddress myNodeAddress) { this.myNodeAddress = myNodeAddress; this.privateNotification = privateNotification; diff --git a/core/src/main/java/io/bitsquare/arbitration/messages/DisputeCommunicationMessage.java b/core/src/main/java/io/bitsquare/arbitration/messages/DisputeCommunicationMessage.java index d6226afd0a..83c481042a 100644 --- a/core/src/main/java/io/bitsquare/arbitration/messages/DisputeCommunicationMessage.java +++ b/core/src/main/java/io/bitsquare/arbitration/messages/DisputeCommunicationMessage.java @@ -25,6 +25,7 @@ import javafx.beans.property.SimpleBooleanProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.Nullable; import java.io.IOException; import java.io.ObjectInputStream; import java.util.ArrayList; @@ -34,6 +35,15 @@ import java.util.List; public final class DisputeCommunicationMessage extends DisputeMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } + private static final Logger log = LoggerFactory.getLogger(DisputeCommunicationMessage.class); private final long date; diff --git a/core/src/main/java/io/bitsquare/arbitration/messages/DisputeMessage.java b/core/src/main/java/io/bitsquare/arbitration/messages/DisputeMessage.java index 6ab3bd79e0..e1bf993e6a 100644 --- a/core/src/main/java/io/bitsquare/arbitration/messages/DisputeMessage.java +++ b/core/src/main/java/io/bitsquare/arbitration/messages/DisputeMessage.java @@ -20,23 +20,14 @@ package io.bitsquare.arbitration.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.messaging.MailboxMessage; -import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.UUID; public abstract class DisputeMessage implements MailboxMessage { - private final int messageVersion = Version.getP2PMessageVersion(); - @Nullable - private ArrayList supportedCapabilities = Version.getCapabilities(); - - @Override - @Nullable - public ArrayList getSupportedCapabilities() { - return supportedCapabilities; - } - + //TODO add serialVersionUID also in superclasses as changes would break compatibility private final String uid = UUID.randomUUID().toString(); + private final int messageVersion = Version.getP2PMessageVersion(); + @Override public int getMessageVersion() { return messageVersion; diff --git a/core/src/main/java/io/bitsquare/arbitration/messages/DisputeResultMessage.java b/core/src/main/java/io/bitsquare/arbitration/messages/DisputeResultMessage.java index 3123d4187d..b99151da91 100644 --- a/core/src/main/java/io/bitsquare/arbitration/messages/DisputeResultMessage.java +++ b/core/src/main/java/io/bitsquare/arbitration/messages/DisputeResultMessage.java @@ -21,9 +21,20 @@ import io.bitsquare.app.Version; import io.bitsquare.arbitration.DisputeResult; import io.bitsquare.p2p.NodeAddress; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class DisputeResultMessage extends DisputeMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final DisputeResult disputeResult; private final NodeAddress myNodeAddress; diff --git a/core/src/main/java/io/bitsquare/arbitration/messages/OpenNewDisputeMessage.java b/core/src/main/java/io/bitsquare/arbitration/messages/OpenNewDisputeMessage.java index c5a38026cd..4662c6b3fc 100644 --- a/core/src/main/java/io/bitsquare/arbitration/messages/OpenNewDisputeMessage.java +++ b/core/src/main/java/io/bitsquare/arbitration/messages/OpenNewDisputeMessage.java @@ -21,9 +21,20 @@ import io.bitsquare.app.Version; import io.bitsquare.arbitration.Dispute; import io.bitsquare.p2p.NodeAddress; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class OpenNewDisputeMessage extends DisputeMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final Dispute dispute; private final NodeAddress myNodeAddress; diff --git a/core/src/main/java/io/bitsquare/arbitration/messages/PeerOpenedDisputeMessage.java b/core/src/main/java/io/bitsquare/arbitration/messages/PeerOpenedDisputeMessage.java index 6afaa4ffed..b7fba9c328 100644 --- a/core/src/main/java/io/bitsquare/arbitration/messages/PeerOpenedDisputeMessage.java +++ b/core/src/main/java/io/bitsquare/arbitration/messages/PeerOpenedDisputeMessage.java @@ -21,9 +21,20 @@ import io.bitsquare.app.Version; import io.bitsquare.arbitration.Dispute; import io.bitsquare.p2p.NodeAddress; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class PeerOpenedDisputeMessage extends DisputeMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final Dispute dispute; private final NodeAddress myNodeAddress; diff --git a/core/src/main/java/io/bitsquare/arbitration/messages/PeerPublishedPayoutTxMessage.java b/core/src/main/java/io/bitsquare/arbitration/messages/PeerPublishedPayoutTxMessage.java index 0107638a45..28195d6cb7 100644 --- a/core/src/main/java/io/bitsquare/arbitration/messages/PeerPublishedPayoutTxMessage.java +++ b/core/src/main/java/io/bitsquare/arbitration/messages/PeerPublishedPayoutTxMessage.java @@ -20,11 +20,21 @@ package io.bitsquare.arbitration.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.NodeAddress; +import javax.annotation.Nullable; +import java.util.ArrayList; import java.util.Arrays; public final class PeerPublishedPayoutTxMessage extends DisputeMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final byte[] transaction; public final String tradeId; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferAvailabilityRequest.java b/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferAvailabilityRequest.java index ccb784760d..401a6b8dd7 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferAvailabilityRequest.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferAvailabilityRequest.java @@ -20,9 +20,20 @@ package io.bitsquare.trade.protocol.availability.messages; import io.bitsquare.app.Version; import io.bitsquare.common.crypto.PubKeyRing; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class OfferAvailabilityRequest extends OfferMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } private final PubKeyRing pubKeyRing; public final long takersTradePrice; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferAvailabilityResponse.java b/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferAvailabilityResponse.java index e40f1a18f5..a9e62a06de 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferAvailabilityResponse.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferAvailabilityResponse.java @@ -20,9 +20,20 @@ package io.bitsquare.trade.protocol.availability.messages; import io.bitsquare.app.Version; import io.bitsquare.trade.protocol.availability.AvailabilityResult; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class OfferAvailabilityResponse extends OfferMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final AvailabilityResult availabilityResult; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferMessage.java index 1c2ac33663..bfb436739f 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/availability/messages/OfferMessage.java @@ -20,24 +20,15 @@ package io.bitsquare.trade.protocol.availability.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.messaging.DirectMessage; -import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; -import java.util.ArrayList; @Immutable public abstract class OfferMessage implements DirectMessage { + //TODO add serialVersionUID also in superclasses as changes would break compatibility // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; private final int messageVersion = Version.getP2PMessageVersion(); - @Nullable - private ArrayList supportedCapabilities = Version.getCapabilities(); - - @Override - @Nullable - public ArrayList getSupportedCapabilities() { - return supportedCapabilities; - } public final String offerId; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/DepositTxPublishedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/DepositTxPublishedMessage.java index d21c1be725..83235ee283 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/DepositTxPublishedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/DepositTxPublishedMessage.java @@ -21,7 +21,9 @@ import io.bitsquare.app.Version; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.messaging.MailboxMessage; +import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; +import java.util.ArrayList; import java.util.Arrays; import java.util.UUID; @@ -29,6 +31,14 @@ import java.util.UUID; public final class DepositTxPublishedMessage extends TradeMessage implements MailboxMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final byte[] depositTx; private final NodeAddress senderNodeAddress; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FiatTransferStartedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FiatTransferStartedMessage.java index 227b23d496..61af76a944 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FiatTransferStartedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FiatTransferStartedMessage.java @@ -21,13 +21,23 @@ import io.bitsquare.app.Version; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.messaging.MailboxMessage; +import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; +import java.util.ArrayList; import java.util.UUID; @Immutable public final class FiatTransferStartedMessage extends TradeMessage implements MailboxMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final String buyerPayoutAddress; private final NodeAddress senderNodeAddress; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FinalizePayoutTxRequest.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FinalizePayoutTxRequest.java index 2d7b38774a..7f5a77d51e 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FinalizePayoutTxRequest.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FinalizePayoutTxRequest.java @@ -21,7 +21,9 @@ import io.bitsquare.app.Version; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.messaging.MailboxMessage; +import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; +import java.util.ArrayList; import java.util.Arrays; import java.util.UUID; @@ -29,6 +31,14 @@ import java.util.UUID; public final class FinalizePayoutTxRequest extends TradeMessage implements MailboxMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final byte[] sellerSignature; public final String sellerPayoutAddress; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PayDepositRequest.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PayDepositRequest.java index 503b97ed8d..eb84c0dc32 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PayDepositRequest.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PayDepositRequest.java @@ -24,6 +24,7 @@ import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.messaging.MailboxMessage; import io.bitsquare.payment.PaymentAccountContractData; +import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import java.util.ArrayList; import java.util.Arrays; @@ -33,6 +34,14 @@ import java.util.UUID; public final class PayDepositRequest extends TradeMessage implements MailboxMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final long tradeAmount; public final long tradePrice; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PayoutTxFinalizedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PayoutTxFinalizedMessage.java index ee498fd400..ec7c21ddd8 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PayoutTxFinalizedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PayoutTxFinalizedMessage.java @@ -21,7 +21,9 @@ import io.bitsquare.app.Version; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.messaging.MailboxMessage; +import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; +import java.util.ArrayList; import java.util.Arrays; import java.util.UUID; @@ -29,6 +31,14 @@ import java.util.UUID; public final class PayoutTxFinalizedMessage extends TradeMessage implements MailboxMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final byte[] payoutTx; private final NodeAddress senderNodeAddress; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PublishDepositTxRequest.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PublishDepositTxRequest.java index 3d8390eed7..bce56d5061 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PublishDepositTxRequest.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/PublishDepositTxRequest.java @@ -24,6 +24,7 @@ import io.bitsquare.payment.PaymentAccountContractData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import java.util.ArrayList; @@ -33,6 +34,14 @@ import java.util.ArrayList; public final class PublishDepositTxRequest extends TradeMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } private static final Logger log = LoggerFactory.getLogger(PublishDepositTxRequest.class); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/TradeMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/TradeMessage.java index d715cef084..02d4ec345b 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/TradeMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/TradeMessage.java @@ -20,25 +20,15 @@ package io.bitsquare.trade.protocol.trade.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.messaging.DirectMessage; -import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; -import java.util.ArrayList; @Immutable public abstract class TradeMessage implements DirectMessage { + //TODO add serialVersionUID also in superclasses as changes would break compatibility // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; private final int messageVersion = Version.getP2PMessageVersion(); - @Nullable - private ArrayList supportedCapabilities = Version.getCapabilities(); - - @Override - @Nullable - public ArrayList getSupportedCapabilities() { - return supportedCapabilities; - } - public final String tradeId; @Override diff --git a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/KeepAliveMessage.java b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/KeepAliveMessage.java index bcadcd12a4..c455386b71 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/KeepAliveMessage.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/KeepAliveMessage.java @@ -3,26 +3,23 @@ package io.bitsquare.p2p.peers.keepalive.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.Message; -import javax.annotation.Nullable; -import java.util.ArrayList; - public abstract class KeepAliveMessage implements Message { - private final int messageVersion = Version.getP2PMessageVersion(); + //TODO add serialVersionUID also in superclasses as changes would break compatibility + + // Should be like that code + /* private final int messageVersion = Version.getP2PMessageVersion(); @Override public int getMessageVersion() { return messageVersion; - } - - @Nullable - private ArrayList supportedCapabilities = Version.getCapabilities(); + }*/ @Override - @Nullable - public ArrayList getSupportedCapabilities() { - return supportedCapabilities; + public int getMessageVersion() { + return Version.getP2PMessageVersion(); } + @Override public String toString() { return "KeepAliveMessage{" + diff --git a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Ping.java b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Ping.java index a8d45ee2e0..937551b143 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Ping.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Ping.java @@ -2,10 +2,22 @@ package io.bitsquare.p2p.peers.keepalive.messages; import io.bitsquare.app.Version; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class Ping extends KeepAliveMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } + public final int nonce; public final int lastRoundTripTime; diff --git a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Pong.java b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Pong.java index ad323562c4..97fffe8354 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Pong.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/keepalive/messages/Pong.java @@ -2,10 +2,22 @@ package io.bitsquare.p2p.peers.keepalive.messages; import io.bitsquare.app.Version; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class Pong extends KeepAliveMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } + public final int requestNonce; public Pong(int requestNonce) { diff --git a/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/GetPeersRequest.java b/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/GetPeersRequest.java index 52d84df510..2a3d41919f 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/GetPeersRequest.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/GetPeersRequest.java @@ -5,6 +5,8 @@ import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.network.messages.SendersNodeAddressMessage; import io.bitsquare.p2p.peers.peerexchange.Peer; +import javax.annotation.Nullable; +import java.util.ArrayList; import java.util.HashSet; import static com.google.common.base.Preconditions.checkNotNull; @@ -12,6 +14,14 @@ import static com.google.common.base.Preconditions.checkNotNull; public final class GetPeersRequest extends PeerExchangeMessage implements SendersNodeAddressMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } private final NodeAddress senderNodeAddress; public final int nonce; diff --git a/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/GetPeersResponse.java b/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/GetPeersResponse.java index 6f38b73499..65c8f56f29 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/GetPeersResponse.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/GetPeersResponse.java @@ -3,11 +3,21 @@ package io.bitsquare.p2p.peers.peerexchange.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.peers.peerexchange.Peer; +import javax.annotation.Nullable; +import java.util.ArrayList; import java.util.HashSet; public final class GetPeersResponse extends PeerExchangeMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final int requestNonce; public final HashSet reportedPeers; diff --git a/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/PeerExchangeMessage.java b/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/PeerExchangeMessage.java index 03e0cef6f9..39f506d462 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/PeerExchangeMessage.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/peerexchange/messages/PeerExchangeMessage.java @@ -3,19 +3,10 @@ package io.bitsquare.p2p.peers.peerexchange.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.Message; -import javax.annotation.Nullable; -import java.util.ArrayList; - abstract class PeerExchangeMessage implements Message { + //TODO add serialVersionUID also in superclasses as changes would break compatibility + // That object is sent over the wire, so we need to take care of version compatibility. private final int messageVersion = Version.getP2PMessageVersion(); - @Nullable - private ArrayList supportedCapabilities = Version.getCapabilities(); - - @Override - @Nullable - public ArrayList getSupportedCapabilities() { - return supportedCapabilities; - } @Override public int getMessageVersion() { diff --git a/network/src/main/java/io/bitsquare/p2p/storage/messages/AddDataMessage.java b/network/src/main/java/io/bitsquare/p2p/storage/messages/AddDataMessage.java index d0ca9cd86f..9e5e48569f 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/messages/AddDataMessage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/messages/AddDataMessage.java @@ -3,9 +3,20 @@ package io.bitsquare.p2p.storage.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.storage.storageentry.ProtectedStorageEntry; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class AddDataMessage extends BroadcastMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final ProtectedStorageEntry protectedStorageEntry; diff --git a/network/src/main/java/io/bitsquare/p2p/storage/messages/BroadcastMessage.java b/network/src/main/java/io/bitsquare/p2p/storage/messages/BroadcastMessage.java index 70a2905e94..f4f4e2bdf0 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/messages/BroadcastMessage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/messages/BroadcastMessage.java @@ -3,19 +3,9 @@ package io.bitsquare.p2p.storage.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.Message; -import javax.annotation.Nullable; -import java.util.ArrayList; - public abstract class BroadcastMessage implements Message { + //TODO add serialVersionUID also in superclasses as changes would break compatibility private final int messageVersion = Version.getP2PMessageVersion(); - @Nullable - private ArrayList supportedCapabilities = Version.getCapabilities(); - - @Override - @Nullable - public ArrayList getSupportedCapabilities() { - return supportedCapabilities; - } @Override public int getMessageVersion() { diff --git a/network/src/main/java/io/bitsquare/p2p/storage/messages/RefreshTTLMessage.java b/network/src/main/java/io/bitsquare/p2p/storage/messages/RefreshTTLMessage.java index 275ccb7aa4..8713aae43f 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/messages/RefreshTTLMessage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/messages/RefreshTTLMessage.java @@ -2,11 +2,21 @@ package io.bitsquare.p2p.storage.messages; import io.bitsquare.app.Version; +import javax.annotation.Nullable; +import java.util.ArrayList; import java.util.Arrays; public final class RefreshTTLMessage extends BroadcastMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } // Serialized data has 400 bytes instead of 114 bytes of the raw content ;-( // When using Protobuffer that should bets much smaller diff --git a/network/src/main/java/io/bitsquare/p2p/storage/messages/RemoveDataMessage.java b/network/src/main/java/io/bitsquare/p2p/storage/messages/RemoveDataMessage.java index 4039c31773..3223c9adeb 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/messages/RemoveDataMessage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/messages/RemoveDataMessage.java @@ -3,9 +3,20 @@ package io.bitsquare.p2p.storage.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.storage.storageentry.ProtectedStorageEntry; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class RemoveDataMessage extends BroadcastMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final ProtectedStorageEntry protectedStorageEntry; diff --git a/network/src/main/java/io/bitsquare/p2p/storage/messages/RemoveMailboxDataMessage.java b/network/src/main/java/io/bitsquare/p2p/storage/messages/RemoveMailboxDataMessage.java index b954ab3753..ca7c87486a 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/messages/RemoveMailboxDataMessage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/messages/RemoveMailboxDataMessage.java @@ -3,9 +3,20 @@ package io.bitsquare.p2p.storage.messages; import io.bitsquare.app.Version; import io.bitsquare.p2p.storage.storageentry.ProtectedMailboxStorageEntry; +import javax.annotation.Nullable; +import java.util.ArrayList; + public final class RemoveMailboxDataMessage extends BroadcastMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; + @Nullable + private ArrayList supportedCapabilities = Version.getCapabilities(); + + @Override + @Nullable + public ArrayList getSupportedCapabilities() { + return supportedCapabilities; + } public final ProtectedMailboxStorageEntry protectedMailboxStorageEntry;