diff --git a/lib/java/src/org/apache/thrift/TDeserializer.java b/lib/java/src/org/apache/thrift/TDeserializer.java
index 0797e7a..3c43a45 100644
--- a/lib/java/src/org/apache/thrift/TDeserializer.java
+++ b/lib/java/src/org/apache/thrift/TDeserializer.java
@@ -52,7 +52,7 @@
    * @param protocolFactory Factory to create a protocol
    */
   public TDeserializer(TProtocolFactory protocolFactory) {
-    trans_ = new TMemoryInputTransport(null);
+    trans_ = new TMemoryInputTransport();
     protocol_ = protocolFactory.getProtocol(trans_);
   }
 
diff --git a/lib/java/src/org/apache/thrift/transport/TFramedTransport.java b/lib/java/src/org/apache/thrift/transport/TFramedTransport.java
index 74e2c97..1387ac1 100644
--- a/lib/java/src/org/apache/thrift/transport/TFramedTransport.java
+++ b/lib/java/src/org/apache/thrift/transport/TFramedTransport.java
@@ -85,18 +85,22 @@
     return readBuffer_.read(buf, off, len);
   }
 
+  @Override
   public byte[] getBuffer() {
     return readBuffer_.getBuffer();
   }
 
+  @Override
   public int getBufferPosition() {
     return readBuffer_.getBufferPosition();
   }
 
+  @Override
   public int getBytesRemainingInBuffer() {
     return readBuffer_.getBytesRemainingInBuffer();
   }
 
+  @Override
   public void consumeBuffer(int len) {
     readBuffer_.consumeBuffer(len);
   }
diff --git a/lib/java/src/org/apache/thrift/transport/TMemoryInputTransport.java b/lib/java/src/org/apache/thrift/transport/TMemoryInputTransport.java
index 845c835..0a0998d 100644
--- a/lib/java/src/org/apache/thrift/transport/TMemoryInputTransport.java
+++ b/lib/java/src/org/apache/thrift/transport/TMemoryInputTransport.java
@@ -1,17 +1,30 @@
 package org.apache.thrift.transport;
 
-public class TMemoryInputTransport extends TTransport {
+public final class TMemoryInputTransport extends TTransport {
 
   private byte[] buf_;
   private int pos_;
+  private int endPos_;
+
+  public TMemoryInputTransport() {
+  }
 
   public TMemoryInputTransport(byte[] buf) {
     reset(buf);
   }
 
+  public TMemoryInputTransport(byte[] buf, int offset, int length) {
+    reset(buf, offset, length);
+  }
+
   public void reset(byte[] buf) {
+    reset(buf, 0, buf.length);
+  }
+
+  public void reset(byte[] buf, int offset, int length) {
     buf_ = buf;
-    pos_ = 0;
+    pos_ = offset;
+    endPos_ = offset + length;
   }
 
   @Override
@@ -51,7 +64,7 @@
   }
 
   public int getBytesRemainingInBuffer() {
-    return buf_.length - pos_;
+    return endPos_ - pos_;
   }
 
   public void consumeBuffer(int len) {
diff --git a/lib/java/test/org/apache/thrift/transport/TestTMemoryInputTransport.java b/lib/java/test/org/apache/thrift/transport/TestTMemoryInputTransport.java
index 2cfbac6..0b1702e 100644
--- a/lib/java/test/org/apache/thrift/transport/TestTMemoryInputTransport.java
+++ b/lib/java/test/org/apache/thrift/transport/TestTMemoryInputTransport.java
@@ -42,4 +42,26 @@
     assertEquals(new_buf, trans.getBuffer());
     assertEquals(3, trans.getBytesRemainingInBuffer());
   }
+
+  public void testWithOffsetAndLength() throws Exception {
+    byte[] input_buf = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+    TMemoryInputTransport trans = new TMemoryInputTransport(input_buf, 1, 3);
+    assertEquals(1, trans.getBufferPosition());
+    assertEquals(3, trans.getBytesRemainingInBuffer());
+    byte[] readBuffer = new byte[3];
+    trans.readAll(readBuffer, 0, 3);
+    assertTrue(Arrays.equals(new byte[]{2, 3, 4}, readBuffer));
+
+    try {
+      assertEquals(0, trans.readAll(readBuffer, 0, 3));
+      fail("should have thrown an exception");
+    } catch (Exception e) {
+      // yay
+    }
+
+    trans.reset(input_buf, 3, 4);
+    readBuffer = new byte[4];
+    trans.readAll(readBuffer, 0, 4);
+    assertTrue(Arrays.equals(new byte[]{4, 5, 6, 7}, readBuffer));
+  }
 }
