Use JUnit 5 for tests, bump dependencies
This commit is contained in:
		@@ -33,6 +33,7 @@ dependencies {
 | 
			
		||||
    compile 'args4j:args4j'
 | 
			
		||||
    compile 'com.h2database:h2'
 | 
			
		||||
    compile 'org.apache.commons:commons-text'
 | 
			
		||||
    testCompile 'junit:junit'
 | 
			
		||||
    testCompile 'com.nhaarman:mockito-kotlin'
 | 
			
		||||
    testCompile 'org.junit.jupiter:junit-jupiter-api'
 | 
			
		||||
    testRuntime 'org.junit.jupiter:junit-jupiter-engine'
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,218 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright 2016 Christian Basler
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package ch.dissem.bitmessage;
 | 
			
		||||
 | 
			
		||||
import ch.dissem.bitmessage.cryptography.bc.BouncyCryptography;
 | 
			
		||||
import ch.dissem.bitmessage.entity.BitmessageAddress;
 | 
			
		||||
import ch.dissem.bitmessage.entity.Plaintext;
 | 
			
		||||
import ch.dissem.bitmessage.networking.nio.NioNetworkHandler;
 | 
			
		||||
import ch.dissem.bitmessage.ports.DefaultLabeler;
 | 
			
		||||
import ch.dissem.bitmessage.ports.Labeler;
 | 
			
		||||
import ch.dissem.bitmessage.repository.*;
 | 
			
		||||
import ch.dissem.bitmessage.utils.TTL;
 | 
			
		||||
import org.junit.After;
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
 | 
			
		||||
import static ch.dissem.bitmessage.entity.payload.Pubkey.Feature.DOES_ACK;
 | 
			
		||||
import static ch.dissem.bitmessage.utils.UnixTime.MINUTE;
 | 
			
		||||
import static com.nhaarman.mockito_kotlin.MockitoKt.*;
 | 
			
		||||
import static org.hamcrest.CoreMatchers.equalTo;
 | 
			
		||||
import static org.junit.Assert.assertThat;
 | 
			
		||||
import static org.mockito.ArgumentMatchers.any;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Christian Basler
 | 
			
		||||
 */
 | 
			
		||||
public class SystemTest {
 | 
			
		||||
    private static int port = 6000;
 | 
			
		||||
 | 
			
		||||
    private BitmessageContext alice;
 | 
			
		||||
    private BitmessageAddress aliceIdentity;
 | 
			
		||||
    private Labeler aliceLabeler;
 | 
			
		||||
 | 
			
		||||
    private BitmessageContext bob;
 | 
			
		||||
    private TestListener bobListener;
 | 
			
		||||
    private BitmessageAddress bobIdentity;
 | 
			
		||||
 | 
			
		||||
    @Before
 | 
			
		||||
    public void setUp() {
 | 
			
		||||
        TTL.msg(5 * MINUTE);
 | 
			
		||||
        TTL.getpubkey(5 * MINUTE);
 | 
			
		||||
        TTL.pubkey(5 * MINUTE);
 | 
			
		||||
 | 
			
		||||
        int alicePort = port++;
 | 
			
		||||
        int bobPort = port++;
 | 
			
		||||
        {
 | 
			
		||||
            JdbcConfig aliceDB = new JdbcConfig("jdbc:h2:mem:alice;DB_CLOSE_DELAY=-1", "sa", "");
 | 
			
		||||
            aliceLabeler = spy(new DebugLabeler("Alice"));
 | 
			
		||||
            TestListener aliceListener = new TestListener();
 | 
			
		||||
            alice = new BitmessageContext.Builder()
 | 
			
		||||
                .addressRepo(new JdbcAddressRepository(aliceDB))
 | 
			
		||||
                .inventory(new JdbcInventory(aliceDB))
 | 
			
		||||
                .labelRepo(new JdbcLabelRepository(aliceDB))
 | 
			
		||||
                .messageRepo(new JdbcMessageRepository(aliceDB))
 | 
			
		||||
                .powRepo(new JdbcProofOfWorkRepository(aliceDB))
 | 
			
		||||
                .nodeRegistry(new TestNodeRegistry(bobPort))
 | 
			
		||||
                .networkHandler(new NioNetworkHandler())
 | 
			
		||||
                .cryptography(new BouncyCryptography())
 | 
			
		||||
                .listener(aliceListener)
 | 
			
		||||
                .labeler(aliceLabeler)
 | 
			
		||||
                .build();
 | 
			
		||||
            alice.internals().getPreferences().setPort(alicePort);
 | 
			
		||||
            alice.startup();
 | 
			
		||||
            aliceIdentity = alice.createIdentity(false, DOES_ACK);
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
            JdbcConfig bobDB = new JdbcConfig("jdbc:h2:mem:bob;DB_CLOSE_DELAY=-1", "sa", "");
 | 
			
		||||
            bobListener = new TestListener();
 | 
			
		||||
            bob = new BitmessageContext.Builder()
 | 
			
		||||
                .addressRepo(new JdbcAddressRepository(bobDB))
 | 
			
		||||
                .inventory(new JdbcInventory(bobDB))
 | 
			
		||||
                .labelRepo(new JdbcLabelRepository(bobDB))
 | 
			
		||||
                .messageRepo(new JdbcMessageRepository(bobDB))
 | 
			
		||||
                .powRepo(new JdbcProofOfWorkRepository(bobDB))
 | 
			
		||||
                .nodeRegistry(new TestNodeRegistry(alicePort))
 | 
			
		||||
                .networkHandler(new NioNetworkHandler())
 | 
			
		||||
                .cryptography(new BouncyCryptography())
 | 
			
		||||
                .listener(bobListener)
 | 
			
		||||
                .labeler(new DebugLabeler("Bob"))
 | 
			
		||||
                .build();
 | 
			
		||||
            bob.internals().getPreferences().setPort(bobPort);
 | 
			
		||||
            bob.startup();
 | 
			
		||||
            bobIdentity = bob.createIdentity(false, DOES_ACK);
 | 
			
		||||
        }
 | 
			
		||||
        ((DebugLabeler) alice.labeler()).init(aliceIdentity, bobIdentity);
 | 
			
		||||
        ((DebugLabeler) bob.labeler()).init(aliceIdentity, bobIdentity);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @After
 | 
			
		||||
    public void tearDown() {
 | 
			
		||||
        alice.shutdown();
 | 
			
		||||
        bob.shutdown();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(timeout = 120_000)
 | 
			
		||||
    public void ensureAliceCanSendMessageToBob() throws Exception {
 | 
			
		||||
        String originalMessage = UUID.randomUUID().toString();
 | 
			
		||||
        alice.send(aliceIdentity, new BitmessageAddress(bobIdentity.getAddress()), "Subject", originalMessage);
 | 
			
		||||
 | 
			
		||||
        Plaintext plaintext = bobListener.get(2, TimeUnit.MINUTES);
 | 
			
		||||
 | 
			
		||||
        assertThat(plaintext.getType(), equalTo(Plaintext.Type.MSG));
 | 
			
		||||
        assertThat(plaintext.getText(), equalTo(originalMessage));
 | 
			
		||||
 | 
			
		||||
        verify(aliceLabeler, timeout(TimeUnit.MINUTES.toMillis(2)).atLeastOnce())
 | 
			
		||||
            .markAsAcknowledged(any());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(timeout = 30_000)
 | 
			
		||||
    public void ensureBobCanReceiveBroadcastFromAlice() throws Exception {
 | 
			
		||||
        String originalMessage = UUID.randomUUID().toString();
 | 
			
		||||
        bob.addSubscribtion(new BitmessageAddress(aliceIdentity.getAddress()));
 | 
			
		||||
        alice.broadcast(aliceIdentity, "Subject", originalMessage);
 | 
			
		||||
 | 
			
		||||
        Plaintext plaintext = bobListener.get(15, TimeUnit.MINUTES);
 | 
			
		||||
 | 
			
		||||
        assertThat(plaintext.getType(), equalTo(Plaintext.Type.BROADCAST));
 | 
			
		||||
        assertThat(plaintext.getText(), equalTo(originalMessage));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static class DebugLabeler extends DefaultLabeler {
 | 
			
		||||
        private final Logger LOG = LoggerFactory.getLogger("Labeler");
 | 
			
		||||
        final String name;
 | 
			
		||||
        String alice;
 | 
			
		||||
        String bob;
 | 
			
		||||
 | 
			
		||||
        private DebugLabeler(String name) {
 | 
			
		||||
            this.name = name;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void init(BitmessageAddress alice, BitmessageAddress bob) {
 | 
			
		||||
            this.alice = alice.getAddress();
 | 
			
		||||
            this.bob = bob.getAddress();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void setLabels(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Received");
 | 
			
		||||
            super.setLabels(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void markAsDraft(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Draft");
 | 
			
		||||
            super.markAsDraft(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void markAsSending(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Sending");
 | 
			
		||||
            super.markAsSending(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void markAsSent(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Sent");
 | 
			
		||||
            super.markAsSent(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void markAsAcknowledged(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Acknowledged");
 | 
			
		||||
            super.markAsAcknowledged(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void markAsRead(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Read");
 | 
			
		||||
            super.markAsRead(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void markAsUnread(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Unread");
 | 
			
		||||
            super.markAsUnread(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void delete(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Cleared");
 | 
			
		||||
            super.delete(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public void archive(Plaintext msg) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.getFrom()) + ": Archived");
 | 
			
		||||
            super.archive(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private String name(BitmessageAddress address) {
 | 
			
		||||
            if (alice.equals(address.getAddress()))
 | 
			
		||||
                return "Alice";
 | 
			
		||||
            else if (bob.equals(address.getAddress()))
 | 
			
		||||
                return "Bob";
 | 
			
		||||
            else
 | 
			
		||||
                return "Unknown (" + address.getAddress() + ")";
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										215
									
								
								demo/src/test/java/ch/dissem/bitmessage/SystemTest.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								demo/src/test/java/ch/dissem/bitmessage/SystemTest.kt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,215 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright 2016 Christian Basler
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package ch.dissem.bitmessage
 | 
			
		||||
 | 
			
		||||
import ch.dissem.bitmessage.cryptography.bc.BouncyCryptography
 | 
			
		||||
import ch.dissem.bitmessage.entity.BitmessageAddress
 | 
			
		||||
import ch.dissem.bitmessage.entity.Plaintext
 | 
			
		||||
import ch.dissem.bitmessage.entity.payload.Pubkey.Feature.DOES_ACK
 | 
			
		||||
import ch.dissem.bitmessage.networking.nio.NioNetworkHandler
 | 
			
		||||
import ch.dissem.bitmessage.ports.DefaultLabeler
 | 
			
		||||
import ch.dissem.bitmessage.ports.Labeler
 | 
			
		||||
import ch.dissem.bitmessage.repository.*
 | 
			
		||||
import ch.dissem.bitmessage.utils.TTL
 | 
			
		||||
import ch.dissem.bitmessage.utils.UnixTime.MINUTE
 | 
			
		||||
import com.nhaarman.mockito_kotlin.spy
 | 
			
		||||
import com.nhaarman.mockito_kotlin.timeout
 | 
			
		||||
import com.nhaarman.mockito_kotlin.verify
 | 
			
		||||
import org.junit.jupiter.api.AfterEach
 | 
			
		||||
import org.junit.jupiter.api.Assertions.assertEquals
 | 
			
		||||
import org.junit.jupiter.api.Assertions.assertTimeoutPreemptively
 | 
			
		||||
import org.junit.jupiter.api.BeforeEach
 | 
			
		||||
import org.junit.jupiter.api.Test
 | 
			
		||||
import org.mockito.ArgumentMatchers.any
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import java.time.Duration.ofMinutes
 | 
			
		||||
import java.time.Duration.ofSeconds
 | 
			
		||||
import java.util.*
 | 
			
		||||
import java.util.concurrent.TimeUnit
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Christian Basler
 | 
			
		||||
 */
 | 
			
		||||
class SystemTest {
 | 
			
		||||
 | 
			
		||||
    private lateinit var alice: BitmessageContext
 | 
			
		||||
    private lateinit var aliceIdentity: BitmessageAddress
 | 
			
		||||
    private lateinit var aliceLabeler: Labeler
 | 
			
		||||
 | 
			
		||||
    private lateinit var bob: BitmessageContext
 | 
			
		||||
    private lateinit var bobListener: TestListener
 | 
			
		||||
    private lateinit var bobIdentity: BitmessageAddress
 | 
			
		||||
 | 
			
		||||
    @BeforeEach
 | 
			
		||||
    fun setUp() {
 | 
			
		||||
        TTL.msg = 5 * MINUTE
 | 
			
		||||
        TTL.getpubkey = 5 * MINUTE
 | 
			
		||||
        TTL.pubkey = 5 * MINUTE
 | 
			
		||||
 | 
			
		||||
        val alicePort = port++
 | 
			
		||||
        val bobPort = port++
 | 
			
		||||
        run {
 | 
			
		||||
            val aliceDB = JdbcConfig("jdbc:h2:mem:alice;DB_CLOSE_DELAY=-1", "sa", "")
 | 
			
		||||
            aliceLabeler = spy(DebugLabeler("Alice"))
 | 
			
		||||
            val aliceListener = TestListener()
 | 
			
		||||
            alice = BitmessageContext.Builder()
 | 
			
		||||
                .addressRepo(JdbcAddressRepository(aliceDB))
 | 
			
		||||
                .inventory(JdbcInventory(aliceDB))
 | 
			
		||||
                .labelRepo(JdbcLabelRepository(aliceDB))
 | 
			
		||||
                .messageRepo(JdbcMessageRepository(aliceDB))
 | 
			
		||||
                .powRepo(JdbcProofOfWorkRepository(aliceDB))
 | 
			
		||||
                .nodeRegistry(TestNodeRegistry(bobPort))
 | 
			
		||||
                .networkHandler(NioNetworkHandler())
 | 
			
		||||
                .cryptography(BouncyCryptography())
 | 
			
		||||
                .listener(aliceListener)
 | 
			
		||||
                .labeler(aliceLabeler)
 | 
			
		||||
                .build()
 | 
			
		||||
            alice.internals.preferences.port = alicePort
 | 
			
		||||
            alice.startup()
 | 
			
		||||
            aliceIdentity = alice.createIdentity(false, DOES_ACK)
 | 
			
		||||
        }
 | 
			
		||||
        run {
 | 
			
		||||
            val bobDB = JdbcConfig("jdbc:h2:mem:bob;DB_CLOSE_DELAY=-1", "sa", "")
 | 
			
		||||
            bobListener = TestListener()
 | 
			
		||||
            bob = BitmessageContext.Builder()
 | 
			
		||||
                .addressRepo(JdbcAddressRepository(bobDB))
 | 
			
		||||
                .inventory(JdbcInventory(bobDB))
 | 
			
		||||
                .labelRepo(JdbcLabelRepository(bobDB))
 | 
			
		||||
                .messageRepo(JdbcMessageRepository(bobDB))
 | 
			
		||||
                .powRepo(JdbcProofOfWorkRepository(bobDB))
 | 
			
		||||
                .nodeRegistry(TestNodeRegistry(alicePort))
 | 
			
		||||
                .networkHandler(NioNetworkHandler())
 | 
			
		||||
                .cryptography(BouncyCryptography())
 | 
			
		||||
                .listener(bobListener)
 | 
			
		||||
                .labeler(DebugLabeler("Bob"))
 | 
			
		||||
                .build()
 | 
			
		||||
            bob.internals.preferences.port = bobPort
 | 
			
		||||
            bob.startup()
 | 
			
		||||
            bobIdentity = bob.createIdentity(false, DOES_ACK)
 | 
			
		||||
        }
 | 
			
		||||
        (alice.labeler as DebugLabeler).init(aliceIdentity, bobIdentity)
 | 
			
		||||
        (bob.labeler as DebugLabeler).init(aliceIdentity, bobIdentity)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @AfterEach
 | 
			
		||||
    fun tearDown() {
 | 
			
		||||
        alice.shutdown()
 | 
			
		||||
        bob.shutdown()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    @Throws(Exception::class)
 | 
			
		||||
    fun ensureAliceCanSendMessageToBob() {
 | 
			
		||||
        assertTimeoutPreemptively(ofMinutes(2)) {
 | 
			
		||||
            val originalMessage = UUID.randomUUID().toString()
 | 
			
		||||
            alice.send(aliceIdentity, BitmessageAddress(bobIdentity.address), "Subject", originalMessage)
 | 
			
		||||
 | 
			
		||||
            val plaintext = bobListener[2, TimeUnit.MINUTES]
 | 
			
		||||
 | 
			
		||||
            assertEquals(Plaintext.Type.MSG, plaintext.type)
 | 
			
		||||
            assertEquals(originalMessage, plaintext.text)
 | 
			
		||||
 | 
			
		||||
            verify(
 | 
			
		||||
                aliceLabeler,
 | 
			
		||||
                timeout(TimeUnit.MINUTES.toMillis(2)).atLeastOnce()
 | 
			
		||||
            ).markAsAcknowledged(any<Plaintext>())
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    @Throws(Exception::class)
 | 
			
		||||
    fun ensureBobCanReceiveBroadcastFromAlice() {
 | 
			
		||||
        assertTimeoutPreemptively(ofSeconds(30)) {
 | 
			
		||||
            val originalMessage = UUID.randomUUID().toString()
 | 
			
		||||
            bob.addSubscribtion(BitmessageAddress(aliceIdentity.address))
 | 
			
		||||
            alice.broadcast(aliceIdentity, "Subject", originalMessage)
 | 
			
		||||
 | 
			
		||||
            val plaintext = bobListener[15, TimeUnit.MINUTES]
 | 
			
		||||
 | 
			
		||||
            assertEquals(Plaintext.Type.BROADCAST, plaintext.type)
 | 
			
		||||
            assertEquals(originalMessage, plaintext.text)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    internal class DebugLabeler internal constructor(private val name: String) : DefaultLabeler() {
 | 
			
		||||
        private val LOG = LoggerFactory.getLogger("Labeler")
 | 
			
		||||
        private lateinit var alice: String
 | 
			
		||||
        private lateinit var bob: String
 | 
			
		||||
 | 
			
		||||
        internal fun init(alice: BitmessageAddress, bob: BitmessageAddress) {
 | 
			
		||||
            this.alice = alice.address
 | 
			
		||||
            this.bob = bob.address
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun setLabels(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Received")
 | 
			
		||||
            super.setLabels(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun markAsDraft(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Draft")
 | 
			
		||||
            super.markAsDraft(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun markAsSending(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Sending")
 | 
			
		||||
            super.markAsSending(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun markAsSent(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Sent")
 | 
			
		||||
            super.markAsSent(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun markAsAcknowledged(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Acknowledged")
 | 
			
		||||
            super.markAsAcknowledged(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun markAsRead(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Read")
 | 
			
		||||
            super.markAsRead(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun markAsUnread(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Unread")
 | 
			
		||||
            super.markAsUnread(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun delete(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Cleared")
 | 
			
		||||
            super.delete(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun archive(msg: Plaintext) {
 | 
			
		||||
            LOG.info(name + ": From " + name(msg.from) + ": Archived")
 | 
			
		||||
            super.archive(msg)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private fun name(address: BitmessageAddress): String {
 | 
			
		||||
            return when {
 | 
			
		||||
                alice == address.address -> "Alice"
 | 
			
		||||
                bob == address.address -> "Bob"
 | 
			
		||||
                else -> "Unknown (" + address.address + ")"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
        private var port = 6000
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user