diff --git a/common/src/main/java/io/bitsquare/common/ByteArray.java b/common/src/main/java/io/bitsquare/common/ByteArray.java index 061fbe0927..2e375490ef 100644 --- a/common/src/main/java/io/bitsquare/common/ByteArray.java +++ b/common/src/main/java/io/bitsquare/common/ByteArray.java @@ -6,7 +6,7 @@ import java.io.Serializable; import java.util.Arrays; // Util for comparing byte arrays -public class ByteArray implements Serializable { +public final class ByteArray implements Serializable { // 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; diff --git a/common/src/main/java/io/bitsquare/common/crypto/PubKeyRing.java b/common/src/main/java/io/bitsquare/common/crypto/PubKeyRing.java index 9b3d95441d..c09c8686fe 100644 --- a/common/src/main/java/io/bitsquare/common/crypto/PubKeyRing.java +++ b/common/src/main/java/io/bitsquare/common/crypto/PubKeyRing.java @@ -35,7 +35,7 @@ import java.security.spec.X509EncodedKeySpec; * Same as KeyRing but with public keys only. * Used to send public keys over the wire to other peer. */ -public class PubKeyRing implements Serializable { +public final class PubKeyRing implements Serializable { // 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; diff --git a/core/src/main/java/io/bitsquare/arbitration/Dispute.java b/core/src/main/java/io/bitsquare/arbitration/Dispute.java index 064e83c515..6175d1445c 100644 --- a/core/src/main/java/io/bitsquare/arbitration/Dispute.java +++ b/core/src/main/java/io/bitsquare/arbitration/Dispute.java @@ -38,7 +38,7 @@ import java.util.Arrays; import java.util.Date; import java.util.List; -public class Dispute implements Serializable { +public final class Dispute implements Serializable { // 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(Dispute.class); diff --git a/core/src/main/java/io/bitsquare/arbitration/DisputeManager.java b/core/src/main/java/io/bitsquare/arbitration/DisputeManager.java index 62f95ed201..4605af64b4 100644 --- a/core/src/main/java/io/bitsquare/arbitration/DisputeManager.java +++ b/core/src/main/java/io/bitsquare/arbitration/DisputeManager.java @@ -21,6 +21,7 @@ import com.google.common.util.concurrent.FutureCallback; import com.google.inject.Inject; import io.bitsquare.app.Log; import io.bitsquare.arbitration.messages.*; +import io.bitsquare.arbitration.payload.Attachment; import io.bitsquare.btc.TradeWalletService; import io.bitsquare.btc.WalletService; import io.bitsquare.btc.exceptions.TransactionVerificationException; @@ -274,7 +275,7 @@ public class DisputeManager { } // traders send msg to the arbitrator or arbitrator to 1 trader (trader to trader is not allowed) - public DisputeCommunicationMessage sendDisputeDirectMessage(Dispute dispute, String text, ArrayList attachments) { + public DisputeCommunicationMessage sendDisputeDirectMessage(Dispute dispute, String text, ArrayList attachments) { DisputeCommunicationMessage disputeCommunicationMessage = new DisputeCommunicationMessage(dispute.getTradeId(), dispute.getTraderPubKeyRing().hashCode(), isTrader(dispute), diff --git a/core/src/main/java/io/bitsquare/arbitration/DisputeResult.java b/core/src/main/java/io/bitsquare/arbitration/DisputeResult.java index 9c93bf089f..8ea569a545 100644 --- a/core/src/main/java/io/bitsquare/arbitration/DisputeResult.java +++ b/core/src/main/java/io/bitsquare/arbitration/DisputeResult.java @@ -30,7 +30,7 @@ import java.io.Serializable; import java.util.Arrays; import java.util.Date; -public class DisputeResult implements Serializable { +public final class DisputeResult implements Serializable { // 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(DisputeResult.class); 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 94190c104b..a6773c4a1e 100644 --- a/core/src/main/java/io/bitsquare/arbitration/messages/DisputeCommunicationMessage.java +++ b/core/src/main/java/io/bitsquare/arbitration/messages/DisputeCommunicationMessage.java @@ -18,6 +18,7 @@ package io.bitsquare.arbitration.messages; import io.bitsquare.app.Version; +import io.bitsquare.arbitration.payload.Attachment; import io.bitsquare.p2p.NodeAddress; import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; @@ -26,9 +27,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.ObjectInputStream; -import java.io.Serializable; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.List; @@ -180,58 +179,4 @@ public final class DisputeCommunicationMessage extends DisputeMessage { ", attachments=" + attachments + '}'; } - - - /////////////////////////////////////////////////////////////////////////////////////////// - // Static classes - /////////////////////////////////////////////////////////////////////////////////////////// - - public static class Attachment implements Serializable { - // 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(Attachment.class); - - private final byte[] bytes; - private final String fileName; - - public Attachment(String fileName, byte[] bytes) { - this.fileName = fileName; - this.bytes = bytes; - } - - public byte[] getBytes() { - return bytes; - } - - public String getFileName() { - return fileName; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof Attachment)) return false; - - Attachment that = (Attachment) o; - - if (!Arrays.equals(bytes, that.bytes)) return false; - return !(fileName != null ? !fileName.equals(that.fileName) : that.fileName != null); - - } - - @Override - public int hashCode() { - int result = bytes != null ? Arrays.hashCode(bytes) : 0; - result = 31 * result + (fileName != null ? fileName.hashCode() : 0); - return result; - } - - @Override - public String toString() { - return "Attachment{" + - "description=" + fileName + - ", data=" + Arrays.toString(bytes) + - '}'; - } - } } diff --git a/core/src/main/java/io/bitsquare/arbitration/payload/Attachment.java b/core/src/main/java/io/bitsquare/arbitration/payload/Attachment.java new file mode 100644 index 0000000000..f6204cb4df --- /dev/null +++ b/core/src/main/java/io/bitsquare/arbitration/payload/Attachment.java @@ -0,0 +1,57 @@ +package io.bitsquare.arbitration.payload; + +import io.bitsquare.app.Version; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.Serializable; +import java.util.Arrays; + +public final class Attachment implements Serializable { + // 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(Attachment.class); + + private final byte[] bytes; + private final String fileName; + + public Attachment(String fileName, byte[] bytes) { + this.fileName = fileName; + this.bytes = bytes; + } + + public byte[] getBytes() { + return bytes; + } + + public String getFileName() { + return fileName; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Attachment)) return false; + + Attachment that = (Attachment) o; + + if (!Arrays.equals(bytes, that.bytes)) return false; + return !(fileName != null ? !fileName.equals(that.fileName) : that.fileName != null); + + } + + @Override + public int hashCode() { + int result = bytes != null ? Arrays.hashCode(bytes) : 0; + result = 31 * result + (fileName != null ? fileName.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "Attachment{" + + "description=" + fileName + + ", data=" + Arrays.toString(bytes) + + '}'; + } +} \ No newline at end of file diff --git a/core/src/main/java/io/bitsquare/btc/data/RawInput.java b/core/src/main/java/io/bitsquare/btc/data/RawInput.java index a019b3d797..b533db5e6d 100644 --- a/core/src/main/java/io/bitsquare/btc/data/RawInput.java +++ b/core/src/main/java/io/bitsquare/btc/data/RawInput.java @@ -22,7 +22,7 @@ import io.bitsquare.app.Version; import java.io.Serializable; import java.util.Arrays; -public class RawInput implements Serializable { +public final class RawInput implements Serializable { // 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; diff --git a/gui/src/main/java/io/bitsquare/gui/main/disputes/trader/TraderDisputeView.java b/gui/src/main/java/io/bitsquare/gui/main/disputes/trader/TraderDisputeView.java index a728302977..1b589927ce 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/disputes/trader/TraderDisputeView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/disputes/trader/TraderDisputeView.java @@ -23,6 +23,7 @@ import de.jensd.fx.fontawesome.AwesomeIcon; import io.bitsquare.arbitration.Dispute; import io.bitsquare.arbitration.DisputeManager; import io.bitsquare.arbitration.messages.DisputeCommunicationMessage; +import io.bitsquare.arbitration.payload.Attachment; import io.bitsquare.common.UserThread; import io.bitsquare.common.crypto.KeyRing; import io.bitsquare.gui.common.view.ActivatableView; @@ -83,7 +84,7 @@ public class TraderDisputeView extends ActivatableView { private final ContractPopup contractPopup; private final TradeDetailsPopup tradeDetailsPopup; - private final List tempAttachments = new ArrayList<>(); + private final List tempAttachments = new ArrayList<>(); private TableView disputesTable; private Dispute selectedDispute; @@ -273,7 +274,7 @@ public class TraderDisputeView extends ActivatableView { try (InputStream inputStream = url.openStream()) { byte[] filesAsBytes = ByteStreams.toByteArray(inputStream); if (filesAsBytes.length <= Connection.getMaxMsgSize()) { - tempAttachments.add(new DisputeCommunicationMessage.Attachment(result.getName(), filesAsBytes)); + tempAttachments.add(new Attachment(result.getName(), filesAsBytes)); inputTextArea.setText(inputTextArea.getText() + "\n[Attachment " + result.getName() + "]"); } else { new Popup().warning("The max. allowed file size is " + maxSizeInKB + " kB.").show(); @@ -292,7 +293,7 @@ public class TraderDisputeView extends ActivatableView { } } - private void onOpenAttachment(DisputeCommunicationMessage.Attachment attachment) { + private void onOpenAttachment(Attachment attachment) { FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Save file to disk"); fileChooser.setInitialFileName(attachment.getFileName());