Merge pull request #668 from keith-turner/append-byte

added method to append byte to BytesBuilder
diff --git a/modules/api/src/main/java/io/fluo/api/data/BytesBuilder.java b/modules/api/src/main/java/io/fluo/api/data/BytesBuilder.java
index 33ac267..8c1dade 100644
--- a/modules/api/src/main/java/io/fluo/api/data/BytesBuilder.java
+++ b/modules/api/src/main/java/io/fluo/api/data/BytesBuilder.java
@@ -74,6 +74,19 @@
   }
 
   /**
+   * Append a single byte.
+   *
+   * @param b take the lower 8 bits and appends it.
+   * @return self
+   */
+  public BytesBuilder append(int b) {
+    ensureCapacity(len + 1);
+    ba[len] = (byte) b;
+    len += 1;
+    return this;
+  }
+
+  /**
    * Sets the point at which appending will start. This method can shrink or grow the ByteBuilder
    * from its current state. If it grows it will zero pad.
    */
diff --git a/modules/core/src/test/java/io/fluo/core/data/BytesBuilderTest.java b/modules/core/src/test/java/io/fluo/core/data/BytesBuilderTest.java
index 432995a..f7a3819 100644
--- a/modules/core/src/test/java/io/fluo/core/data/BytesBuilderTest.java
+++ b/modules/core/src/test/java/io/fluo/core/data/BytesBuilderTest.java
@@ -56,6 +56,20 @@
   }
 
   @Test
+  public void testSingleByte() {
+    BytesBuilder bb = Bytes.newBuilder();
+
+    bb.append('c');
+    bb.append(0);
+    bb.append(127);
+    bb.append(128);
+    bb.append(255);
+
+    Bytes bytes = bb.toBytes();
+    Assert.assertEquals(Bytes.of(new byte[] {'c', 0, 127, (byte) 128, (byte) 0xff}), bytes);
+  }
+
+  @Test
   public void testIncreaseCapacity() {
 
     // test appending 3 chars at a time