// Path: core/src/main/java/io/bigio/core/Envelope.java
// public class Envelope<T> {
//     
//     private String senderKey;
//     private int executeTime;
//     private int millisecondsSinceMidnight;
//     private String topic;
//     private String partition;
//     private String className;
//     private byte[] payload;
// 
//     private byte[] key;
//     private boolean decoded = false;
//     private boolean encrypted = false;
//     private T message;
// 
//     /**
//      * @return the senderKey
//      */
//     public String getSenderKey() {
//         return senderKey;
//     }
// 
//     /**
//      * @param senderKey the senderKey to set
//      */
//     public void setSenderKey(String senderKey) {
//         this.senderKey = senderKey;
//     }
// 
//     /**
//      * @return the executeTime
//      */
//     public int getExecuteTime() {
//         return executeTime;
//     }
// 
//     /**
//      * @param executeTime the executeTime to set
//      */
//     public void setExecuteTime(int executeTime) {
//         this.executeTime = executeTime;
//     }
// 
//     /**
//      * @return the topic
//      */
//     public String getTopic() {
//         return topic;
//     }
// 
//     /**
//      * @param topic the topic to set
//      */
//     public void setTopic(String topic) {
//         this.topic = topic;
//     }
// 
//     /**
//      * @return the payload
//      */
//     public byte[] getPayload() {
//         return payload;
//     }
// 
//     /**
//      * @param payload the payload to set
//      */
//     public void setPayload(byte[] payload) {
//         this.payload = payload;
//     }
// 
//     /**
//      * @return the decoded
//      */
//     public boolean isDecoded() {
//         return decoded;
//     }
// 
//     /**
//      * @param decoded the decoded to set
//      */
//     public void setDecoded(boolean decoded) {
//         this.decoded = decoded;
//     }
// 
//     /**
//      * @return the message
//      */
//     public T getMessage() {
//         return message;
//     }
// 
//     /**
//      * @param message the message to set
//      */
//     public void setMessage(T message) {
//         this.message = message;
//     }
// 
//     /**
//      * @return the millisecondsSinceMidnight
//      */
//     public int getMillisecondsSinceMidnight() {
//         return millisecondsSinceMidnight;
//     }
// 
//     /**
//      * @param millisecondsSinceMidnight the millisecondsSinceMidnight to set
//      */
//     public void setMillisecondsSinceMidnight(int millisecondsSinceMidnight) {
//         this.millisecondsSinceMidnight = millisecondsSinceMidnight;
//     }
// 
//     /**
//      * @return the className
//      */
//     public String getClassName() {
//         return className;
//     }
// 
//     /**
//      * @param className the className to set
//      */
//     public void setClassName(String className) {
//         this.className = className;
//     }
// 
//     /**
//      * @return the partition
//      */
//     public String getPartition() {
//         return partition;
//     }
// 
//     /**
//      * @param partition the partition to set
//      */
//     public void setPartition(String partition) {
//         this.partition = partition;
//     }
// 
//     /**
//      * @return the encrypted
//      */
//     public boolean isEncrypted() {
//         return encrypted;
//     }
// 
//     /**
//      * @param encrypted the encrypted to set
//      */
//     public void setEncrypted(boolean encrypted) {
//         this.encrypted = encrypted;
//     }
// 
//     /**
//      * @return the key
//      */
//     public byte[] getKey() {
//         return key;
//     }
// 
//     /**
//      * @param key the key to set
//      */
//     public void setKey(byte[] key) {
//         this.key = key;
//     }
// }


import io.bigio.core.Envelope;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
import org.junit.AfterClass;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import org.junit.BeforeClass;
import org.junit.Test;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package io.bigio;


/**
 *
 * @author atrimble
 */
public class InterceptorTest {
    
    private static BigIO speaker;

    private final BlockingQueue<MyMessage> queue = new ArrayBlockingQueue<>(1);
    private final MyMessageListener listener = new MyMessageListener();
    private final TestInterceptor interceptor = new TestInterceptor();

    @BeforeClass
    public static void init() {
        speaker = BigIO.bootstrap();
    }

    @AfterClass
    public static void shutdown() {
        speaker.shutdown();
    }

