Move supportedCapabilities from super class to concrete classes as it breaks serialisation.

This commit is contained in:
Manfred Karrer 2016-07-23 15:30:11 +02:00
parent 8e34eea62f
commit b92c3ee1b6
28 changed files with 243 additions and 71 deletions

View file

@ -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<Integer> 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;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
private static final Logger log = LoggerFactory.getLogger(DisputeCommunicationMessage.class);
private final long date;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> 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;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final DisputeResult disputeResult;
private final NodeAddress myNodeAddress;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final Dispute dispute;
private final NodeAddress myNodeAddress;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final Dispute dispute;
private final NodeAddress myNodeAddress;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final byte[] transaction;
public final String tradeId;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
private final PubKeyRing pubKeyRing;
public final long takersTradePrice;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final AvailabilityResult availabilityResult;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final String offerId;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final byte[] depositTx;
private final NodeAddress senderNodeAddress;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final String buyerPayoutAddress;
private final NodeAddress senderNodeAddress;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final byte[] sellerSignature;
public final String sellerPayoutAddress;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final long tradeAmount;
public final long tradePrice;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final byte[] payoutTx;
private final NodeAddress senderNodeAddress;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
private static final Logger log = LoggerFactory.getLogger(PublishDepositTxRequest.class);

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final String tradeId;
@Override

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
}*/
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
public int getMessageVersion() {
return Version.getP2PMessageVersion();
}
@Override
public String toString() {
return "KeepAliveMessage{" +

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final int nonce;
public final int lastRoundTripTime;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final int requestNonce;
public Pong(int requestNonce) {

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
private final NodeAddress senderNodeAddress;
public final int nonce;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final int requestNonce;
public final HashSet<Peer> reportedPeers;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
@Override
public int getMessageVersion() {

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final ProtectedStorageEntry protectedStorageEntry;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
@Override
public int getMessageVersion() {

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
// Serialized data has 400 bytes instead of 114 bytes of the raw content ;-(
// When using Protobuffer that should bets much smaller

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final ProtectedStorageEntry protectedStorageEntry;

View file

@ -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<Integer> supportedCapabilities = Version.getCapabilities();
@Override
@Nullable
public ArrayList<Integer> getSupportedCapabilities() {
return supportedCapabilities;
}
public final ProtectedMailboxStorageEntry protectedMailboxStorageEntry;