diff --git a/lib/java/src/protocol/TBinaryProtocol.java b/lib/java/src/protocol/TBinaryProtocol.java
index b9167d2..750dce1 100644
--- a/lib/java/src/protocol/TBinaryProtocol.java
+++ b/lib/java/src/protocol/TBinaryProtocol.java
@@ -27,7 +27,7 @@
 
   protected int readLength_;
   protected boolean checkReadLength_ = false;
-  
+
   /**
    * Factory
    */
@@ -321,7 +321,7 @@
     checkReadLength(len);
     return trans_.readAll(buf, off, len);
   }
-  
+
   public void setReadLength(int readLength) {
     readLength_ = readLength;
     checkReadLength_ = true;
@@ -335,5 +335,5 @@
       }
     }
   }
-  
+
 }
diff --git a/lib/java/src/protocol/TList.java b/lib/java/src/protocol/TList.java
index d1c7642..3fe8599 100644
--- a/lib/java/src/protocol/TList.java
+++ b/lib/java/src/protocol/TList.java
@@ -13,7 +13,7 @@
  */
 public class TList {
   public TList() {}
-  
+
   public TList(byte t, int s) {
     elemType = t;
     size = s;
diff --git a/lib/java/src/protocol/TMap.java b/lib/java/src/protocol/TMap.java
index 0a0e4df..9b7126e 100644
--- a/lib/java/src/protocol/TMap.java
+++ b/lib/java/src/protocol/TMap.java
@@ -13,7 +13,7 @@
  */
 public class TMap {
   public TMap() {}
-  
+
   public TMap(byte k, byte v, int s) {
     keyType = k;
     valueType = v;
diff --git a/lib/java/src/protocol/TProtocol.java b/lib/java/src/protocol/TProtocol.java
index 08a7ef3..3e7e7f0 100644
--- a/lib/java/src/protocol/TProtocol.java
+++ b/lib/java/src/protocol/TProtocol.java
@@ -23,7 +23,7 @@
 
   /**
    * Transport
-   */ 
+   */
   protected TTransport trans_;
 
   /**
@@ -32,7 +32,7 @@
   protected TProtocol(TTransport trans) {
     trans_ = trans;
   }
-  
+
   /**
    * Transport accessor
    */
@@ -47,7 +47,7 @@
   public abstract void writeMessageBegin(TMessage message) throws TException;
 
   public abstract void writeMessageEnd() throws TException;
-  
+
   public abstract void writeStructBegin(TStruct struct) throws TException;
 
   public abstract void writeStructEnd() throws TException;
@@ -99,9 +99,9 @@
   public abstract void readStructEnd() throws TException;
 
   public abstract TField readFieldBegin() throws TException;
-  
+
   public abstract void readFieldEnd() throws TException;
- 
+
   public abstract TMap readMapBegin() throws TException;
 
   public abstract void readMapEnd() throws TException;
@@ -121,7 +121,7 @@
   public abstract short readI16() throws TException;
 
   public abstract int readI32() throws TException;
- 
+
   public abstract long readI64() throws TException;
 
   public abstract double readDouble() throws TException;
diff --git a/lib/java/src/protocol/TProtocolUtil.java b/lib/java/src/protocol/TProtocolUtil.java
index ad333bc..0b85d38 100644
--- a/lib/java/src/protocol/TProtocolUtil.java
+++ b/lib/java/src/protocol/TProtocolUtil.java
@@ -80,7 +80,7 @@
         break;
       }
     case TType.SET:
-      {        
+      {
         TSet set = prot.readSetBegin();
         for (int i = 0; i < set.size; i++) {
           skip(prot, set.elemType);