    @Test
    public void testIntercept() throws Exception {
// Path: core/src/main/java/io/bigio/core/Envelope.java
// public class Envelope<T> {
//     
//     private String senderKey;
//     private int executeTime;
//     private int millisecondsSinceMidnight;
//     private String topic;
//     private String partition;
//     private String className;
//     private byte[] payload;
// 
//     private byte[] key;
//     private boolean decoded = false;
//     private boolean encrypted = false;
//     private T message;
// 
//     /**
//      * @return the senderKey
//      */
//     public String getSenderKey() {
//         return senderKey;
//     }
// 
//     /**
//      * @param senderKey the senderKey to set
//      */
//     public void setSenderKey(String senderKey) {
//         this.senderKey = senderKey;
//     }
// 
//     /**
//      * @return the executeTime
//      */
//     public int getExecuteTime() {
//         return executeTime;
//     }
// 
//     /**
//      * @param executeTime the executeTime to set
//      */
//     public void setExecuteTime(int executeTime) {
//         this.executeTime = executeTime;
//     }
// 
//     /**
//      * @return the topic
//      */
//     public String getTopic() {
//         return topic;
//     }
// 
//     /**
//      * @param topic the topic to set
//      */
//     public void setTopic(String topic) {
//         this.topic = topic;
//     }
// 
//     /**
//      * @return the payload
//      */
//     public byte[] getPayload() {
//         return payload;
//     }
// 
//     /**
//      * @param payload the payload to set
//      */
//     public void setPayload(byte[] payload) {
//         this.payload = payload;
//     }
// 
//     /**
//      * @return the decoded
//      */
//     public boolean isDecoded() {
//         return decoded;
//     }
// 
//     /**
//      * @param decoded the decoded to set
//      */
//     public void setDecoded(boolean decoded) {
//         this.decoded = decoded;
//     }
// 
//     /**
//      * @return the message
//      */
//     public T getMessage() {
//         return message;
//     }
// 
//     /**
//      * @param message the message to set
//      */
//     public void setMessage(T message) {
//         this.message = message;
//     }
// 
//     /**
//      * @return the millisecondsSinceMidnight
//      */
//     public int getMillisecondsSinceMidnight() {
//         return millisecondsSinceMidnight;
//     }
// 
//     /**
//      * @param millisecondsSinceMidnight the millisecondsSinceMidnight to set
//      */
//     public void setMillisecondsSinceMidnight(int millisecondsSinceMidnight) {
//         this.millisecondsSinceMidnight = millisecondsSinceMidnight;
//     }
// 
//     /**
//      * @return the className
//      */
//     public String getClassName() {
//         return className;
//     }
// 
//     /**
//      * @param className the className to set
//      */
//     public void setClassName(String className) {
//         this.className = className;
//     }
// 
//     /**
//      * @return the partition
//      */
//     public String getPartition() {
//         return partition;
//     }
// 
//     /**
//      * @param partition the partition to set
//      */
//     public void setPartition(String partition) {
//         this.partition = partition;
//     }
// 
//     /**
//      * @return the encrypted
//      */
//     public boolean isEncrypted() {
//         return encrypted;
//     }
// 
//     /**
//      * @param encrypted the encrypted to set
//      */
//     public void setEncrypted(boolean encrypted) {
//         this.encrypted = encrypted;
//     }
// 
//     /**
//      * @return the key
//      */
//     public byte[] getKey() {
//         return key;
//     }
// 
//     /**
//      * @param key the key to set
//      */
//     public void setKey(byte[] key) {
//         this.key = key;
//     }
// }


// Path: core/src/test/java/io/bigio/InterceptorTest.java
import io.bigio.core.Envelope;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
import org.junit.AfterClass;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import org.junit.BeforeClass;
import org.junit.Test;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package io.bigio;


/**
 *
 * @author atrimble
 */
public class InterceptorTest {
    
    private static BigIO speaker;

    private final BlockingQueue<MyMessage> queue = new ArrayBlockingQueue<>(1);
    private final MyMessageListener listener = new MyMessageListener();
    private final TestInterceptor interceptor = new TestInterceptor();

    @BeforeClass
    public static void init() {
        speaker = BigIO.bootstrap();
    }

    @AfterClass
    public static void shutdown() {
        speaker.shutdown();
    }

    @Test
    public void testIntercept() throws Exception {
        speaker.addInterceptor("InterceptTopic", interceptor);