You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by ar...@apache.org on 2019/02/28 21:02:41 UTC

[storm] branch 1.x-branch updated: Upgrade thrift to 0.12.0

This is an automated email from the ASF dual-hosted git repository.

arunm pushed a commit to branch 1.x-branch
in repository https://gitbox.apache.org/repos/asf/storm.git


The following commit(s) were added to refs/heads/1.x-branch by this push:
     new d08184d  Upgrade thrift to 0.12.0
d08184d is described below

commit d08184d2b33d6639f53e06c133df4be45e5b777e
Author: Arun Mahadevan <ar...@apache.org>
AuthorDate: Sat Feb 23 09:49:03 2019 -0800

    Upgrade thrift to 0.12.0
---
 pom.xml                                            |     2 +-
 storm-core/src/genthrift.sh                        |     2 +-
 .../org/apache/storm/generated/AccessControl.java  |   158 +-
 .../apache/storm/generated/AccessControlType.java  |     8 +-
 .../storm/generated/AlreadyAliveException.java     |   129 +-
 .../jvm/org/apache/storm/generated/Assignment.java |   345 +-
 .../storm/generated/AuthorizationException.java    |   129 +-
 .../storm/generated/BeginDownloadResult.java       |   163 +-
 .../src/jvm/org/apache/storm/generated/Bolt.java   |   135 +-
 .../apache/storm/generated/BoltAggregateStats.java |   179 +-
 .../jvm/org/apache/storm/generated/BoltStats.java  |   469 +-
 .../org/apache/storm/generated/ClusterSummary.java |   227 +-
 .../storm/generated/ClusterWorkerHeartbeat.java    |   199 +-
 .../storm/generated/CommonAggregateStats.java      |   265 +-
 .../storm/generated/ComponentAggregateStats.java   |   167 +-
 .../apache/storm/generated/ComponentCommon.java    |   236 +-
 .../apache/storm/generated/ComponentObject.java    |   133 +-
 .../apache/storm/generated/ComponentPageInfo.java  |   546 +-
 .../org/apache/storm/generated/ComponentType.java  |     8 +-
 .../org/apache/storm/generated/Credentials.java    |   149 +-
 .../storm/generated/DRPCExecutionException.java    |   129 +-
 .../org/apache/storm/generated/DRPCRequest.java    |   147 +-
 .../org/apache/storm/generated/DebugOptions.java   |   145 +-
 .../org/apache/storm/generated/DistributedRPC.java |   389 +-
 .../storm/generated/DistributedRPCInvocations.java |   888 +-
 .../jvm/org/apache/storm/generated/ErrorInfo.java  |   181 +-
 .../storm/generated/ExecutorAggregateStats.java    |   139 +-
 .../org/apache/storm/generated/ExecutorInfo.java   |   137 +-
 .../storm/generated/ExecutorSpecificStats.java     |   101 +-
 .../org/apache/storm/generated/ExecutorStats.java  |   264 +-
 .../apache/storm/generated/ExecutorSummary.java    |   209 +-
 .../org/apache/storm/generated/GetInfoOptions.java |   125 +-
 .../org/apache/storm/generated/GlobalStreamId.java |   147 +-
 .../jvm/org/apache/storm/generated/Grouping.java   |   203 +-
 .../storm/generated/HBAuthorizationException.java  |   129 +-
 .../storm/generated/HBExecutionException.java      |   129 +-
 .../jvm/org/apache/storm/generated/HBMessage.java  |   156 +-
 .../org/apache/storm/generated/HBMessageData.java  |   183 +-
 .../jvm/org/apache/storm/generated/HBNodes.java    |   152 +-
 .../jvm/org/apache/storm/generated/HBPulse.java    |   156 +-
 .../jvm/org/apache/storm/generated/HBRecords.java  |   144 +-
 .../storm/generated/HBServerMessageType.java       |     8 +-
 .../storm/generated/InvalidTopologyException.java  |   129 +-
 .../jvm/org/apache/storm/generated/JavaObject.java |   160 +-
 .../org/apache/storm/generated/JavaObjectArg.java  |   215 +-
 .../storm/generated/KeyAlreadyExistsException.java |   129 +-
 .../storm/generated/KeyNotFoundException.java      |   129 +-
 .../org/apache/storm/generated/KillOptions.java    |   128 +-
 .../apache/storm/generated/LSApprovedWorkers.java  |   145 +-
 .../storm/generated/LSSupervisorAssignments.java   |   149 +-
 .../org/apache/storm/generated/LSSupervisorId.java |   127 +-
 .../org/apache/storm/generated/LSTopoHistory.java  |   224 +-
 .../apache/storm/generated/LSTopoHistoryList.java  |   140 +-
 .../apache/storm/generated/LSWorkerHeartbeat.java  |   190 +-
 .../apache/storm/generated/ListBlobsResult.java    |   168 +-
 .../apache/storm/generated/LocalAssignment.java    |   196 +-
 .../org/apache/storm/generated/LocalStateData.java |   155 +-
 .../jvm/org/apache/storm/generated/LogConfig.java  |   157 +-
 .../jvm/org/apache/storm/generated/LogLevel.java   |   195 +-
 .../org/apache/storm/generated/LogLevelAction.java |     8 +-
 .../src/jvm/org/apache/storm/generated/Nimbus.java | 13565 ++++++-----
 .../org/apache/storm/generated/NimbusSummary.java  |   192 +-
 .../jvm/org/apache/storm/generated/NodeInfo.java   |   158 +-
 .../apache/storm/generated/NotAliveException.java  |   129 +-
 .../jvm/org/apache/storm/generated/NullStruct.java |   107 +-
 .../apache/storm/generated/NumErrorsChoice.java    |     8 +-
 .../org/apache/storm/generated/ProfileAction.java  |     8 +-
 .../org/apache/storm/generated/ProfileRequest.java |   156 +-
 .../apache/storm/generated/ReadableBlobMeta.java   |   136 +-
 .../apache/storm/generated/RebalanceOptions.java   |   181 +-
 .../apache/storm/generated/SettableBlobMeta.java   |   161 +-
 .../org/apache/storm/generated/ShellComponent.java |   151 +-
 .../storm/generated/SpecificAggregateStats.java    |   101 +-
 .../storm/generated/SpoutAggregateStats.java       |   128 +-
 .../jvm/org/apache/storm/generated/SpoutSpec.java  |   135 +-
 .../jvm/org/apache/storm/generated/SpoutStats.java |   299 +-
 .../org/apache/storm/generated/StateSpoutSpec.java |   135 +-
 .../jvm/org/apache/storm/generated/StormBase.java  |   323 +-
 .../org/apache/storm/generated/StormTopology.java  |   408 +-
 .../jvm/org/apache/storm/generated/StreamInfo.java |   163 +-
 .../org/apache/storm/generated/SubmitOptions.java  |   139 +-
 .../org/apache/storm/generated/SupervisorInfo.java |   333 +-
 .../apache/storm/generated/SupervisorPageInfo.java |   173 +-
 .../apache/storm/generated/SupervisorSummary.java  |   284 +-
 .../storm/generated/ThriftSerializedObject.java    |   152 +-
 .../storm/generated/TopologyActionOptions.java     |    97 +-
 .../storm/generated/TopologyHistoryInfo.java       |   152 +-
 .../org/apache/storm/generated/TopologyInfo.java   |   514 +-
 .../storm/generated/TopologyInitialStatus.java     |     8 +-
 .../apache/storm/generated/TopologyPageInfo.java   |   605 +-
 .../org/apache/storm/generated/TopologyStats.java  |   303 +-
 .../org/apache/storm/generated/TopologyStatus.java |     8 +-
 .../apache/storm/generated/TopologySummary.java    |   420 +-
 .../apache/storm/generated/WorkerResources.java    |   162 +-
 .../org/apache/storm/generated/WorkerSummary.java  |   421 +-
 storm-core/src/py/storm/DistributedRPC-remote      |   125 +-
 storm-core/src/py/storm/DistributedRPC.py          |   535 +-
 .../src/py/storm/DistributedRPCInvocations-remote  |   145 +-
 .../src/py/storm/DistributedRPCInvocations.py      |  1250 +-
 storm-core/src/py/storm/Nimbus-remote              |   565 +-
 storm-core/src/py/storm/Nimbus.py                  | 19354 ++++++++--------
 storm-core/src/py/storm/constants.py               |     9 +-
 storm-core/src/py/storm/ttypes.py                  | 22905 +++++++++----------
 103 files changed, 37358 insertions(+), 38599 deletions(-)

diff --git a/pom.xml b/pom.xml
index 1f680ff..30e592a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -262,7 +262,7 @@
         <kryo.version>3.0.3</kryo.version>
         <servlet.version>2.5</servlet.version>
         <joda-time.version>2.3</joda-time.version>
-        <thrift.version>0.9.3</thrift.version>
+        <thrift.version>0.12.0</thrift.version>
         <junit.version>4.11</junit.version>
         <awaitility.version>3.1.0</awaitility.version>
         <metrics-clojure.version>2.5.1</metrics-clojure.version>
diff --git a/storm-core/src/genthrift.sh b/storm-core/src/genthrift.sh
index eeec78a..33152b6 100644
--- a/storm-core/src/genthrift.sh
+++ b/storm-core/src/genthrift.sh
@@ -17,7 +17,7 @@
 
 rm -rf gen-javabean gen-py py
 rm -rf jvm/org/apache/storm/generated
-thrift --gen java:beans,hashcode,nocamel,generated_annotations=undated --gen py:utf8strings storm.thrift
+thrift --gen java:beans,nocamel,generated_annotations=undated --gen py:utf8strings storm.thrift
 for file in gen-javabean/org/apache/storm/generated/* ; do
   cat java_license_header.txt ${file} > ${file}.tmp
   mv -f ${file}.tmp ${file}
diff --git a/storm-core/src/jvm/org/apache/storm/generated/AccessControl.java b/storm-core/src/jvm/org/apache/storm/generated/AccessControl.java
index c1c072a..054df17 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/AccessControl.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/AccessControl.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class AccessControl implements org.apache.thrift.TBase<AccessControl, AccessControl._Fields>, java.io.Serializable, Cloneable, Comparable<AccessControl> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AccessControl");
 
@@ -59,14 +32,11 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
   private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField ACCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("access", org.apache.thrift.protocol.TType.I32, (short)3);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new AccessControlStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new AccessControlTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new AccessControlStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new AccessControlTupleSchemeFactory();
 
-  private AccessControlType type; // required
-  private String name; // optional
+  private @org.apache.thrift.annotation.Nullable AccessControlType type; // required
+  private @org.apache.thrift.annotation.Nullable java.lang.String name; // optional
   private int access; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -79,10 +49,10 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
     NAME((short)2, "name"),
     ACCESS((short)3, "access");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -90,6 +60,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // TYPE
@@ -109,21 +80,22 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -132,7 +104,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
@@ -141,16 +113,16 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
   private static final int __ACCESS_ISSET_ID = 0;
   private byte __isset_bitfield = 0;
   private static final _Fields optionals[] = {_Fields.NAME};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, AccessControlType.class)));
     tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.ACCESS, new org.apache.thrift.meta_data.FieldMetaData("access", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(AccessControl.class, metaDataMap);
   }
 
@@ -197,6 +169,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
    * 
    * @see AccessControlType
    */
+  @org.apache.thrift.annotation.Nullable
   public AccessControlType get_type() {
     return this.type;
   }
@@ -205,7 +178,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
    * 
    * @see AccessControlType
    */
-  public void set_type(AccessControlType type) {
+  public void set_type(@org.apache.thrift.annotation.Nullable AccessControlType type) {
     this.type = type;
   }
 
@@ -224,11 +197,12 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
     }
   }
 
-  public String get_name() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_name() {
     return this.name;
   }
 
-  public void set_name(String name) {
+  public void set_name(@org.apache.thrift.annotation.Nullable java.lang.String name) {
     this.name = name;
   }
 
@@ -257,19 +231,19 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
   }
 
   public void unset_access() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ACCESS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ACCESS_ISSET_ID);
   }
 
   /** Returns true if field access is set (has been assigned a value) and false otherwise */
   public boolean is_set_access() {
-    return EncodingUtils.testBit(__isset_bitfield, __ACCESS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ACCESS_ISSET_ID);
   }
 
   public void set_access_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ACCESS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ACCESS_ISSET_ID, value);
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case TYPE:
       if (value == null) {
@@ -283,7 +257,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
       if (value == null) {
         unset_name();
       } else {
-        set_name((String)value);
+        set_name((java.lang.String)value);
       }
       break;
 
@@ -291,14 +265,15 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
       if (value == null) {
         unset_access();
       } else {
-        set_access((Integer)value);
+        set_access((java.lang.Integer)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case TYPE:
       return get_type();
@@ -310,13 +285,13 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
       return get_access();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -327,11 +302,11 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
     case ACCESS:
       return is_set_access();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof AccessControl)
@@ -342,6 +317,8 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
   public boolean equals(AccessControl that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_type = true && this.is_set_type();
     boolean that_present_type = true && that.is_set_type();
@@ -375,24 +352,19 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_type = true && (is_set_type());
-    list.add(present_type);
-    if (present_type)
-      list.add(type.getValue());
+    hashCode = hashCode * 8191 + ((is_set_type()) ? 131071 : 524287);
+    if (is_set_type())
+      hashCode = hashCode * 8191 + type.getValue();
 
-    boolean present_name = true && (is_set_name());
-    list.add(present_name);
-    if (present_name)
-      list.add(name);
+    hashCode = hashCode * 8191 + ((is_set_name()) ? 131071 : 524287);
+    if (is_set_name())
+      hashCode = hashCode * 8191 + name.hashCode();
 
-    boolean present_access = true;
-    list.add(present_access);
-    if (present_access)
-      list.add(access);
+    hashCode = hashCode * 8191 + access;
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -403,7 +375,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_type()).compareTo(other.is_set_type());
+    lastComparison = java.lang.Boolean.valueOf(is_set_type()).compareTo(other.is_set_type());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -413,7 +385,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_name()).compareTo(other.is_set_name());
+    lastComparison = java.lang.Boolean.valueOf(is_set_name()).compareTo(other.is_set_name());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -423,7 +395,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_access()).compareTo(other.is_set_access());
+    lastComparison = java.lang.Boolean.valueOf(is_set_access()).compareTo(other.is_set_access());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -436,21 +408,22 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("AccessControl(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("AccessControl(");
     boolean first = true;
 
     sb.append("type:");
@@ -499,7 +472,7 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
       __isset_bitfield = 0;
@@ -509,13 +482,13 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
     }
   }
 
-  private static class AccessControlStandardSchemeFactory implements SchemeFactory {
+  private static class AccessControlStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public AccessControlStandardScheme getScheme() {
       return new AccessControlStandardScheme();
     }
   }
 
-  private static class AccessControlStandardScheme extends StandardScheme<AccessControl> {
+  private static class AccessControlStandardScheme extends org.apache.thrift.scheme.StandardScheme<AccessControl> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, AccessControl struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -585,20 +558,20 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
 
   }
 
-  private static class AccessControlTupleSchemeFactory implements SchemeFactory {
+  private static class AccessControlTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public AccessControlTupleScheme getScheme() {
       return new AccessControlTupleScheme();
     }
   }
 
-  private static class AccessControlTupleScheme extends TupleScheme<AccessControl> {
+  private static class AccessControlTupleScheme extends org.apache.thrift.scheme.TupleScheme<AccessControl> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, AccessControl struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeI32(struct.type.getValue());
       oprot.writeI32(struct.access);
-      BitSet optionals = new BitSet();
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_name()) {
         optionals.set(0);
       }
@@ -610,12 +583,12 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, AccessControl struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.type = org.apache.storm.generated.AccessControlType.findByValue(iprot.readI32());
       struct.set_type_isSet(true);
       struct.access = iprot.readI32();
       struct.set_access_isSet(true);
-      BitSet incoming = iprot.readBitSet(1);
+      java.util.BitSet incoming = iprot.readBitSet(1);
       if (incoming.get(0)) {
         struct.name = iprot.readString();
         struct.set_name_isSet(true);
@@ -623,5 +596,8 @@ public class AccessControl implements org.apache.thrift.TBase<AccessControl, Acc
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/AccessControlType.java b/storm-core/src/jvm/org/apache/storm/generated/AccessControlType.java
index cb75b9b..a257a9d 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/AccessControlType.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/AccessControlType.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -24,10 +24,7 @@
 package org.apache.storm.generated;
 
 
-import java.util.Map;
-import java.util.HashMap;
-import org.apache.thrift.TEnum;
-
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public enum AccessControlType implements org.apache.thrift.TEnum {
   OTHER(1),
   USER(2);
@@ -49,6 +46,7 @@ public enum AccessControlType implements org.apache.thrift.TEnum {
    * Find a the enum type by its integer value, as defined in the Thrift IDL.
    * @return null if the value is not found.
    */
+  @org.apache.thrift.annotation.Nullable
   public static AccessControlType findByValue(int value) { 
     switch (value) {
       case 1:
diff --git a/storm-core/src/jvm/org/apache/storm/generated/AlreadyAliveException.java b/storm-core/src/jvm/org/apache/storm/generated/AlreadyAliveException.java
index 4e635fb..98ad713 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/AlreadyAliveException.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/AlreadyAliveException.java
@@ -16,63 +16,33 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
-public class AlreadyAliveException extends TException implements org.apache.thrift.TBase<AlreadyAliveException, AlreadyAliveException._Fields>, java.io.Serializable, Cloneable, Comparable<AlreadyAliveException> {
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
+public class AlreadyAliveException extends org.apache.thrift.TException implements org.apache.thrift.TBase<AlreadyAliveException, AlreadyAliveException._Fields>, java.io.Serializable, Cloneable, Comparable<AlreadyAliveException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AlreadyAliveException");
 
   private static final org.apache.thrift.protocol.TField MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("msg", org.apache.thrift.protocol.TType.STRING, (short)1);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new AlreadyAliveExceptionStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new AlreadyAliveExceptionTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new AlreadyAliveExceptionStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new AlreadyAliveExceptionTupleSchemeFactory();
 
-  private String msg; // required
+  private @org.apache.thrift.annotation.Nullable java.lang.String msg; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     MSG((short)1, "msg");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -80,6 +50,7 @@ public class AlreadyAliveException extends TException implements org.apache.thri
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // MSG
@@ -95,21 +66,22 @@ public class AlreadyAliveException extends TException implements org.apache.thri
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -118,18 +90,18 @@ public class AlreadyAliveException extends TException implements org.apache.thri
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
   // isset id assignments
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.MSG, new org.apache.thrift.meta_data.FieldMetaData("msg", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(AlreadyAliveException.class, metaDataMap);
   }
 
@@ -137,7 +109,7 @@ public class AlreadyAliveException extends TException implements org.apache.thri
   }
 
   public AlreadyAliveException(
-    String msg)
+    java.lang.String msg)
   {
     this();
     this.msg = msg;
@@ -161,11 +133,12 @@ public class AlreadyAliveException extends TException implements org.apache.thri
     this.msg = null;
   }
 
-  public String get_msg() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_msg() {
     return this.msg;
   }
 
-  public void set_msg(String msg) {
+  public void set_msg(@org.apache.thrift.annotation.Nullable java.lang.String msg) {
     this.msg = msg;
   }
 
@@ -184,43 +157,44 @@ public class AlreadyAliveException extends TException implements org.apache.thri
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case MSG:
       if (value == null) {
         unset_msg();
       } else {
-        set_msg((String)value);
+        set_msg((java.lang.String)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case MSG:
       return get_msg();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
     case MSG:
       return is_set_msg();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof AlreadyAliveException)
@@ -231,6 +205,8 @@ public class AlreadyAliveException extends TException implements org.apache.thri
   public boolean equals(AlreadyAliveException that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_msg = true && this.is_set_msg();
     boolean that_present_msg = true && that.is_set_msg();
@@ -246,14 +222,13 @@ public class AlreadyAliveException extends TException implements org.apache.thri
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_msg = true && (is_set_msg());
-    list.add(present_msg);
-    if (present_msg)
-      list.add(msg);
+    hashCode = hashCode * 8191 + ((is_set_msg()) ? 131071 : 524287);
+    if (is_set_msg())
+      hashCode = hashCode * 8191 + msg.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -264,7 +239,7 @@ public class AlreadyAliveException extends TException implements org.apache.thri
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_msg()).compareTo(other.is_set_msg());
+    lastComparison = java.lang.Boolean.valueOf(is_set_msg()).compareTo(other.is_set_msg());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -277,21 +252,22 @@ public class AlreadyAliveException extends TException implements org.apache.thri
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("AlreadyAliveException(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("AlreadyAliveException(");
     boolean first = true;
 
     sb.append("msg:");
@@ -322,7 +298,7 @@ public class AlreadyAliveException extends TException implements org.apache.thri
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
@@ -330,13 +306,13 @@ public class AlreadyAliveException extends TException implements org.apache.thri
     }
   }
 
-  private static class AlreadyAliveExceptionStandardSchemeFactory implements SchemeFactory {
+  private static class AlreadyAliveExceptionStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public AlreadyAliveExceptionStandardScheme getScheme() {
       return new AlreadyAliveExceptionStandardScheme();
     }
   }
 
-  private static class AlreadyAliveExceptionStandardScheme extends StandardScheme<AlreadyAliveException> {
+  private static class AlreadyAliveExceptionStandardScheme extends org.apache.thrift.scheme.StandardScheme<AlreadyAliveException> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, AlreadyAliveException struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -380,27 +356,30 @@ public class AlreadyAliveException extends TException implements org.apache.thri
 
   }
 
-  private static class AlreadyAliveExceptionTupleSchemeFactory implements SchemeFactory {
+  private static class AlreadyAliveExceptionTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public AlreadyAliveExceptionTupleScheme getScheme() {
       return new AlreadyAliveExceptionTupleScheme();
     }
   }
 
-  private static class AlreadyAliveExceptionTupleScheme extends TupleScheme<AlreadyAliveException> {
+  private static class AlreadyAliveExceptionTupleScheme extends org.apache.thrift.scheme.TupleScheme<AlreadyAliveException> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, AlreadyAliveException struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeString(struct.msg);
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, AlreadyAliveException struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.msg = iprot.readString();
       struct.set_msg_isSet(true);
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/Assignment.java b/storm-core/src/jvm/org/apache/storm/generated/Assignment.java
index 394f934..3c0668e 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/Assignment.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/Assignment.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class Assignment implements org.apache.thrift.TBase<Assignment, Assignment._Fields>, java.io.Serializable, Cloneable, Comparable<Assignment> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Assignment");
 
@@ -62,18 +35,15 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
   private static final org.apache.thrift.protocol.TField WORKER_RESOURCES_FIELD_DESC = new org.apache.thrift.protocol.TField("worker_resources", org.apache.thrift.protocol.TType.MAP, (short)5);
   private static final org.apache.thrift.protocol.TField OWNER_FIELD_DESC = new org.apache.thrift.protocol.TField("owner", org.apache.thrift.protocol.TType.STRING, (short)7);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new AssignmentStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new AssignmentTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new AssignmentStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new AssignmentTupleSchemeFactory();
 
-  private String master_code_dir; // required
-  private Map<String,String> node_host; // optional
-  private Map<List<Long>,NodeInfo> executor_node_port; // optional
-  private Map<List<Long>,Long> executor_start_time_secs; // optional
-  private Map<NodeInfo,WorkerResources> worker_resources; // optional
-  private String owner; // optional
+  private @org.apache.thrift.annotation.Nullable java.lang.String master_code_dir; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.String> node_host; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.util.List<java.lang.Long>,NodeInfo> executor_node_port; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.util.List<java.lang.Long>,java.lang.Long> executor_start_time_secs; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.Map<NodeInfo,WorkerResources> worker_resources; // optional
+  private @org.apache.thrift.annotation.Nullable java.lang.String owner; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -84,10 +54,10 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     WORKER_RESOURCES((short)5, "worker_resources"),
     OWNER((short)7, "owner");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -95,6 +65,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // MASTER_CODE_DIR
@@ -120,21 +91,22 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -143,16 +115,16 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
   // isset id assignments
   private static final _Fields optionals[] = {_Fields.NODE_HOST,_Fields.EXECUTOR_NODE_PORT,_Fields.EXECUTOR_START_TIME_SECS,_Fields.WORKER_RESOURCES,_Fields.OWNER};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.MASTER_CODE_DIR, new org.apache.thrift.meta_data.FieldMetaData("master_code_dir", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.NODE_HOST, new org.apache.thrift.meta_data.FieldMetaData("node_host", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -175,23 +147,23 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, WorkerResources.class))));
     tmpMap.put(_Fields.OWNER, new org.apache.thrift.meta_data.FieldMetaData("owner", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Assignment.class, metaDataMap);
   }
 
   public Assignment() {
-    this.node_host = new HashMap<String,String>();
+    this.node_host = new java.util.HashMap<java.lang.String,java.lang.String>();
 
-    this.executor_node_port = new HashMap<List<Long>,NodeInfo>();
+    this.executor_node_port = new java.util.HashMap<java.util.List<java.lang.Long>,NodeInfo>();
 
-    this.executor_start_time_secs = new HashMap<List<Long>,Long>();
+    this.executor_start_time_secs = new java.util.HashMap<java.util.List<java.lang.Long>,java.lang.Long>();
 
-    this.worker_resources = new HashMap<NodeInfo,WorkerResources>();
+    this.worker_resources = new java.util.HashMap<NodeInfo,WorkerResources>();
 
   }
 
   public Assignment(
-    String master_code_dir)
+    java.lang.String master_code_dir)
   {
     this();
     this.master_code_dir = master_code_dir;
@@ -205,17 +177,17 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       this.master_code_dir = other.master_code_dir;
     }
     if (other.is_set_node_host()) {
-      Map<String,String> __this__node_host = new HashMap<String,String>(other.node_host);
+      java.util.Map<java.lang.String,java.lang.String> __this__node_host = new java.util.HashMap<java.lang.String,java.lang.String>(other.node_host);
       this.node_host = __this__node_host;
     }
     if (other.is_set_executor_node_port()) {
-      Map<List<Long>,NodeInfo> __this__executor_node_port = new HashMap<List<Long>,NodeInfo>(other.executor_node_port.size());
-      for (Map.Entry<List<Long>, NodeInfo> other_element : other.executor_node_port.entrySet()) {
+      java.util.Map<java.util.List<java.lang.Long>,NodeInfo> __this__executor_node_port = new java.util.HashMap<java.util.List<java.lang.Long>,NodeInfo>(other.executor_node_port.size());
+      for (java.util.Map.Entry<java.util.List<java.lang.Long>, NodeInfo> other_element : other.executor_node_port.entrySet()) {
 
-        List<Long> other_element_key = other_element.getKey();
+        java.util.List<java.lang.Long> other_element_key = other_element.getKey();
         NodeInfo other_element_value = other_element.getValue();
 
-        List<Long> __this__executor_node_port_copy_key = new ArrayList<Long>(other_element_key);
+        java.util.List<java.lang.Long> __this__executor_node_port_copy_key = new java.util.ArrayList<java.lang.Long>(other_element_key);
 
         NodeInfo __this__executor_node_port_copy_value = new NodeInfo(other_element_value);
 
@@ -224,23 +196,23 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       this.executor_node_port = __this__executor_node_port;
     }
     if (other.is_set_executor_start_time_secs()) {
-      Map<List<Long>,Long> __this__executor_start_time_secs = new HashMap<List<Long>,Long>(other.executor_start_time_secs.size());
-      for (Map.Entry<List<Long>, Long> other_element : other.executor_start_time_secs.entrySet()) {
+      java.util.Map<java.util.List<java.lang.Long>,java.lang.Long> __this__executor_start_time_secs = new java.util.HashMap<java.util.List<java.lang.Long>,java.lang.Long>(other.executor_start_time_secs.size());
+      for (java.util.Map.Entry<java.util.List<java.lang.Long>, java.lang.Long> other_element : other.executor_start_time_secs.entrySet()) {
 
-        List<Long> other_element_key = other_element.getKey();
-        Long other_element_value = other_element.getValue();
+        java.util.List<java.lang.Long> other_element_key = other_element.getKey();
+        java.lang.Long other_element_value = other_element.getValue();
 
-        List<Long> __this__executor_start_time_secs_copy_key = new ArrayList<Long>(other_element_key);
+        java.util.List<java.lang.Long> __this__executor_start_time_secs_copy_key = new java.util.ArrayList<java.lang.Long>(other_element_key);
 
-        Long __this__executor_start_time_secs_copy_value = other_element_value;
+        java.lang.Long __this__executor_start_time_secs_copy_value = other_element_value;
 
         __this__executor_start_time_secs.put(__this__executor_start_time_secs_copy_key, __this__executor_start_time_secs_copy_value);
       }
       this.executor_start_time_secs = __this__executor_start_time_secs;
     }
     if (other.is_set_worker_resources()) {
-      Map<NodeInfo,WorkerResources> __this__worker_resources = new HashMap<NodeInfo,WorkerResources>(other.worker_resources.size());
-      for (Map.Entry<NodeInfo, WorkerResources> other_element : other.worker_resources.entrySet()) {
+      java.util.Map<NodeInfo,WorkerResources> __this__worker_resources = new java.util.HashMap<NodeInfo,WorkerResources>(other.worker_resources.size());
+      for (java.util.Map.Entry<NodeInfo, WorkerResources> other_element : other.worker_resources.entrySet()) {
 
         NodeInfo other_element_key = other_element.getKey();
         WorkerResources other_element_value = other_element.getValue();
@@ -265,22 +237,23 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
   @Override
   public void clear() {
     this.master_code_dir = null;
-    this.node_host = new HashMap<String,String>();
+    this.node_host = new java.util.HashMap<java.lang.String,java.lang.String>();
 
-    this.executor_node_port = new HashMap<List<Long>,NodeInfo>();
+    this.executor_node_port = new java.util.HashMap<java.util.List<java.lang.Long>,NodeInfo>();
 
-    this.executor_start_time_secs = new HashMap<List<Long>,Long>();
+    this.executor_start_time_secs = new java.util.HashMap<java.util.List<java.lang.Long>,java.lang.Long>();
 
-    this.worker_resources = new HashMap<NodeInfo,WorkerResources>();
+    this.worker_resources = new java.util.HashMap<NodeInfo,WorkerResources>();
 
     this.owner = null;
   }
 
-  public String get_master_code_dir() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_master_code_dir() {
     return this.master_code_dir;
   }
 
-  public void set_master_code_dir(String master_code_dir) {
+  public void set_master_code_dir(@org.apache.thrift.annotation.Nullable java.lang.String master_code_dir) {
     this.master_code_dir = master_code_dir;
   }
 
@@ -303,18 +276,19 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     return (this.node_host == null) ? 0 : this.node_host.size();
   }
 
-  public void put_to_node_host(String key, String val) {
+  public void put_to_node_host(java.lang.String key, java.lang.String val) {
     if (this.node_host == null) {
-      this.node_host = new HashMap<String,String>();
+      this.node_host = new java.util.HashMap<java.lang.String,java.lang.String>();
     }
     this.node_host.put(key, val);
   }
 
-  public Map<String,String> get_node_host() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.lang.String> get_node_host() {
     return this.node_host;
   }
 
-  public void set_node_host(Map<String,String> node_host) {
+  public void set_node_host(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.String> node_host) {
     this.node_host = node_host;
   }
 
@@ -337,18 +311,19 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     return (this.executor_node_port == null) ? 0 : this.executor_node_port.size();
   }
 
-  public void put_to_executor_node_port(List<Long> key, NodeInfo val) {
+  public void put_to_executor_node_port(java.util.List<java.lang.Long> key, NodeInfo val) {
     if (this.executor_node_port == null) {
-      this.executor_node_port = new HashMap<List<Long>,NodeInfo>();
+      this.executor_node_port = new java.util.HashMap<java.util.List<java.lang.Long>,NodeInfo>();
     }
     this.executor_node_port.put(key, val);
   }
 
-  public Map<List<Long>,NodeInfo> get_executor_node_port() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.util.List<java.lang.Long>,NodeInfo> get_executor_node_port() {
     return this.executor_node_port;
   }
 
-  public void set_executor_node_port(Map<List<Long>,NodeInfo> executor_node_port) {
+  public void set_executor_node_port(@org.apache.thrift.annotation.Nullable java.util.Map<java.util.List<java.lang.Long>,NodeInfo> executor_node_port) {
     this.executor_node_port = executor_node_port;
   }
 
@@ -371,18 +346,19 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     return (this.executor_start_time_secs == null) ? 0 : this.executor_start_time_secs.size();
   }
 
-  public void put_to_executor_start_time_secs(List<Long> key, long val) {
+  public void put_to_executor_start_time_secs(java.util.List<java.lang.Long> key, long val) {
     if (this.executor_start_time_secs == null) {
-      this.executor_start_time_secs = new HashMap<List<Long>,Long>();
+      this.executor_start_time_secs = new java.util.HashMap<java.util.List<java.lang.Long>,java.lang.Long>();
     }
     this.executor_start_time_secs.put(key, val);
   }
 
-  public Map<List<Long>,Long> get_executor_start_time_secs() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.util.List<java.lang.Long>,java.lang.Long> get_executor_start_time_secs() {
     return this.executor_start_time_secs;
   }
 
-  public void set_executor_start_time_secs(Map<List<Long>,Long> executor_start_time_secs) {
+  public void set_executor_start_time_secs(@org.apache.thrift.annotation.Nullable java.util.Map<java.util.List<java.lang.Long>,java.lang.Long> executor_start_time_secs) {
     this.executor_start_time_secs = executor_start_time_secs;
   }
 
@@ -407,16 +383,17 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
 
   public void put_to_worker_resources(NodeInfo key, WorkerResources val) {
     if (this.worker_resources == null) {
-      this.worker_resources = new HashMap<NodeInfo,WorkerResources>();
+      this.worker_resources = new java.util.HashMap<NodeInfo,WorkerResources>();
     }
     this.worker_resources.put(key, val);
   }
 
-  public Map<NodeInfo,WorkerResources> get_worker_resources() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<NodeInfo,WorkerResources> get_worker_resources() {
     return this.worker_resources;
   }
 
-  public void set_worker_resources(Map<NodeInfo,WorkerResources> worker_resources) {
+  public void set_worker_resources(@org.apache.thrift.annotation.Nullable java.util.Map<NodeInfo,WorkerResources> worker_resources) {
     this.worker_resources = worker_resources;
   }
 
@@ -435,11 +412,12 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     }
   }
 
-  public String get_owner() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_owner() {
     return this.owner;
   }
 
-  public void set_owner(String owner) {
+  public void set_owner(@org.apache.thrift.annotation.Nullable java.lang.String owner) {
     this.owner = owner;
   }
 
@@ -458,13 +436,13 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case MASTER_CODE_DIR:
       if (value == null) {
         unset_master_code_dir();
       } else {
-        set_master_code_dir((String)value);
+        set_master_code_dir((java.lang.String)value);
       }
       break;
 
@@ -472,7 +450,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (value == null) {
         unset_node_host();
       } else {
-        set_node_host((Map<String,String>)value);
+        set_node_host((java.util.Map<java.lang.String,java.lang.String>)value);
       }
       break;
 
@@ -480,7 +458,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (value == null) {
         unset_executor_node_port();
       } else {
-        set_executor_node_port((Map<List<Long>,NodeInfo>)value);
+        set_executor_node_port((java.util.Map<java.util.List<java.lang.Long>,NodeInfo>)value);
       }
       break;
 
@@ -488,7 +466,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (value == null) {
         unset_executor_start_time_secs();
       } else {
-        set_executor_start_time_secs((Map<List<Long>,Long>)value);
+        set_executor_start_time_secs((java.util.Map<java.util.List<java.lang.Long>,java.lang.Long>)value);
       }
       break;
 
@@ -496,7 +474,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (value == null) {
         unset_worker_resources();
       } else {
-        set_worker_resources((Map<NodeInfo,WorkerResources>)value);
+        set_worker_resources((java.util.Map<NodeInfo,WorkerResources>)value);
       }
       break;
 
@@ -504,14 +482,15 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (value == null) {
         unset_owner();
       } else {
-        set_owner((String)value);
+        set_owner((java.lang.String)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case MASTER_CODE_DIR:
       return get_master_code_dir();
@@ -532,13 +511,13 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       return get_owner();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -555,11 +534,11 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     case OWNER:
       return is_set_owner();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof Assignment)
@@ -570,6 +549,8 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
   public boolean equals(Assignment that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_master_code_dir = true && this.is_set_master_code_dir();
     boolean that_present_master_code_dir = true && that.is_set_master_code_dir();
@@ -630,39 +611,33 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_master_code_dir = true && (is_set_master_code_dir());
-    list.add(present_master_code_dir);
-    if (present_master_code_dir)
-      list.add(master_code_dir);
+    hashCode = hashCode * 8191 + ((is_set_master_code_dir()) ? 131071 : 524287);
+    if (is_set_master_code_dir())
+      hashCode = hashCode * 8191 + master_code_dir.hashCode();
 
-    boolean present_node_host = true && (is_set_node_host());
-    list.add(present_node_host);
-    if (present_node_host)
-      list.add(node_host);
+    hashCode = hashCode * 8191 + ((is_set_node_host()) ? 131071 : 524287);
+    if (is_set_node_host())
+      hashCode = hashCode * 8191 + node_host.hashCode();
 
-    boolean present_executor_node_port = true && (is_set_executor_node_port());
-    list.add(present_executor_node_port);
-    if (present_executor_node_port)
-      list.add(executor_node_port);
+    hashCode = hashCode * 8191 + ((is_set_executor_node_port()) ? 131071 : 524287);
+    if (is_set_executor_node_port())
+      hashCode = hashCode * 8191 + executor_node_port.hashCode();
 
-    boolean present_executor_start_time_secs = true && (is_set_executor_start_time_secs());
-    list.add(present_executor_start_time_secs);
-    if (present_executor_start_time_secs)
-      list.add(executor_start_time_secs);
+    hashCode = hashCode * 8191 + ((is_set_executor_start_time_secs()) ? 131071 : 524287);
+    if (is_set_executor_start_time_secs())
+      hashCode = hashCode * 8191 + executor_start_time_secs.hashCode();
 
-    boolean present_worker_resources = true && (is_set_worker_resources());
-    list.add(present_worker_resources);
-    if (present_worker_resources)
-      list.add(worker_resources);
+    hashCode = hashCode * 8191 + ((is_set_worker_resources()) ? 131071 : 524287);
+    if (is_set_worker_resources())
+      hashCode = hashCode * 8191 + worker_resources.hashCode();
 
-    boolean present_owner = true && (is_set_owner());
-    list.add(present_owner);
-    if (present_owner)
-      list.add(owner);
+    hashCode = hashCode * 8191 + ((is_set_owner()) ? 131071 : 524287);
+    if (is_set_owner())
+      hashCode = hashCode * 8191 + owner.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -673,7 +648,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_master_code_dir()).compareTo(other.is_set_master_code_dir());
+    lastComparison = java.lang.Boolean.valueOf(is_set_master_code_dir()).compareTo(other.is_set_master_code_dir());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -683,7 +658,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_node_host()).compareTo(other.is_set_node_host());
+    lastComparison = java.lang.Boolean.valueOf(is_set_node_host()).compareTo(other.is_set_node_host());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -693,7 +668,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_executor_node_port()).compareTo(other.is_set_executor_node_port());
+    lastComparison = java.lang.Boolean.valueOf(is_set_executor_node_port()).compareTo(other.is_set_executor_node_port());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -703,7 +678,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_executor_start_time_secs()).compareTo(other.is_set_executor_start_time_secs());
+    lastComparison = java.lang.Boolean.valueOf(is_set_executor_start_time_secs()).compareTo(other.is_set_executor_start_time_secs());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -713,7 +688,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_worker_resources()).compareTo(other.is_set_worker_resources());
+    lastComparison = java.lang.Boolean.valueOf(is_set_worker_resources()).compareTo(other.is_set_worker_resources());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -723,7 +698,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_owner()).compareTo(other.is_set_owner());
+    lastComparison = java.lang.Boolean.valueOf(is_set_owner()).compareTo(other.is_set_owner());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -736,21 +711,22 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("Assignment(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("Assignment(");
     boolean first = true;
 
     sb.append("master_code_dir:");
@@ -831,7 +807,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
@@ -839,13 +815,13 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     }
   }
 
-  private static class AssignmentStandardSchemeFactory implements SchemeFactory {
+  private static class AssignmentStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public AssignmentStandardScheme getScheme() {
       return new AssignmentStandardScheme();
     }
   }
 
-  private static class AssignmentStandardScheme extends StandardScheme<Assignment> {
+  private static class AssignmentStandardScheme extends org.apache.thrift.scheme.StandardScheme<Assignment> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, Assignment struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -869,9 +845,9 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map618 = iprot.readMapBegin();
-                struct.node_host = new HashMap<String,String>(2*_map618.size);
-                String _key619;
-                String _val620;
+                struct.node_host = new java.util.HashMap<java.lang.String,java.lang.String>(2*_map618.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key619;
+                @org.apache.thrift.annotation.Nullable java.lang.String _val620;
                 for (int _i621 = 0; _i621 < _map618.size; ++_i621)
                 {
                   _key619 = iprot.readString();
@@ -889,14 +865,14 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map622 = iprot.readMapBegin();
-                struct.executor_node_port = new HashMap<List<Long>,NodeInfo>(2*_map622.size);
-                List<Long> _key623;
-                NodeInfo _val624;
+                struct.executor_node_port = new java.util.HashMap<java.util.List<java.lang.Long>,NodeInfo>(2*_map622.size);
+                @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Long> _key623;
+                @org.apache.thrift.annotation.Nullable NodeInfo _val624;
                 for (int _i625 = 0; _i625 < _map622.size; ++_i625)
                 {
                   {
                     org.apache.thrift.protocol.TList _list626 = iprot.readListBegin();
-                    _key623 = new ArrayList<Long>(_list626.size);
+                    _key623 = new java.util.ArrayList<java.lang.Long>(_list626.size);
                     long _elem627;
                     for (int _i628 = 0; _i628 < _list626.size; ++_i628)
                     {
@@ -920,14 +896,14 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map629 = iprot.readMapBegin();
-                struct.executor_start_time_secs = new HashMap<List<Long>,Long>(2*_map629.size);
-                List<Long> _key630;
+                struct.executor_start_time_secs = new java.util.HashMap<java.util.List<java.lang.Long>,java.lang.Long>(2*_map629.size);
+                @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Long> _key630;
                 long _val631;
                 for (int _i632 = 0; _i632 < _map629.size; ++_i632)
                 {
                   {
                     org.apache.thrift.protocol.TList _list633 = iprot.readListBegin();
-                    _key630 = new ArrayList<Long>(_list633.size);
+                    _key630 = new java.util.ArrayList<java.lang.Long>(_list633.size);
                     long _elem634;
                     for (int _i635 = 0; _i635 < _list633.size; ++_i635)
                     {
@@ -950,9 +926,9 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map636 = iprot.readMapBegin();
-                struct.worker_resources = new HashMap<NodeInfo,WorkerResources>(2*_map636.size);
-                NodeInfo _key637;
-                WorkerResources _val638;
+                struct.worker_resources = new java.util.HashMap<NodeInfo,WorkerResources>(2*_map636.size);
+                @org.apache.thrift.annotation.Nullable NodeInfo _key637;
+                @org.apache.thrift.annotation.Nullable WorkerResources _val638;
                 for (int _i639 = 0; _i639 < _map636.size; ++_i639)
                 {
                   _key637 = new NodeInfo();
@@ -999,7 +975,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
           oprot.writeFieldBegin(NODE_HOST_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.node_host.size()));
-            for (Map.Entry<String, String> _iter640 : struct.node_host.entrySet())
+            for (java.util.Map.Entry<java.lang.String, java.lang.String> _iter640 : struct.node_host.entrySet())
             {
               oprot.writeString(_iter640.getKey());
               oprot.writeString(_iter640.getValue());
@@ -1014,7 +990,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
           oprot.writeFieldBegin(EXECUTOR_NODE_PORT_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.LIST, org.apache.thrift.protocol.TType.STRUCT, struct.executor_node_port.size()));
-            for (Map.Entry<List<Long>, NodeInfo> _iter641 : struct.executor_node_port.entrySet())
+            for (java.util.Map.Entry<java.util.List<java.lang.Long>, NodeInfo> _iter641 : struct.executor_node_port.entrySet())
             {
               {
                 oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, _iter641.getKey().size()));
@@ -1036,7 +1012,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
           oprot.writeFieldBegin(EXECUTOR_START_TIME_SECS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.LIST, org.apache.thrift.protocol.TType.I64, struct.executor_start_time_secs.size()));
-            for (Map.Entry<List<Long>, Long> _iter643 : struct.executor_start_time_secs.entrySet())
+            for (java.util.Map.Entry<java.util.List<java.lang.Long>, java.lang.Long> _iter643 : struct.executor_start_time_secs.entrySet())
             {
               {
                 oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, _iter643.getKey().size()));
@@ -1058,7 +1034,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
           oprot.writeFieldBegin(WORKER_RESOURCES_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.STRUCT, struct.worker_resources.size()));
-            for (Map.Entry<NodeInfo, WorkerResources> _iter645 : struct.worker_resources.entrySet())
+            for (java.util.Map.Entry<NodeInfo, WorkerResources> _iter645 : struct.worker_resources.entrySet())
             {
               _iter645.getKey().write(oprot);
               _iter645.getValue().write(oprot);
@@ -1081,19 +1057,19 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
 
   }
 
-  private static class AssignmentTupleSchemeFactory implements SchemeFactory {
+  private static class AssignmentTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public AssignmentTupleScheme getScheme() {
       return new AssignmentTupleScheme();
     }
   }
 
-  private static class AssignmentTupleScheme extends TupleScheme<Assignment> {
+  private static class AssignmentTupleScheme extends org.apache.thrift.scheme.TupleScheme<Assignment> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, Assignment struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeString(struct.master_code_dir);
-      BitSet optionals = new BitSet();
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_node_host()) {
         optionals.set(0);
       }
@@ -1113,7 +1089,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (struct.is_set_node_host()) {
         {
           oprot.writeI32(struct.node_host.size());
-          for (Map.Entry<String, String> _iter646 : struct.node_host.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.lang.String> _iter646 : struct.node_host.entrySet())
           {
             oprot.writeString(_iter646.getKey());
             oprot.writeString(_iter646.getValue());
@@ -1123,7 +1099,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (struct.is_set_executor_node_port()) {
         {
           oprot.writeI32(struct.executor_node_port.size());
-          for (Map.Entry<List<Long>, NodeInfo> _iter647 : struct.executor_node_port.entrySet())
+          for (java.util.Map.Entry<java.util.List<java.lang.Long>, NodeInfo> _iter647 : struct.executor_node_port.entrySet())
           {
             {
               oprot.writeI32(_iter647.getKey().size());
@@ -1139,7 +1115,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (struct.is_set_executor_start_time_secs()) {
         {
           oprot.writeI32(struct.executor_start_time_secs.size());
-          for (Map.Entry<List<Long>, Long> _iter649 : struct.executor_start_time_secs.entrySet())
+          for (java.util.Map.Entry<java.util.List<java.lang.Long>, java.lang.Long> _iter649 : struct.executor_start_time_secs.entrySet())
           {
             {
               oprot.writeI32(_iter649.getKey().size());
@@ -1155,7 +1131,7 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (struct.is_set_worker_resources()) {
         {
           oprot.writeI32(struct.worker_resources.size());
-          for (Map.Entry<NodeInfo, WorkerResources> _iter651 : struct.worker_resources.entrySet())
+          for (java.util.Map.Entry<NodeInfo, WorkerResources> _iter651 : struct.worker_resources.entrySet())
           {
             _iter651.getKey().write(oprot);
             _iter651.getValue().write(oprot);
@@ -1169,16 +1145,16 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, Assignment struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.master_code_dir = iprot.readString();
       struct.set_master_code_dir_isSet(true);
-      BitSet incoming = iprot.readBitSet(5);
+      java.util.BitSet incoming = iprot.readBitSet(5);
       if (incoming.get(0)) {
         {
           org.apache.thrift.protocol.TMap _map652 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.node_host = new HashMap<String,String>(2*_map652.size);
-          String _key653;
-          String _val654;
+          struct.node_host = new java.util.HashMap<java.lang.String,java.lang.String>(2*_map652.size);
+          @org.apache.thrift.annotation.Nullable java.lang.String _key653;
+          @org.apache.thrift.annotation.Nullable java.lang.String _val654;
           for (int _i655 = 0; _i655 < _map652.size; ++_i655)
           {
             _key653 = iprot.readString();
@@ -1191,14 +1167,14 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (incoming.get(1)) {
         {
           org.apache.thrift.protocol.TMap _map656 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.LIST, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.executor_node_port = new HashMap<List<Long>,NodeInfo>(2*_map656.size);
-          List<Long> _key657;
-          NodeInfo _val658;
+          struct.executor_node_port = new java.util.HashMap<java.util.List<java.lang.Long>,NodeInfo>(2*_map656.size);
+          @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Long> _key657;
+          @org.apache.thrift.annotation.Nullable NodeInfo _val658;
           for (int _i659 = 0; _i659 < _map656.size; ++_i659)
           {
             {
               org.apache.thrift.protocol.TList _list660 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, iprot.readI32());
-              _key657 = new ArrayList<Long>(_list660.size);
+              _key657 = new java.util.ArrayList<java.lang.Long>(_list660.size);
               long _elem661;
               for (int _i662 = 0; _i662 < _list660.size; ++_i662)
               {
@@ -1216,14 +1192,14 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (incoming.get(2)) {
         {
           org.apache.thrift.protocol.TMap _map663 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.LIST, org.apache.thrift.protocol.TType.I64, iprot.readI32());
-          struct.executor_start_time_secs = new HashMap<List<Long>,Long>(2*_map663.size);
-          List<Long> _key664;
+          struct.executor_start_time_secs = new java.util.HashMap<java.util.List<java.lang.Long>,java.lang.Long>(2*_map663.size);
+          @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Long> _key664;
           long _val665;
           for (int _i666 = 0; _i666 < _map663.size; ++_i666)
           {
             {
               org.apache.thrift.protocol.TList _list667 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, iprot.readI32());
-              _key664 = new ArrayList<Long>(_list667.size);
+              _key664 = new java.util.ArrayList<java.lang.Long>(_list667.size);
               long _elem668;
               for (int _i669 = 0; _i669 < _list667.size; ++_i669)
               {
@@ -1240,9 +1216,9 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
       if (incoming.get(3)) {
         {
           org.apache.thrift.protocol.TMap _map670 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.worker_resources = new HashMap<NodeInfo,WorkerResources>(2*_map670.size);
-          NodeInfo _key671;
-          WorkerResources _val672;
+          struct.worker_resources = new java.util.HashMap<NodeInfo,WorkerResources>(2*_map670.size);
+          @org.apache.thrift.annotation.Nullable NodeInfo _key671;
+          @org.apache.thrift.annotation.Nullable WorkerResources _val672;
           for (int _i673 = 0; _i673 < _map670.size; ++_i673)
           {
             _key671 = new NodeInfo();
@@ -1261,5 +1237,8 @@ public class Assignment implements org.apache.thrift.TBase<Assignment, Assignmen
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/AuthorizationException.java b/storm-core/src/jvm/org/apache/storm/generated/AuthorizationException.java
index 7358535..840e431 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/AuthorizationException.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/AuthorizationException.java
@@ -16,63 +16,33 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
-public class AuthorizationException extends TException implements org.apache.thrift.TBase<AuthorizationException, AuthorizationException._Fields>, java.io.Serializable, Cloneable, Comparable<AuthorizationException> {
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
+public class AuthorizationException extends org.apache.thrift.TException implements org.apache.thrift.TBase<AuthorizationException, AuthorizationException._Fields>, java.io.Serializable, Cloneable, Comparable<AuthorizationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthorizationException");
 
   private static final org.apache.thrift.protocol.TField MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("msg", org.apache.thrift.protocol.TType.STRING, (short)1);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new AuthorizationExceptionStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new AuthorizationExceptionTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new AuthorizationExceptionStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new AuthorizationExceptionTupleSchemeFactory();
 
-  private String msg; // required
+  private @org.apache.thrift.annotation.Nullable java.lang.String msg; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     MSG((short)1, "msg");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -80,6 +50,7 @@ public class AuthorizationException extends TException implements org.apache.thr
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // MSG
@@ -95,21 +66,22 @@ public class AuthorizationException extends TException implements org.apache.thr
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -118,18 +90,18 @@ public class AuthorizationException extends TException implements org.apache.thr
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
   // isset id assignments
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.MSG, new org.apache.thrift.meta_data.FieldMetaData("msg", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(AuthorizationException.class, metaDataMap);
   }
 
@@ -137,7 +109,7 @@ public class AuthorizationException extends TException implements org.apache.thr
   }
 
   public AuthorizationException(
-    String msg)
+    java.lang.String msg)
   {
     this();
     this.msg = msg;
@@ -161,11 +133,12 @@ public class AuthorizationException extends TException implements org.apache.thr
     this.msg = null;
   }
 
-  public String get_msg() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_msg() {
     return this.msg;
   }
 
-  public void set_msg(String msg) {
+  public void set_msg(@org.apache.thrift.annotation.Nullable java.lang.String msg) {
     this.msg = msg;
   }
 
@@ -184,43 +157,44 @@ public class AuthorizationException extends TException implements org.apache.thr
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case MSG:
       if (value == null) {
         unset_msg();
       } else {
-        set_msg((String)value);
+        set_msg((java.lang.String)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case MSG:
       return get_msg();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
     case MSG:
       return is_set_msg();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof AuthorizationException)
@@ -231,6 +205,8 @@ public class AuthorizationException extends TException implements org.apache.thr
   public boolean equals(AuthorizationException that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_msg = true && this.is_set_msg();
     boolean that_present_msg = true && that.is_set_msg();
@@ -246,14 +222,13 @@ public class AuthorizationException extends TException implements org.apache.thr
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_msg = true && (is_set_msg());
-    list.add(present_msg);
-    if (present_msg)
-      list.add(msg);
+    hashCode = hashCode * 8191 + ((is_set_msg()) ? 131071 : 524287);
+    if (is_set_msg())
+      hashCode = hashCode * 8191 + msg.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -264,7 +239,7 @@ public class AuthorizationException extends TException implements org.apache.thr
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_msg()).compareTo(other.is_set_msg());
+    lastComparison = java.lang.Boolean.valueOf(is_set_msg()).compareTo(other.is_set_msg());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -277,21 +252,22 @@ public class AuthorizationException extends TException implements org.apache.thr
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("AuthorizationException(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("AuthorizationException(");
     boolean first = true;
 
     sb.append("msg:");
@@ -322,7 +298,7 @@ public class AuthorizationException extends TException implements org.apache.thr
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
@@ -330,13 +306,13 @@ public class AuthorizationException extends TException implements org.apache.thr
     }
   }
 
-  private static class AuthorizationExceptionStandardSchemeFactory implements SchemeFactory {
+  private static class AuthorizationExceptionStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public AuthorizationExceptionStandardScheme getScheme() {
       return new AuthorizationExceptionStandardScheme();
     }
   }
 
-  private static class AuthorizationExceptionStandardScheme extends StandardScheme<AuthorizationException> {
+  private static class AuthorizationExceptionStandardScheme extends org.apache.thrift.scheme.StandardScheme<AuthorizationException> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, AuthorizationException struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -380,27 +356,30 @@ public class AuthorizationException extends TException implements org.apache.thr
 
   }
 
-  private static class AuthorizationExceptionTupleSchemeFactory implements SchemeFactory {
+  private static class AuthorizationExceptionTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public AuthorizationExceptionTupleScheme getScheme() {
       return new AuthorizationExceptionTupleScheme();
     }
   }
 
-  private static class AuthorizationExceptionTupleScheme extends TupleScheme<AuthorizationException> {
+  private static class AuthorizationExceptionTupleScheme extends org.apache.thrift.scheme.TupleScheme<AuthorizationException> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, AuthorizationException struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeString(struct.msg);
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, AuthorizationException struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.msg = iprot.readString();
       struct.set_msg_isSet(true);
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/BeginDownloadResult.java b/storm-core/src/jvm/org/apache/storm/generated/BeginDownloadResult.java
index 925f00b..97920e0 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/BeginDownloadResult.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/BeginDownloadResult.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloadResult, BeginDownloadResult._Fields>, java.io.Serializable, Cloneable, Comparable<BeginDownloadResult> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("BeginDownloadResult");
 
@@ -59,14 +32,11 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
   private static final org.apache.thrift.protocol.TField SESSION_FIELD_DESC = new org.apache.thrift.protocol.TField("session", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField DATA_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("data_size", org.apache.thrift.protocol.TType.I64, (short)3);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new BeginDownloadResultStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new BeginDownloadResultTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new BeginDownloadResultStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new BeginDownloadResultTupleSchemeFactory();
 
   private long version; // required
-  private String session; // required
+  private @org.apache.thrift.annotation.Nullable java.lang.String session; // required
   private long data_size; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -75,10 +45,10 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
     SESSION((short)2, "session"),
     DATA_SIZE((short)3, "data_size");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -86,6 +56,7 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // VERSION
@@ -105,21 +76,22 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -128,7 +100,7 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
@@ -138,16 +110,16 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
   private static final int __DATA_SIZE_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
   private static final _Fields optionals[] = {_Fields.DATA_SIZE};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.VERSION, new org.apache.thrift.meta_data.FieldMetaData("version", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.SESSION, new org.apache.thrift.meta_data.FieldMetaData("session", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.DATA_SIZE, new org.apache.thrift.meta_data.FieldMetaData("data_size", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(BeginDownloadResult.class, metaDataMap);
   }
 
@@ -156,7 +128,7 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
 
   public BeginDownloadResult(
     long version,
-    String session)
+    java.lang.String session)
   {
     this();
     this.version = version;
@@ -199,23 +171,24 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
   }
 
   public void unset_version() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __VERSION_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __VERSION_ISSET_ID);
   }
 
   /** Returns true if field version is set (has been assigned a value) and false otherwise */
   public boolean is_set_version() {
-    return EncodingUtils.testBit(__isset_bitfield, __VERSION_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __VERSION_ISSET_ID);
   }
 
   public void set_version_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __VERSION_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __VERSION_ISSET_ID, value);
   }
 
-  public String get_session() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_session() {
     return this.session;
   }
 
-  public void set_session(String session) {
+  public void set_session(@org.apache.thrift.annotation.Nullable java.lang.String session) {
     this.session = session;
   }
 
@@ -244,25 +217,25 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
   }
 
   public void unset_data_size() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DATA_SIZE_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __DATA_SIZE_ISSET_ID);
   }
 
   /** Returns true if field data_size is set (has been assigned a value) and false otherwise */
   public boolean is_set_data_size() {
-    return EncodingUtils.testBit(__isset_bitfield, __DATA_SIZE_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __DATA_SIZE_ISSET_ID);
   }
 
   public void set_data_size_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DATA_SIZE_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __DATA_SIZE_ISSET_ID, value);
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case VERSION:
       if (value == null) {
         unset_version();
       } else {
-        set_version((Long)value);
+        set_version((java.lang.Long)value);
       }
       break;
 
@@ -270,7 +243,7 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
       if (value == null) {
         unset_session();
       } else {
-        set_session((String)value);
+        set_session((java.lang.String)value);
       }
       break;
 
@@ -278,14 +251,15 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
       if (value == null) {
         unset_data_size();
       } else {
-        set_data_size((Long)value);
+        set_data_size((java.lang.Long)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case VERSION:
       return get_version();
@@ -297,13 +271,13 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
       return get_data_size();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -314,11 +288,11 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
     case DATA_SIZE:
       return is_set_data_size();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof BeginDownloadResult)
@@ -329,6 +303,8 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
   public boolean equals(BeginDownloadResult that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_version = true;
     boolean that_present_version = true;
@@ -362,24 +338,19 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_version = true;
-    list.add(present_version);
-    if (present_version)
-      list.add(version);
+    hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(version);
 
-    boolean present_session = true && (is_set_session());
-    list.add(present_session);
-    if (present_session)
-      list.add(session);
+    hashCode = hashCode * 8191 + ((is_set_session()) ? 131071 : 524287);
+    if (is_set_session())
+      hashCode = hashCode * 8191 + session.hashCode();
 
-    boolean present_data_size = true && (is_set_data_size());
-    list.add(present_data_size);
-    if (present_data_size)
-      list.add(data_size);
+    hashCode = hashCode * 8191 + ((is_set_data_size()) ? 131071 : 524287);
+    if (is_set_data_size())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(data_size);
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -390,7 +361,7 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_version()).compareTo(other.is_set_version());
+    lastComparison = java.lang.Boolean.valueOf(is_set_version()).compareTo(other.is_set_version());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -400,7 +371,7 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_session()).compareTo(other.is_set_session());
+    lastComparison = java.lang.Boolean.valueOf(is_set_session()).compareTo(other.is_set_session());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -410,7 +381,7 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_data_size()).compareTo(other.is_set_data_size());
+    lastComparison = java.lang.Boolean.valueOf(is_set_data_size()).compareTo(other.is_set_data_size());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -423,21 +394,22 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("BeginDownloadResult(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("BeginDownloadResult(");
     boolean first = true;
 
     sb.append("version:");
@@ -482,7 +454,7 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
       __isset_bitfield = 0;
@@ -492,13 +464,13 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
     }
   }
 
-  private static class BeginDownloadResultStandardSchemeFactory implements SchemeFactory {
+  private static class BeginDownloadResultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public BeginDownloadResultStandardScheme getScheme() {
       return new BeginDownloadResultStandardScheme();
     }
   }
 
-  private static class BeginDownloadResultStandardScheme extends StandardScheme<BeginDownloadResult> {
+  private static class BeginDownloadResultStandardScheme extends org.apache.thrift.scheme.StandardScheme<BeginDownloadResult> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, BeginDownloadResult struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -566,20 +538,20 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
 
   }
 
-  private static class BeginDownloadResultTupleSchemeFactory implements SchemeFactory {
+  private static class BeginDownloadResultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public BeginDownloadResultTupleScheme getScheme() {
       return new BeginDownloadResultTupleScheme();
     }
   }
 
-  private static class BeginDownloadResultTupleScheme extends TupleScheme<BeginDownloadResult> {
+  private static class BeginDownloadResultTupleScheme extends org.apache.thrift.scheme.TupleScheme<BeginDownloadResult> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, BeginDownloadResult struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeI64(struct.version);
       oprot.writeString(struct.session);
-      BitSet optionals = new BitSet();
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_data_size()) {
         optionals.set(0);
       }
@@ -591,12 +563,12 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, BeginDownloadResult struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.version = iprot.readI64();
       struct.set_version_isSet(true);
       struct.session = iprot.readString();
       struct.set_session_isSet(true);
-      BitSet incoming = iprot.readBitSet(1);
+      java.util.BitSet incoming = iprot.readBitSet(1);
       if (incoming.get(0)) {
         struct.data_size = iprot.readI64();
         struct.set_data_size_isSet(true);
@@ -604,5 +576,8 @@ public class BeginDownloadResult implements org.apache.thrift.TBase<BeginDownloa
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/Bolt.java b/storm-core/src/jvm/org/apache/storm/generated/Bolt.java
index 878ebde..f094040 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/Bolt.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/Bolt.java
@@ -16,66 +16,36 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.io.Serializable, Cloneable, Comparable<Bolt> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Bolt");
 
   private static final org.apache.thrift.protocol.TField BOLT_OBJECT_FIELD_DESC = new org.apache.thrift.protocol.TField("bolt_object", org.apache.thrift.protocol.TType.STRUCT, (short)1);
   private static final org.apache.thrift.protocol.TField COMMON_FIELD_DESC = new org.apache.thrift.protocol.TField("common", org.apache.thrift.protocol.TType.STRUCT, (short)2);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new BoltStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new BoltTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new BoltStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new BoltTupleSchemeFactory();
 
-  private ComponentObject bolt_object; // required
-  private ComponentCommon common; // required
+  private @org.apache.thrift.annotation.Nullable ComponentObject bolt_object; // required
+  private @org.apache.thrift.annotation.Nullable ComponentCommon common; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     BOLT_OBJECT((short)1, "bolt_object"),
     COMMON((short)2, "common");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -83,6 +53,7 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // BOLT_OBJECT
@@ -100,21 +71,22 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -123,20 +95,20 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
   // isset id assignments
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.BOLT_OBJECT, new org.apache.thrift.meta_data.FieldMetaData("bolt_object", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ComponentObject.class)));
     tmpMap.put(_Fields.COMMON, new org.apache.thrift.meta_data.FieldMetaData("common", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ComponentCommon.class)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Bolt.class, metaDataMap);
   }
 
@@ -174,11 +146,12 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     this.common = null;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public ComponentObject get_bolt_object() {
     return this.bolt_object;
   }
 
-  public void set_bolt_object(ComponentObject bolt_object) {
+  public void set_bolt_object(@org.apache.thrift.annotation.Nullable ComponentObject bolt_object) {
     this.bolt_object = bolt_object;
   }
 
@@ -197,11 +170,12 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     }
   }
 
+  @org.apache.thrift.annotation.Nullable
   public ComponentCommon get_common() {
     return this.common;
   }
 
-  public void set_common(ComponentCommon common) {
+  public void set_common(@org.apache.thrift.annotation.Nullable ComponentCommon common) {
     this.common = common;
   }
 
@@ -220,7 +194,7 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case BOLT_OBJECT:
       if (value == null) {
@@ -241,7 +215,8 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case BOLT_OBJECT:
       return get_bolt_object();
@@ -250,13 +225,13 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
       return get_common();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -265,11 +240,11 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     case COMMON:
       return is_set_common();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof Bolt)
@@ -280,6 +255,8 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
   public boolean equals(Bolt that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_bolt_object = true && this.is_set_bolt_object();
     boolean that_present_bolt_object = true && that.is_set_bolt_object();
@@ -304,19 +281,17 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_bolt_object = true && (is_set_bolt_object());
-    list.add(present_bolt_object);
-    if (present_bolt_object)
-      list.add(bolt_object);
+    hashCode = hashCode * 8191 + ((is_set_bolt_object()) ? 131071 : 524287);
+    if (is_set_bolt_object())
+      hashCode = hashCode * 8191 + bolt_object.hashCode();
 
-    boolean present_common = true && (is_set_common());
-    list.add(present_common);
-    if (present_common)
-      list.add(common);
+    hashCode = hashCode * 8191 + ((is_set_common()) ? 131071 : 524287);
+    if (is_set_common())
+      hashCode = hashCode * 8191 + common.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -327,7 +302,7 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_bolt_object()).compareTo(other.is_set_bolt_object());
+    lastComparison = java.lang.Boolean.valueOf(is_set_bolt_object()).compareTo(other.is_set_bolt_object());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -337,7 +312,7 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_common()).compareTo(other.is_set_common());
+    lastComparison = java.lang.Boolean.valueOf(is_set_common()).compareTo(other.is_set_common());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -350,21 +325,22 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("Bolt(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("Bolt(");
     boolean first = true;
 
     sb.append("bolt_object:");
@@ -410,7 +386,7 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
@@ -418,13 +394,13 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     }
   }
 
-  private static class BoltStandardSchemeFactory implements SchemeFactory {
+  private static class BoltStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public BoltStandardScheme getScheme() {
       return new BoltStandardScheme();
     }
   }
 
-  private static class BoltStandardScheme extends StandardScheme<Bolt> {
+  private static class BoltStandardScheme extends org.apache.thrift.scheme.StandardScheme<Bolt> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, Bolt struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -483,24 +459,24 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
 
   }
 
-  private static class BoltTupleSchemeFactory implements SchemeFactory {
+  private static class BoltTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public BoltTupleScheme getScheme() {
       return new BoltTupleScheme();
     }
   }
 
-  private static class BoltTupleScheme extends TupleScheme<Bolt> {
+  private static class BoltTupleScheme extends org.apache.thrift.scheme.TupleScheme<Bolt> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, Bolt struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.bolt_object.write(oprot);
       struct.common.write(oprot);
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, Bolt struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.bolt_object = new ComponentObject();
       struct.bolt_object.read(iprot);
       struct.set_bolt_object_isSet(true);
@@ -510,5 +486,8 @@ public class Bolt implements org.apache.thrift.TBase<Bolt, Bolt._Fields>, java.i
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/BoltAggregateStats.java b/storm-core/src/jvm/org/apache/storm/generated/BoltAggregateStats.java
index c5e6bf9..2e29011 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/BoltAggregateStats.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/BoltAggregateStats.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregateStats, BoltAggregateStats._Fields>, java.io.Serializable, Cloneable, Comparable<BoltAggregateStats> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("BoltAggregateStats");
 
@@ -60,11 +33,8 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
   private static final org.apache.thrift.protocol.TField EXECUTED_FIELD_DESC = new org.apache.thrift.protocol.TField("executed", org.apache.thrift.protocol.TType.I64, (short)3);
   private static final org.apache.thrift.protocol.TField CAPACITY_FIELD_DESC = new org.apache.thrift.protocol.TField("capacity", org.apache.thrift.protocol.TType.DOUBLE, (short)4);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new BoltAggregateStatsStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new BoltAggregateStatsTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new BoltAggregateStatsStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new BoltAggregateStatsTupleSchemeFactory();
 
   private double execute_latency_ms; // optional
   private double process_latency_ms; // optional
@@ -78,10 +48,10 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
     EXECUTED((short)3, "executed"),
     CAPACITY((short)4, "capacity");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -89,6 +59,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // EXECUTE_LATENCY_MS
@@ -110,21 +81,22 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -133,7 +105,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
@@ -145,9 +117,9 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
   private static final int __CAPACITY_ISSET_ID = 3;
   private byte __isset_bitfield = 0;
   private static final _Fields optionals[] = {_Fields.EXECUTE_LATENCY_MS,_Fields.PROCESS_LATENCY_MS,_Fields.EXECUTED,_Fields.CAPACITY};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.EXECUTE_LATENCY_MS, new org.apache.thrift.meta_data.FieldMetaData("execute_latency_ms", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
     tmpMap.put(_Fields.PROCESS_LATENCY_MS, new org.apache.thrift.meta_data.FieldMetaData("process_latency_ms", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -156,7 +128,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.CAPACITY, new org.apache.thrift.meta_data.FieldMetaData("capacity", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(BoltAggregateStats.class, metaDataMap);
   }
 
@@ -200,16 +172,16 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
   }
 
   public void unset_execute_latency_ms() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __EXECUTE_LATENCY_MS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __EXECUTE_LATENCY_MS_ISSET_ID);
   }
 
   /** Returns true if field execute_latency_ms is set (has been assigned a value) and false otherwise */
   public boolean is_set_execute_latency_ms() {
-    return EncodingUtils.testBit(__isset_bitfield, __EXECUTE_LATENCY_MS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __EXECUTE_LATENCY_MS_ISSET_ID);
   }
 
   public void set_execute_latency_ms_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __EXECUTE_LATENCY_MS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __EXECUTE_LATENCY_MS_ISSET_ID, value);
   }
 
   public double get_process_latency_ms() {
@@ -222,16 +194,16 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
   }
 
   public void unset_process_latency_ms() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PROCESS_LATENCY_MS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __PROCESS_LATENCY_MS_ISSET_ID);
   }
 
   /** Returns true if field process_latency_ms is set (has been assigned a value) and false otherwise */
   public boolean is_set_process_latency_ms() {
-    return EncodingUtils.testBit(__isset_bitfield, __PROCESS_LATENCY_MS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __PROCESS_LATENCY_MS_ISSET_ID);
   }
 
   public void set_process_latency_ms_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PROCESS_LATENCY_MS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __PROCESS_LATENCY_MS_ISSET_ID, value);
   }
 
   public long get_executed() {
@@ -244,16 +216,16 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
   }
 
   public void unset_executed() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __EXECUTED_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __EXECUTED_ISSET_ID);
   }
 
   /** Returns true if field executed is set (has been assigned a value) and false otherwise */
   public boolean is_set_executed() {
-    return EncodingUtils.testBit(__isset_bitfield, __EXECUTED_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __EXECUTED_ISSET_ID);
   }
 
   public void set_executed_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __EXECUTED_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __EXECUTED_ISSET_ID, value);
   }
 
   public double get_capacity() {
@@ -266,25 +238,25 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
   }
 
   public void unset_capacity() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CAPACITY_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __CAPACITY_ISSET_ID);
   }
 
   /** Returns true if field capacity is set (has been assigned a value) and false otherwise */
   public boolean is_set_capacity() {
-    return EncodingUtils.testBit(__isset_bitfield, __CAPACITY_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __CAPACITY_ISSET_ID);
   }
 
   public void set_capacity_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CAPACITY_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __CAPACITY_ISSET_ID, value);
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case EXECUTE_LATENCY_MS:
       if (value == null) {
         unset_execute_latency_ms();
       } else {
-        set_execute_latency_ms((Double)value);
+        set_execute_latency_ms((java.lang.Double)value);
       }
       break;
 
@@ -292,7 +264,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
       if (value == null) {
         unset_process_latency_ms();
       } else {
-        set_process_latency_ms((Double)value);
+        set_process_latency_ms((java.lang.Double)value);
       }
       break;
 
@@ -300,7 +272,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
       if (value == null) {
         unset_executed();
       } else {
-        set_executed((Long)value);
+        set_executed((java.lang.Long)value);
       }
       break;
 
@@ -308,14 +280,15 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
       if (value == null) {
         unset_capacity();
       } else {
-        set_capacity((Double)value);
+        set_capacity((java.lang.Double)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case EXECUTE_LATENCY_MS:
       return get_execute_latency_ms();
@@ -330,13 +303,13 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
       return get_capacity();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -349,11 +322,11 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
     case CAPACITY:
       return is_set_capacity();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof BoltAggregateStats)
@@ -364,6 +337,8 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
   public boolean equals(BoltAggregateStats that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_execute_latency_ms = true && this.is_set_execute_latency_ms();
     boolean that_present_execute_latency_ms = true && that.is_set_execute_latency_ms();
@@ -406,29 +381,25 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_execute_latency_ms = true && (is_set_execute_latency_ms());
-    list.add(present_execute_latency_ms);
-    if (present_execute_latency_ms)
-      list.add(execute_latency_ms);
+    hashCode = hashCode * 8191 + ((is_set_execute_latency_ms()) ? 131071 : 524287);
+    if (is_set_execute_latency_ms())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(execute_latency_ms);
 
-    boolean present_process_latency_ms = true && (is_set_process_latency_ms());
-    list.add(present_process_latency_ms);
-    if (present_process_latency_ms)
-      list.add(process_latency_ms);
+    hashCode = hashCode * 8191 + ((is_set_process_latency_ms()) ? 131071 : 524287);
+    if (is_set_process_latency_ms())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(process_latency_ms);
 
-    boolean present_executed = true && (is_set_executed());
-    list.add(present_executed);
-    if (present_executed)
-      list.add(executed);
+    hashCode = hashCode * 8191 + ((is_set_executed()) ? 131071 : 524287);
+    if (is_set_executed())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(executed);
 
-    boolean present_capacity = true && (is_set_capacity());
-    list.add(present_capacity);
-    if (present_capacity)
-      list.add(capacity);
+    hashCode = hashCode * 8191 + ((is_set_capacity()) ? 131071 : 524287);
+    if (is_set_capacity())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(capacity);
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -439,7 +410,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_execute_latency_ms()).compareTo(other.is_set_execute_latency_ms());
+    lastComparison = java.lang.Boolean.valueOf(is_set_execute_latency_ms()).compareTo(other.is_set_execute_latency_ms());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -449,7 +420,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_process_latency_ms()).compareTo(other.is_set_process_latency_ms());
+    lastComparison = java.lang.Boolean.valueOf(is_set_process_latency_ms()).compareTo(other.is_set_process_latency_ms());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -459,7 +430,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_executed()).compareTo(other.is_set_executed());
+    lastComparison = java.lang.Boolean.valueOf(is_set_executed()).compareTo(other.is_set_executed());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -469,7 +440,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_capacity()).compareTo(other.is_set_capacity());
+    lastComparison = java.lang.Boolean.valueOf(is_set_capacity()).compareTo(other.is_set_capacity());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -482,21 +453,22 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("BoltAggregateStats(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("BoltAggregateStats(");
     boolean first = true;
 
     if (is_set_execute_latency_ms()) {
@@ -539,7 +511,7 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
       __isset_bitfield = 0;
@@ -549,13 +521,13 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
     }
   }
 
-  private static class BoltAggregateStatsStandardSchemeFactory implements SchemeFactory {
+  private static class BoltAggregateStatsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public BoltAggregateStatsStandardScheme getScheme() {
       return new BoltAggregateStatsStandardScheme();
     }
   }
 
-  private static class BoltAggregateStatsStandardScheme extends StandardScheme<BoltAggregateStats> {
+  private static class BoltAggregateStatsStandardScheme extends org.apache.thrift.scheme.StandardScheme<BoltAggregateStats> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, BoltAggregateStats struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -638,18 +610,18 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
 
   }
 
-  private static class BoltAggregateStatsTupleSchemeFactory implements SchemeFactory {
+  private static class BoltAggregateStatsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public BoltAggregateStatsTupleScheme getScheme() {
       return new BoltAggregateStatsTupleScheme();
     }
   }
 
-  private static class BoltAggregateStatsTupleScheme extends TupleScheme<BoltAggregateStats> {
+  private static class BoltAggregateStatsTupleScheme extends org.apache.thrift.scheme.TupleScheme<BoltAggregateStats> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, BoltAggregateStats struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
-      BitSet optionals = new BitSet();
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_execute_latency_ms()) {
         optionals.set(0);
       }
@@ -679,8 +651,8 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, BoltAggregateStats struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(4);
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      java.util.BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
         struct.execute_latency_ms = iprot.readDouble();
         struct.set_execute_latency_ms_isSet(true);
@@ -700,5 +672,8 @@ public class BoltAggregateStats implements org.apache.thrift.TBase<BoltAggregate
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/BoltStats.java b/storm-core/src/jvm/org/apache/storm/generated/BoltStats.java
index cd5a497..abdaa12 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/BoltStats.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/BoltStats.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._Fields>, java.io.Serializable, Cloneable, Comparable<BoltStats> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("BoltStats");
 
@@ -61,17 +34,14 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
   private static final org.apache.thrift.protocol.TField EXECUTED_FIELD_DESC = new org.apache.thrift.protocol.TField("executed", org.apache.thrift.protocol.TType.MAP, (short)4);
   private static final org.apache.thrift.protocol.TField EXECUTE_MS_AVG_FIELD_DESC = new org.apache.thrift.protocol.TField("execute_ms_avg", org.apache.thrift.protocol.TType.MAP, (short)5);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new BoltStatsStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new BoltStatsTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new BoltStatsStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new BoltStatsTupleSchemeFactory();
 
-  private Map<String,Map<GlobalStreamId,Long>> acked; // required
-  private Map<String,Map<GlobalStreamId,Long>> failed; // required
-  private Map<String,Map<GlobalStreamId,Double>> process_ms_avg; // required
-  private Map<String,Map<GlobalStreamId,Long>> executed; // required
-  private Map<String,Map<GlobalStreamId,Double>> execute_ms_avg; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> acked; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> failed; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> process_ms_avg; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> executed; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> execute_ms_avg; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -81,10 +51,10 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     EXECUTED((short)4, "executed"),
     EXECUTE_MS_AVG((short)5, "execute_ms_avg");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -92,6 +62,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // ACKED
@@ -115,21 +86,22 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -138,15 +110,15 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
   // isset id assignments
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.ACKED, new org.apache.thrift.meta_data.FieldMetaData("acked", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
@@ -177,7 +149,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
             new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
                 new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, GlobalStreamId.class), 
                 new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)))));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(BoltStats.class, metaDataMap);
   }
 
@@ -185,11 +157,11 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
   }
 
   public BoltStats(
-    Map<String,Map<GlobalStreamId,Long>> acked,
-    Map<String,Map<GlobalStreamId,Long>> failed,
-    Map<String,Map<GlobalStreamId,Double>> process_ms_avg,
-    Map<String,Map<GlobalStreamId,Long>> executed,
-    Map<String,Map<GlobalStreamId,Double>> execute_ms_avg)
+    java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> acked,
+    java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> failed,
+    java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> process_ms_avg,
+    java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> executed,
+    java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> execute_ms_avg)
   {
     this();
     this.acked = acked;
@@ -204,23 +176,23 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
    */
   public BoltStats(BoltStats other) {
     if (other.is_set_acked()) {
-      Map<String,Map<GlobalStreamId,Long>> __this__acked = new HashMap<String,Map<GlobalStreamId,Long>>(other.acked.size());
-      for (Map.Entry<String, Map<GlobalStreamId,Long>> other_element : other.acked.entrySet()) {
+      java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> __this__acked = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(other.acked.size());
+      for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> other_element : other.acked.entrySet()) {
 
-        String other_element_key = other_element.getKey();
-        Map<GlobalStreamId,Long> other_element_value = other_element.getValue();
+        java.lang.String other_element_key = other_element.getKey();
+        java.util.Map<GlobalStreamId,java.lang.Long> other_element_value = other_element.getValue();
 
-        String __this__acked_copy_key = other_element_key;
+        java.lang.String __this__acked_copy_key = other_element_key;
 
-        Map<GlobalStreamId,Long> __this__acked_copy_value = new HashMap<GlobalStreamId,Long>(other_element_value.size());
-        for (Map.Entry<GlobalStreamId, Long> other_element_value_element : other_element_value.entrySet()) {
+        java.util.Map<GlobalStreamId,java.lang.Long> __this__acked_copy_value = new java.util.HashMap<GlobalStreamId,java.lang.Long>(other_element_value.size());
+        for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> other_element_value_element : other_element_value.entrySet()) {
 
           GlobalStreamId other_element_value_element_key = other_element_value_element.getKey();
-          Long other_element_value_element_value = other_element_value_element.getValue();
+          java.lang.Long other_element_value_element_value = other_element_value_element.getValue();
 
           GlobalStreamId __this__acked_copy_value_copy_key = new GlobalStreamId(other_element_value_element_key);
 
-          Long __this__acked_copy_value_copy_value = other_element_value_element_value;
+          java.lang.Long __this__acked_copy_value_copy_value = other_element_value_element_value;
 
           __this__acked_copy_value.put(__this__acked_copy_value_copy_key, __this__acked_copy_value_copy_value);
         }
@@ -230,23 +202,23 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       this.acked = __this__acked;
     }
     if (other.is_set_failed()) {
-      Map<String,Map<GlobalStreamId,Long>> __this__failed = new HashMap<String,Map<GlobalStreamId,Long>>(other.failed.size());
-      for (Map.Entry<String, Map<GlobalStreamId,Long>> other_element : other.failed.entrySet()) {
+      java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> __this__failed = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(other.failed.size());
+      for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> other_element : other.failed.entrySet()) {
 
-        String other_element_key = other_element.getKey();
-        Map<GlobalStreamId,Long> other_element_value = other_element.getValue();
+        java.lang.String other_element_key = other_element.getKey();
+        java.util.Map<GlobalStreamId,java.lang.Long> other_element_value = other_element.getValue();
 
-        String __this__failed_copy_key = other_element_key;
+        java.lang.String __this__failed_copy_key = other_element_key;
 
-        Map<GlobalStreamId,Long> __this__failed_copy_value = new HashMap<GlobalStreamId,Long>(other_element_value.size());
-        for (Map.Entry<GlobalStreamId, Long> other_element_value_element : other_element_value.entrySet()) {
+        java.util.Map<GlobalStreamId,java.lang.Long> __this__failed_copy_value = new java.util.HashMap<GlobalStreamId,java.lang.Long>(other_element_value.size());
+        for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> other_element_value_element : other_element_value.entrySet()) {
 
           GlobalStreamId other_element_value_element_key = other_element_value_element.getKey();
-          Long other_element_value_element_value = other_element_value_element.getValue();
+          java.lang.Long other_element_value_element_value = other_element_value_element.getValue();
 
           GlobalStreamId __this__failed_copy_value_copy_key = new GlobalStreamId(other_element_value_element_key);
 
-          Long __this__failed_copy_value_copy_value = other_element_value_element_value;
+          java.lang.Long __this__failed_copy_value_copy_value = other_element_value_element_value;
 
           __this__failed_copy_value.put(__this__failed_copy_value_copy_key, __this__failed_copy_value_copy_value);
         }
@@ -256,23 +228,23 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       this.failed = __this__failed;
     }
     if (other.is_set_process_ms_avg()) {
-      Map<String,Map<GlobalStreamId,Double>> __this__process_ms_avg = new HashMap<String,Map<GlobalStreamId,Double>>(other.process_ms_avg.size());
-      for (Map.Entry<String, Map<GlobalStreamId,Double>> other_element : other.process_ms_avg.entrySet()) {
+      java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> __this__process_ms_avg = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>(other.process_ms_avg.size());
+      for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Double>> other_element : other.process_ms_avg.entrySet()) {
 
-        String other_element_key = other_element.getKey();
-        Map<GlobalStreamId,Double> other_element_value = other_element.getValue();
+        java.lang.String other_element_key = other_element.getKey();
+        java.util.Map<GlobalStreamId,java.lang.Double> other_element_value = other_element.getValue();
 
-        String __this__process_ms_avg_copy_key = other_element_key;
+        java.lang.String __this__process_ms_avg_copy_key = other_element_key;
 
-        Map<GlobalStreamId,Double> __this__process_ms_avg_copy_value = new HashMap<GlobalStreamId,Double>(other_element_value.size());
-        for (Map.Entry<GlobalStreamId, Double> other_element_value_element : other_element_value.entrySet()) {
+        java.util.Map<GlobalStreamId,java.lang.Double> __this__process_ms_avg_copy_value = new java.util.HashMap<GlobalStreamId,java.lang.Double>(other_element_value.size());
+        for (java.util.Map.Entry<GlobalStreamId, java.lang.Double> other_element_value_element : other_element_value.entrySet()) {
 
           GlobalStreamId other_element_value_element_key = other_element_value_element.getKey();
-          Double other_element_value_element_value = other_element_value_element.getValue();
+          java.lang.Double other_element_value_element_value = other_element_value_element.getValue();
 
           GlobalStreamId __this__process_ms_avg_copy_value_copy_key = new GlobalStreamId(other_element_value_element_key);
 
-          Double __this__process_ms_avg_copy_value_copy_value = other_element_value_element_value;
+          java.lang.Double __this__process_ms_avg_copy_value_copy_value = other_element_value_element_value;
 
           __this__process_ms_avg_copy_value.put(__this__process_ms_avg_copy_value_copy_key, __this__process_ms_avg_copy_value_copy_value);
         }
@@ -282,23 +254,23 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       this.process_ms_avg = __this__process_ms_avg;
     }
     if (other.is_set_executed()) {
-      Map<String,Map<GlobalStreamId,Long>> __this__executed = new HashMap<String,Map<GlobalStreamId,Long>>(other.executed.size());
-      for (Map.Entry<String, Map<GlobalStreamId,Long>> other_element : other.executed.entrySet()) {
+      java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> __this__executed = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(other.executed.size());
+      for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> other_element : other.executed.entrySet()) {
 
-        String other_element_key = other_element.getKey();
-        Map<GlobalStreamId,Long> other_element_value = other_element.getValue();
+        java.lang.String other_element_key = other_element.getKey();
+        java.util.Map<GlobalStreamId,java.lang.Long> other_element_value = other_element.getValue();
 
-        String __this__executed_copy_key = other_element_key;
+        java.lang.String __this__executed_copy_key = other_element_key;
 
-        Map<GlobalStreamId,Long> __this__executed_copy_value = new HashMap<GlobalStreamId,Long>(other_element_value.size());
-        for (Map.Entry<GlobalStreamId, Long> other_element_value_element : other_element_value.entrySet()) {
+        java.util.Map<GlobalStreamId,java.lang.Long> __this__executed_copy_value = new java.util.HashMap<GlobalStreamId,java.lang.Long>(other_element_value.size());
+        for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> other_element_value_element : other_element_value.entrySet()) {
 
           GlobalStreamId other_element_value_element_key = other_element_value_element.getKey();
-          Long other_element_value_element_value = other_element_value_element.getValue();
+          java.lang.Long other_element_value_element_value = other_element_value_element.getValue();
 
           GlobalStreamId __this__executed_copy_value_copy_key = new GlobalStreamId(other_element_value_element_key);
 
-          Long __this__executed_copy_value_copy_value = other_element_value_element_value;
+          java.lang.Long __this__executed_copy_value_copy_value = other_element_value_element_value;
 
           __this__executed_copy_value.put(__this__executed_copy_value_copy_key, __this__executed_copy_value_copy_value);
         }
@@ -308,23 +280,23 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       this.executed = __this__executed;
     }
     if (other.is_set_execute_ms_avg()) {
-      Map<String,Map<GlobalStreamId,Double>> __this__execute_ms_avg = new HashMap<String,Map<GlobalStreamId,Double>>(other.execute_ms_avg.size());
-      for (Map.Entry<String, Map<GlobalStreamId,Double>> other_element : other.execute_ms_avg.entrySet()) {
+      java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> __this__execute_ms_avg = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>(other.execute_ms_avg.size());
+      for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Double>> other_element : other.execute_ms_avg.entrySet()) {
 
-        String other_element_key = other_element.getKey();
-        Map<GlobalStreamId,Double> other_element_value = other_element.getValue();
+        java.lang.String other_element_key = other_element.getKey();
+        java.util.Map<GlobalStreamId,java.lang.Double> other_element_value = other_element.getValue();
 
-        String __this__execute_ms_avg_copy_key = other_element_key;
+        java.lang.String __this__execute_ms_avg_copy_key = other_element_key;
 
-        Map<GlobalStreamId,Double> __this__execute_ms_avg_copy_value = new HashMap<GlobalStreamId,Double>(other_element_value.size());
-        for (Map.Entry<GlobalStreamId, Double> other_element_value_element : other_element_value.entrySet()) {
+        java.util.Map<GlobalStreamId,java.lang.Double> __this__execute_ms_avg_copy_value = new java.util.HashMap<GlobalStreamId,java.lang.Double>(other_element_value.size());
+        for (java.util.Map.Entry<GlobalStreamId, java.lang.Double> other_element_value_element : other_element_value.entrySet()) {
 
           GlobalStreamId other_element_value_element_key = other_element_value_element.getKey();
-          Double other_element_value_element_value = other_element_value_element.getValue();
+          java.lang.Double other_element_value_element_value = other_element_value_element.getValue();
 
           GlobalStreamId __this__execute_ms_avg_copy_value_copy_key = new GlobalStreamId(other_element_value_element_key);
 
-          Double __this__execute_ms_avg_copy_value_copy_value = other_element_value_element_value;
+          java.lang.Double __this__execute_ms_avg_copy_value_copy_value = other_element_value_element_value;
 
           __this__execute_ms_avg_copy_value.put(__this__execute_ms_avg_copy_value_copy_key, __this__execute_ms_avg_copy_value_copy_value);
         }
@@ -352,18 +324,19 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     return (this.acked == null) ? 0 : this.acked.size();
   }
 
-  public void put_to_acked(String key, Map<GlobalStreamId,Long> val) {
+  public void put_to_acked(java.lang.String key, java.util.Map<GlobalStreamId,java.lang.Long> val) {
     if (this.acked == null) {
-      this.acked = new HashMap<String,Map<GlobalStreamId,Long>>();
+      this.acked = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>();
     }
     this.acked.put(key, val);
   }
 
-  public Map<String,Map<GlobalStreamId,Long>> get_acked() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> get_acked() {
     return this.acked;
   }
 
-  public void set_acked(Map<String,Map<GlobalStreamId,Long>> acked) {
+  public void set_acked(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> acked) {
     this.acked = acked;
   }
 
@@ -386,18 +359,19 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     return (this.failed == null) ? 0 : this.failed.size();
   }
 
-  public void put_to_failed(String key, Map<GlobalStreamId,Long> val) {
+  public void put_to_failed(java.lang.String key, java.util.Map<GlobalStreamId,java.lang.Long> val) {
     if (this.failed == null) {
-      this.failed = new HashMap<String,Map<GlobalStreamId,Long>>();
+      this.failed = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>();
     }
     this.failed.put(key, val);
   }
 
-  public Map<String,Map<GlobalStreamId,Long>> get_failed() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> get_failed() {
     return this.failed;
   }
 
-  public void set_failed(Map<String,Map<GlobalStreamId,Long>> failed) {
+  public void set_failed(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> failed) {
     this.failed = failed;
   }
 
@@ -420,18 +394,19 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     return (this.process_ms_avg == null) ? 0 : this.process_ms_avg.size();
   }
 
-  public void put_to_process_ms_avg(String key, Map<GlobalStreamId,Double> val) {
+  public void put_to_process_ms_avg(java.lang.String key, java.util.Map<GlobalStreamId,java.lang.Double> val) {
     if (this.process_ms_avg == null) {
-      this.process_ms_avg = new HashMap<String,Map<GlobalStreamId,Double>>();
+      this.process_ms_avg = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>();
     }
     this.process_ms_avg.put(key, val);
   }
 
-  public Map<String,Map<GlobalStreamId,Double>> get_process_ms_avg() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> get_process_ms_avg() {
     return this.process_ms_avg;
   }
 
-  public void set_process_ms_avg(Map<String,Map<GlobalStreamId,Double>> process_ms_avg) {
+  public void set_process_ms_avg(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> process_ms_avg) {
     this.process_ms_avg = process_ms_avg;
   }
 
@@ -454,18 +429,19 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     return (this.executed == null) ? 0 : this.executed.size();
   }
 
-  public void put_to_executed(String key, Map<GlobalStreamId,Long> val) {
+  public void put_to_executed(java.lang.String key, java.util.Map<GlobalStreamId,java.lang.Long> val) {
     if (this.executed == null) {
-      this.executed = new HashMap<String,Map<GlobalStreamId,Long>>();
+      this.executed = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>();
     }
     this.executed.put(key, val);
   }
 
-  public Map<String,Map<GlobalStreamId,Long>> get_executed() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> get_executed() {
     return this.executed;
   }
 
-  public void set_executed(Map<String,Map<GlobalStreamId,Long>> executed) {
+  public void set_executed(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>> executed) {
     this.executed = executed;
   }
 
@@ -488,18 +464,19 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     return (this.execute_ms_avg == null) ? 0 : this.execute_ms_avg.size();
   }
 
-  public void put_to_execute_ms_avg(String key, Map<GlobalStreamId,Double> val) {
+  public void put_to_execute_ms_avg(java.lang.String key, java.util.Map<GlobalStreamId,java.lang.Double> val) {
     if (this.execute_ms_avg == null) {
-      this.execute_ms_avg = new HashMap<String,Map<GlobalStreamId,Double>>();
+      this.execute_ms_avg = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>();
     }
     this.execute_ms_avg.put(key, val);
   }
 
-  public Map<String,Map<GlobalStreamId,Double>> get_execute_ms_avg() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> get_execute_ms_avg() {
     return this.execute_ms_avg;
   }
 
-  public void set_execute_ms_avg(Map<String,Map<GlobalStreamId,Double>> execute_ms_avg) {
+  public void set_execute_ms_avg(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>> execute_ms_avg) {
     this.execute_ms_avg = execute_ms_avg;
   }
 
@@ -518,13 +495,13 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case ACKED:
       if (value == null) {
         unset_acked();
       } else {
-        set_acked((Map<String,Map<GlobalStreamId,Long>>)value);
+        set_acked((java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>)value);
       }
       break;
 
@@ -532,7 +509,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       if (value == null) {
         unset_failed();
       } else {
-        set_failed((Map<String,Map<GlobalStreamId,Long>>)value);
+        set_failed((java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>)value);
       }
       break;
 
@@ -540,7 +517,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       if (value == null) {
         unset_process_ms_avg();
       } else {
-        set_process_ms_avg((Map<String,Map<GlobalStreamId,Double>>)value);
+        set_process_ms_avg((java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>)value);
       }
       break;
 
@@ -548,7 +525,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       if (value == null) {
         unset_executed();
       } else {
-        set_executed((Map<String,Map<GlobalStreamId,Long>>)value);
+        set_executed((java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>)value);
       }
       break;
 
@@ -556,14 +533,15 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       if (value == null) {
         unset_execute_ms_avg();
       } else {
-        set_execute_ms_avg((Map<String,Map<GlobalStreamId,Double>>)value);
+        set_execute_ms_avg((java.util.Map<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case ACKED:
       return get_acked();
@@ -581,13 +559,13 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       return get_execute_ms_avg();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -602,11 +580,11 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     case EXECUTE_MS_AVG:
       return is_set_execute_ms_avg();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof BoltStats)
@@ -617,6 +595,8 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
   public boolean equals(BoltStats that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_acked = true && this.is_set_acked();
     boolean that_present_acked = true && that.is_set_acked();
@@ -668,34 +648,29 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
-
-    boolean present_acked = true && (is_set_acked());
-    list.add(present_acked);
-    if (present_acked)
-      list.add(acked);
-
-    boolean present_failed = true && (is_set_failed());
-    list.add(present_failed);
-    if (present_failed)
-      list.add(failed);
-
-    boolean present_process_ms_avg = true && (is_set_process_ms_avg());
-    list.add(present_process_ms_avg);
-    if (present_process_ms_avg)
-      list.add(process_ms_avg);
-
-    boolean present_executed = true && (is_set_executed());
-    list.add(present_executed);
-    if (present_executed)
-      list.add(executed);
-
-    boolean present_execute_ms_avg = true && (is_set_execute_ms_avg());
-    list.add(present_execute_ms_avg);
-    if (present_execute_ms_avg)
-      list.add(execute_ms_avg);
-
-    return list.hashCode();
+    int hashCode = 1;
+
+    hashCode = hashCode * 8191 + ((is_set_acked()) ? 131071 : 524287);
+    if (is_set_acked())
+      hashCode = hashCode * 8191 + acked.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_failed()) ? 131071 : 524287);
+    if (is_set_failed())
+      hashCode = hashCode * 8191 + failed.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_process_ms_avg()) ? 131071 : 524287);
+    if (is_set_process_ms_avg())
+      hashCode = hashCode * 8191 + process_ms_avg.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_executed()) ? 131071 : 524287);
+    if (is_set_executed())
+      hashCode = hashCode * 8191 + executed.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_execute_ms_avg()) ? 131071 : 524287);
+    if (is_set_execute_ms_avg())
+      hashCode = hashCode * 8191 + execute_ms_avg.hashCode();
+
+    return hashCode;
   }
 
   @Override
@@ -706,7 +681,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_acked()).compareTo(other.is_set_acked());
+    lastComparison = java.lang.Boolean.valueOf(is_set_acked()).compareTo(other.is_set_acked());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -716,7 +691,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_failed()).compareTo(other.is_set_failed());
+    lastComparison = java.lang.Boolean.valueOf(is_set_failed()).compareTo(other.is_set_failed());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -726,7 +701,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_process_ms_avg()).compareTo(other.is_set_process_ms_avg());
+    lastComparison = java.lang.Boolean.valueOf(is_set_process_ms_avg()).compareTo(other.is_set_process_ms_avg());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -736,7 +711,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_executed()).compareTo(other.is_set_executed());
+    lastComparison = java.lang.Boolean.valueOf(is_set_executed()).compareTo(other.is_set_executed());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -746,7 +721,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_execute_ms_avg()).compareTo(other.is_set_execute_ms_avg());
+    lastComparison = java.lang.Boolean.valueOf(is_set_execute_ms_avg()).compareTo(other.is_set_execute_ms_avg());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -759,21 +734,22 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("BoltStats(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("BoltStats(");
     boolean first = true;
 
     sb.append("acked:");
@@ -852,7 +828,7 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
@@ -860,13 +836,13 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     }
   }
 
-  private static class BoltStatsStandardSchemeFactory implements SchemeFactory {
+  private static class BoltStatsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public BoltStatsStandardScheme getScheme() {
       return new BoltStatsStandardScheme();
     }
   }
 
-  private static class BoltStatsStandardScheme extends StandardScheme<BoltStats> {
+  private static class BoltStatsStandardScheme extends org.apache.thrift.scheme.StandardScheme<BoltStats> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, BoltStats struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -882,16 +858,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map132 = iprot.readMapBegin();
-                struct.acked = new HashMap<String,Map<GlobalStreamId,Long>>(2*_map132.size);
-                String _key133;
-                Map<GlobalStreamId,Long> _val134;
+                struct.acked = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(2*_map132.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key133;
+                @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Long> _val134;
                 for (int _i135 = 0; _i135 < _map132.size; ++_i135)
                 {
                   _key133 = iprot.readString();
                   {
                     org.apache.thrift.protocol.TMap _map136 = iprot.readMapBegin();
-                    _val134 = new HashMap<GlobalStreamId,Long>(2*_map136.size);
-                    GlobalStreamId _key137;
+                    _val134 = new java.util.HashMap<GlobalStreamId,java.lang.Long>(2*_map136.size);
+                    @org.apache.thrift.annotation.Nullable GlobalStreamId _key137;
                     long _val138;
                     for (int _i139 = 0; _i139 < _map136.size; ++_i139)
                     {
@@ -915,16 +891,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map140 = iprot.readMapBegin();
-                struct.failed = new HashMap<String,Map<GlobalStreamId,Long>>(2*_map140.size);
-                String _key141;
-                Map<GlobalStreamId,Long> _val142;
+                struct.failed = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(2*_map140.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key141;
+                @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Long> _val142;
                 for (int _i143 = 0; _i143 < _map140.size; ++_i143)
                 {
                   _key141 = iprot.readString();
                   {
                     org.apache.thrift.protocol.TMap _map144 = iprot.readMapBegin();
-                    _val142 = new HashMap<GlobalStreamId,Long>(2*_map144.size);
-                    GlobalStreamId _key145;
+                    _val142 = new java.util.HashMap<GlobalStreamId,java.lang.Long>(2*_map144.size);
+                    @org.apache.thrift.annotation.Nullable GlobalStreamId _key145;
                     long _val146;
                     for (int _i147 = 0; _i147 < _map144.size; ++_i147)
                     {
@@ -948,16 +924,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map148 = iprot.readMapBegin();
-                struct.process_ms_avg = new HashMap<String,Map<GlobalStreamId,Double>>(2*_map148.size);
-                String _key149;
-                Map<GlobalStreamId,Double> _val150;
+                struct.process_ms_avg = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>(2*_map148.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key149;
+                @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Double> _val150;
                 for (int _i151 = 0; _i151 < _map148.size; ++_i151)
                 {
                   _key149 = iprot.readString();
                   {
                     org.apache.thrift.protocol.TMap _map152 = iprot.readMapBegin();
-                    _val150 = new HashMap<GlobalStreamId,Double>(2*_map152.size);
-                    GlobalStreamId _key153;
+                    _val150 = new java.util.HashMap<GlobalStreamId,java.lang.Double>(2*_map152.size);
+                    @org.apache.thrift.annotation.Nullable GlobalStreamId _key153;
                     double _val154;
                     for (int _i155 = 0; _i155 < _map152.size; ++_i155)
                     {
@@ -981,16 +957,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map156 = iprot.readMapBegin();
-                struct.executed = new HashMap<String,Map<GlobalStreamId,Long>>(2*_map156.size);
-                String _key157;
-                Map<GlobalStreamId,Long> _val158;
+                struct.executed = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(2*_map156.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key157;
+                @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Long> _val158;
                 for (int _i159 = 0; _i159 < _map156.size; ++_i159)
                 {
                   _key157 = iprot.readString();
                   {
                     org.apache.thrift.protocol.TMap _map160 = iprot.readMapBegin();
-                    _val158 = new HashMap<GlobalStreamId,Long>(2*_map160.size);
-                    GlobalStreamId _key161;
+                    _val158 = new java.util.HashMap<GlobalStreamId,java.lang.Long>(2*_map160.size);
+                    @org.apache.thrift.annotation.Nullable GlobalStreamId _key161;
                     long _val162;
                     for (int _i163 = 0; _i163 < _map160.size; ++_i163)
                     {
@@ -1014,16 +990,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map164 = iprot.readMapBegin();
-                struct.execute_ms_avg = new HashMap<String,Map<GlobalStreamId,Double>>(2*_map164.size);
-                String _key165;
-                Map<GlobalStreamId,Double> _val166;
+                struct.execute_ms_avg = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>(2*_map164.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key165;
+                @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Double> _val166;
                 for (int _i167 = 0; _i167 < _map164.size; ++_i167)
                 {
                   _key165 = iprot.readString();
                   {
                     org.apache.thrift.protocol.TMap _map168 = iprot.readMapBegin();
-                    _val166 = new HashMap<GlobalStreamId,Double>(2*_map168.size);
-                    GlobalStreamId _key169;
+                    _val166 = new java.util.HashMap<GlobalStreamId,java.lang.Double>(2*_map168.size);
+                    @org.apache.thrift.annotation.Nullable GlobalStreamId _key169;
                     double _val170;
                     for (int _i171 = 0; _i171 < _map168.size; ++_i171)
                     {
@@ -1060,12 +1036,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         oprot.writeFieldBegin(ACKED_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.acked.size()));
-          for (Map.Entry<String, Map<GlobalStreamId,Long>> _iter172 : struct.acked.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> _iter172 : struct.acked.entrySet())
           {
             oprot.writeString(_iter172.getKey());
             {
               oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.I64, _iter172.getValue().size()));
-              for (Map.Entry<GlobalStreamId, Long> _iter173 : _iter172.getValue().entrySet())
+              for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> _iter173 : _iter172.getValue().entrySet())
               {
                 _iter173.getKey().write(oprot);
                 oprot.writeI64(_iter173.getValue());
@@ -1081,12 +1057,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         oprot.writeFieldBegin(FAILED_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.failed.size()));
-          for (Map.Entry<String, Map<GlobalStreamId,Long>> _iter174 : struct.failed.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> _iter174 : struct.failed.entrySet())
           {
             oprot.writeString(_iter174.getKey());
             {
               oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.I64, _iter174.getValue().size()));
-              for (Map.Entry<GlobalStreamId, Long> _iter175 : _iter174.getValue().entrySet())
+              for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> _iter175 : _iter174.getValue().entrySet())
               {
                 _iter175.getKey().write(oprot);
                 oprot.writeI64(_iter175.getValue());
@@ -1102,12 +1078,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         oprot.writeFieldBegin(PROCESS_MS_AVG_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.process_ms_avg.size()));
-          for (Map.Entry<String, Map<GlobalStreamId,Double>> _iter176 : struct.process_ms_avg.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Double>> _iter176 : struct.process_ms_avg.entrySet())
           {
             oprot.writeString(_iter176.getKey());
             {
               oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.DOUBLE, _iter176.getValue().size()));
-              for (Map.Entry<GlobalStreamId, Double> _iter177 : _iter176.getValue().entrySet())
+              for (java.util.Map.Entry<GlobalStreamId, java.lang.Double> _iter177 : _iter176.getValue().entrySet())
               {
                 _iter177.getKey().write(oprot);
                 oprot.writeDouble(_iter177.getValue());
@@ -1123,12 +1099,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         oprot.writeFieldBegin(EXECUTED_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.executed.size()));
-          for (Map.Entry<String, Map<GlobalStreamId,Long>> _iter178 : struct.executed.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> _iter178 : struct.executed.entrySet())
           {
             oprot.writeString(_iter178.getKey());
             {
               oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.I64, _iter178.getValue().size()));
-              for (Map.Entry<GlobalStreamId, Long> _iter179 : _iter178.getValue().entrySet())
+              for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> _iter179 : _iter178.getValue().entrySet())
               {
                 _iter179.getKey().write(oprot);
                 oprot.writeI64(_iter179.getValue());
@@ -1144,12 +1120,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
         oprot.writeFieldBegin(EXECUTE_MS_AVG_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.execute_ms_avg.size()));
-          for (Map.Entry<String, Map<GlobalStreamId,Double>> _iter180 : struct.execute_ms_avg.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Double>> _iter180 : struct.execute_ms_avg.entrySet())
           {
             oprot.writeString(_iter180.getKey());
             {
               oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.DOUBLE, _iter180.getValue().size()));
-              for (Map.Entry<GlobalStreamId, Double> _iter181 : _iter180.getValue().entrySet())
+              for (java.util.Map.Entry<GlobalStreamId, java.lang.Double> _iter181 : _iter180.getValue().entrySet())
               {
                 _iter181.getKey().write(oprot);
                 oprot.writeDouble(_iter181.getValue());
@@ -1167,25 +1143,25 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
 
   }
 
-  private static class BoltStatsTupleSchemeFactory implements SchemeFactory {
+  private static class BoltStatsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public BoltStatsTupleScheme getScheme() {
       return new BoltStatsTupleScheme();
     }
   }
 
-  private static class BoltStatsTupleScheme extends TupleScheme<BoltStats> {
+  private static class BoltStatsTupleScheme extends org.apache.thrift.scheme.TupleScheme<BoltStats> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, BoltStats struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       {
         oprot.writeI32(struct.acked.size());
-        for (Map.Entry<String, Map<GlobalStreamId,Long>> _iter182 : struct.acked.entrySet())
+        for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> _iter182 : struct.acked.entrySet())
         {
           oprot.writeString(_iter182.getKey());
           {
             oprot.writeI32(_iter182.getValue().size());
-            for (Map.Entry<GlobalStreamId, Long> _iter183 : _iter182.getValue().entrySet())
+            for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> _iter183 : _iter182.getValue().entrySet())
             {
               _iter183.getKey().write(oprot);
               oprot.writeI64(_iter183.getValue());
@@ -1195,12 +1171,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       }
       {
         oprot.writeI32(struct.failed.size());
-        for (Map.Entry<String, Map<GlobalStreamId,Long>> _iter184 : struct.failed.entrySet())
+        for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> _iter184 : struct.failed.entrySet())
         {
           oprot.writeString(_iter184.getKey());
           {
             oprot.writeI32(_iter184.getValue().size());
-            for (Map.Entry<GlobalStreamId, Long> _iter185 : _iter184.getValue().entrySet())
+            for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> _iter185 : _iter184.getValue().entrySet())
             {
               _iter185.getKey().write(oprot);
               oprot.writeI64(_iter185.getValue());
@@ -1210,12 +1186,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       }
       {
         oprot.writeI32(struct.process_ms_avg.size());
-        for (Map.Entry<String, Map<GlobalStreamId,Double>> _iter186 : struct.process_ms_avg.entrySet())
+        for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Double>> _iter186 : struct.process_ms_avg.entrySet())
         {
           oprot.writeString(_iter186.getKey());
           {
             oprot.writeI32(_iter186.getValue().size());
-            for (Map.Entry<GlobalStreamId, Double> _iter187 : _iter186.getValue().entrySet())
+            for (java.util.Map.Entry<GlobalStreamId, java.lang.Double> _iter187 : _iter186.getValue().entrySet())
             {
               _iter187.getKey().write(oprot);
               oprot.writeDouble(_iter187.getValue());
@@ -1225,12 +1201,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       }
       {
         oprot.writeI32(struct.executed.size());
-        for (Map.Entry<String, Map<GlobalStreamId,Long>> _iter188 : struct.executed.entrySet())
+        for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Long>> _iter188 : struct.executed.entrySet())
         {
           oprot.writeString(_iter188.getKey());
           {
             oprot.writeI32(_iter188.getValue().size());
-            for (Map.Entry<GlobalStreamId, Long> _iter189 : _iter188.getValue().entrySet())
+            for (java.util.Map.Entry<GlobalStreamId, java.lang.Long> _iter189 : _iter188.getValue().entrySet())
             {
               _iter189.getKey().write(oprot);
               oprot.writeI64(_iter189.getValue());
@@ -1240,12 +1216,12 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       }
       {
         oprot.writeI32(struct.execute_ms_avg.size());
-        for (Map.Entry<String, Map<GlobalStreamId,Double>> _iter190 : struct.execute_ms_avg.entrySet())
+        for (java.util.Map.Entry<java.lang.String, java.util.Map<GlobalStreamId,java.lang.Double>> _iter190 : struct.execute_ms_avg.entrySet())
         {
           oprot.writeString(_iter190.getKey());
           {
             oprot.writeI32(_iter190.getValue().size());
-            for (Map.Entry<GlobalStreamId, Double> _iter191 : _iter190.getValue().entrySet())
+            for (java.util.Map.Entry<GlobalStreamId, java.lang.Double> _iter191 : _iter190.getValue().entrySet())
             {
               _iter191.getKey().write(oprot);
               oprot.writeDouble(_iter191.getValue());
@@ -1257,19 +1233,19 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, BoltStats struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       {
         org.apache.thrift.protocol.TMap _map192 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
-        struct.acked = new HashMap<String,Map<GlobalStreamId,Long>>(2*_map192.size);
-        String _key193;
-        Map<GlobalStreamId,Long> _val194;
+        struct.acked = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(2*_map192.size);
+        @org.apache.thrift.annotation.Nullable java.lang.String _key193;
+        @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Long> _val194;
         for (int _i195 = 0; _i195 < _map192.size; ++_i195)
         {
           _key193 = iprot.readString();
           {
             org.apache.thrift.protocol.TMap _map196 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.I64, iprot.readI32());
-            _val194 = new HashMap<GlobalStreamId,Long>(2*_map196.size);
-            GlobalStreamId _key197;
+            _val194 = new java.util.HashMap<GlobalStreamId,java.lang.Long>(2*_map196.size);
+            @org.apache.thrift.annotation.Nullable GlobalStreamId _key197;
             long _val198;
             for (int _i199 = 0; _i199 < _map196.size; ++_i199)
             {
@@ -1285,16 +1261,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       struct.set_acked_isSet(true);
       {
         org.apache.thrift.protocol.TMap _map200 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
-        struct.failed = new HashMap<String,Map<GlobalStreamId,Long>>(2*_map200.size);
-        String _key201;
-        Map<GlobalStreamId,Long> _val202;
+        struct.failed = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(2*_map200.size);
+        @org.apache.thrift.annotation.Nullable java.lang.String _key201;
+        @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Long> _val202;
         for (int _i203 = 0; _i203 < _map200.size; ++_i203)
         {
           _key201 = iprot.readString();
           {
             org.apache.thrift.protocol.TMap _map204 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.I64, iprot.readI32());
-            _val202 = new HashMap<GlobalStreamId,Long>(2*_map204.size);
-            GlobalStreamId _key205;
+            _val202 = new java.util.HashMap<GlobalStreamId,java.lang.Long>(2*_map204.size);
+            @org.apache.thrift.annotation.Nullable GlobalStreamId _key205;
             long _val206;
             for (int _i207 = 0; _i207 < _map204.size; ++_i207)
             {
@@ -1310,16 +1286,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       struct.set_failed_isSet(true);
       {
         org.apache.thrift.protocol.TMap _map208 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
-        struct.process_ms_avg = new HashMap<String,Map<GlobalStreamId,Double>>(2*_map208.size);
-        String _key209;
-        Map<GlobalStreamId,Double> _val210;
+        struct.process_ms_avg = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>(2*_map208.size);
+        @org.apache.thrift.annotation.Nullable java.lang.String _key209;
+        @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Double> _val210;
         for (int _i211 = 0; _i211 < _map208.size; ++_i211)
         {
           _key209 = iprot.readString();
           {
             org.apache.thrift.protocol.TMap _map212 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.DOUBLE, iprot.readI32());
-            _val210 = new HashMap<GlobalStreamId,Double>(2*_map212.size);
-            GlobalStreamId _key213;
+            _val210 = new java.util.HashMap<GlobalStreamId,java.lang.Double>(2*_map212.size);
+            @org.apache.thrift.annotation.Nullable GlobalStreamId _key213;
             double _val214;
             for (int _i215 = 0; _i215 < _map212.size; ++_i215)
             {
@@ -1335,16 +1311,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       struct.set_process_ms_avg_isSet(true);
       {
         org.apache.thrift.protocol.TMap _map216 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
-        struct.executed = new HashMap<String,Map<GlobalStreamId,Long>>(2*_map216.size);
-        String _key217;
-        Map<GlobalStreamId,Long> _val218;
+        struct.executed = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Long>>(2*_map216.size);
+        @org.apache.thrift.annotation.Nullable java.lang.String _key217;
+        @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Long> _val218;
         for (int _i219 = 0; _i219 < _map216.size; ++_i219)
         {
           _key217 = iprot.readString();
           {
             org.apache.thrift.protocol.TMap _map220 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.I64, iprot.readI32());
-            _val218 = new HashMap<GlobalStreamId,Long>(2*_map220.size);
-            GlobalStreamId _key221;
+            _val218 = new java.util.HashMap<GlobalStreamId,java.lang.Long>(2*_map220.size);
+            @org.apache.thrift.annotation.Nullable GlobalStreamId _key221;
             long _val222;
             for (int _i223 = 0; _i223 < _map220.size; ++_i223)
             {
@@ -1360,16 +1336,16 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
       struct.set_executed_isSet(true);
       {
         org.apache.thrift.protocol.TMap _map224 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
-        struct.execute_ms_avg = new HashMap<String,Map<GlobalStreamId,Double>>(2*_map224.size);
-        String _key225;
-        Map<GlobalStreamId,Double> _val226;
+        struct.execute_ms_avg = new java.util.HashMap<java.lang.String,java.util.Map<GlobalStreamId,java.lang.Double>>(2*_map224.size);
+        @org.apache.thrift.annotation.Nullable java.lang.String _key225;
+        @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,java.lang.Double> _val226;
         for (int _i227 = 0; _i227 < _map224.size; ++_i227)
         {
           _key225 = iprot.readString();
           {
             org.apache.thrift.protocol.TMap _map228 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.DOUBLE, iprot.readI32());
-            _val226 = new HashMap<GlobalStreamId,Double>(2*_map228.size);
-            GlobalStreamId _key229;
+            _val226 = new java.util.HashMap<GlobalStreamId,java.lang.Double>(2*_map228.size);
+            @org.apache.thrift.annotation.Nullable GlobalStreamId _key229;
             double _val230;
             for (int _i231 = 0; _i231 < _map228.size; ++_i231)
             {
@@ -1386,5 +1362,8 @@ public class BoltStats implements org.apache.thrift.TBase<BoltStats, BoltStats._
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/ClusterSummary.java b/storm-core/src/jvm/org/apache/storm/generated/ClusterSummary.java
index 8adc3f5..1063943 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/ClusterSummary.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/ClusterSummary.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, ClusterSummary._Fields>, java.io.Serializable, Cloneable, Comparable<ClusterSummary> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ClusterSummary");
 
@@ -60,16 +33,13 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
   private static final org.apache.thrift.protocol.TField TOPOLOGIES_FIELD_DESC = new org.apache.thrift.protocol.TField("topologies", org.apache.thrift.protocol.TType.LIST, (short)3);
   private static final org.apache.thrift.protocol.TField NIMBUSES_FIELD_DESC = new org.apache.thrift.protocol.TField("nimbuses", org.apache.thrift.protocol.TType.LIST, (short)4);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new ClusterSummaryStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new ClusterSummaryTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new ClusterSummaryStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ClusterSummaryTupleSchemeFactory();
 
-  private List<SupervisorSummary> supervisors; // required
+  private @org.apache.thrift.annotation.Nullable java.util.List<SupervisorSummary> supervisors; // required
   private int nimbus_uptime_secs; // optional
-  private List<TopologySummary> topologies; // required
-  private List<NimbusSummary> nimbuses; // required
+  private @org.apache.thrift.annotation.Nullable java.util.List<TopologySummary> topologies; // required
+  private @org.apache.thrift.annotation.Nullable java.util.List<NimbusSummary> nimbuses; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -78,10 +48,10 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     TOPOLOGIES((short)3, "topologies"),
     NIMBUSES((short)4, "nimbuses");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -89,6 +59,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // SUPERVISORS
@@ -110,21 +81,22 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -133,7 +105,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
@@ -142,9 +114,9 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
   private static final int __NIMBUS_UPTIME_SECS_ISSET_ID = 0;
   private byte __isset_bitfield = 0;
   private static final _Fields optionals[] = {_Fields.NIMBUS_UPTIME_SECS};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.SUPERVISORS, new org.apache.thrift.meta_data.FieldMetaData("supervisors", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, SupervisorSummary.class))));
@@ -156,7 +128,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     tmpMap.put(_Fields.NIMBUSES, new org.apache.thrift.meta_data.FieldMetaData("nimbuses", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, NimbusSummary.class))));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ClusterSummary.class, metaDataMap);
   }
 
@@ -166,9 +138,9 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
   }
 
   public ClusterSummary(
-    List<SupervisorSummary> supervisors,
-    List<TopologySummary> topologies,
-    List<NimbusSummary> nimbuses)
+    java.util.List<SupervisorSummary> supervisors,
+    java.util.List<TopologySummary> topologies,
+    java.util.List<NimbusSummary> nimbuses)
   {
     this();
     this.supervisors = supervisors;
@@ -182,7 +154,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
   public ClusterSummary(ClusterSummary other) {
     __isset_bitfield = other.__isset_bitfield;
     if (other.is_set_supervisors()) {
-      List<SupervisorSummary> __this__supervisors = new ArrayList<SupervisorSummary>(other.supervisors.size());
+      java.util.List<SupervisorSummary> __this__supervisors = new java.util.ArrayList<SupervisorSummary>(other.supervisors.size());
       for (SupervisorSummary other_element : other.supervisors) {
         __this__supervisors.add(new SupervisorSummary(other_element));
       }
@@ -190,14 +162,14 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     }
     this.nimbus_uptime_secs = other.nimbus_uptime_secs;
     if (other.is_set_topologies()) {
-      List<TopologySummary> __this__topologies = new ArrayList<TopologySummary>(other.topologies.size());
+      java.util.List<TopologySummary> __this__topologies = new java.util.ArrayList<TopologySummary>(other.topologies.size());
       for (TopologySummary other_element : other.topologies) {
         __this__topologies.add(new TopologySummary(other_element));
       }
       this.topologies = __this__topologies;
     }
     if (other.is_set_nimbuses()) {
-      List<NimbusSummary> __this__nimbuses = new ArrayList<NimbusSummary>(other.nimbuses.size());
+      java.util.List<NimbusSummary> __this__nimbuses = new java.util.ArrayList<NimbusSummary>(other.nimbuses.size());
       for (NimbusSummary other_element : other.nimbuses) {
         __this__nimbuses.add(new NimbusSummary(other_element));
       }
@@ -222,22 +194,24 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     return (this.supervisors == null) ? 0 : this.supervisors.size();
   }
 
+  @org.apache.thrift.annotation.Nullable
   public java.util.Iterator<SupervisorSummary> get_supervisors_iterator() {
     return (this.supervisors == null) ? null : this.supervisors.iterator();
   }
 
   public void add_to_supervisors(SupervisorSummary elem) {
     if (this.supervisors == null) {
-      this.supervisors = new ArrayList<SupervisorSummary>();
+      this.supervisors = new java.util.ArrayList<SupervisorSummary>();
     }
     this.supervisors.add(elem);
   }
 
-  public List<SupervisorSummary> get_supervisors() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.List<SupervisorSummary> get_supervisors() {
     return this.supervisors;
   }
 
-  public void set_supervisors(List<SupervisorSummary> supervisors) {
+  public void set_supervisors(@org.apache.thrift.annotation.Nullable java.util.List<SupervisorSummary> supervisors) {
     this.supervisors = supervisors;
   }
 
@@ -266,38 +240,40 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
   }
 
   public void unset_nimbus_uptime_secs() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __NIMBUS_UPTIME_SECS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __NIMBUS_UPTIME_SECS_ISSET_ID);
   }
 
   /** Returns true if field nimbus_uptime_secs is set (has been assigned a value) and false otherwise */
   public boolean is_set_nimbus_uptime_secs() {
-    return EncodingUtils.testBit(__isset_bitfield, __NIMBUS_UPTIME_SECS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __NIMBUS_UPTIME_SECS_ISSET_ID);
   }
 
   public void set_nimbus_uptime_secs_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __NIMBUS_UPTIME_SECS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __NIMBUS_UPTIME_SECS_ISSET_ID, value);
   }
 
   public int get_topologies_size() {
     return (this.topologies == null) ? 0 : this.topologies.size();
   }
 
+  @org.apache.thrift.annotation.Nullable
   public java.util.Iterator<TopologySummary> get_topologies_iterator() {
     return (this.topologies == null) ? null : this.topologies.iterator();
   }
 
   public void add_to_topologies(TopologySummary elem) {
     if (this.topologies == null) {
-      this.topologies = new ArrayList<TopologySummary>();
+      this.topologies = new java.util.ArrayList<TopologySummary>();
     }
     this.topologies.add(elem);
   }
 
-  public List<TopologySummary> get_topologies() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.List<TopologySummary> get_topologies() {
     return this.topologies;
   }
 
-  public void set_topologies(List<TopologySummary> topologies) {
+  public void set_topologies(@org.apache.thrift.annotation.Nullable java.util.List<TopologySummary> topologies) {
     this.topologies = topologies;
   }
 
@@ -320,22 +296,24 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     return (this.nimbuses == null) ? 0 : this.nimbuses.size();
   }
 
+  @org.apache.thrift.annotation.Nullable
   public java.util.Iterator<NimbusSummary> get_nimbuses_iterator() {
     return (this.nimbuses == null) ? null : this.nimbuses.iterator();
   }
 
   public void add_to_nimbuses(NimbusSummary elem) {
     if (this.nimbuses == null) {
-      this.nimbuses = new ArrayList<NimbusSummary>();
+      this.nimbuses = new java.util.ArrayList<NimbusSummary>();
     }
     this.nimbuses.add(elem);
   }
 
-  public List<NimbusSummary> get_nimbuses() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.List<NimbusSummary> get_nimbuses() {
     return this.nimbuses;
   }
 
-  public void set_nimbuses(List<NimbusSummary> nimbuses) {
+  public void set_nimbuses(@org.apache.thrift.annotation.Nullable java.util.List<NimbusSummary> nimbuses) {
     this.nimbuses = nimbuses;
   }
 
@@ -354,13 +332,13 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case SUPERVISORS:
       if (value == null) {
         unset_supervisors();
       } else {
-        set_supervisors((List<SupervisorSummary>)value);
+        set_supervisors((java.util.List<SupervisorSummary>)value);
       }
       break;
 
@@ -368,7 +346,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
       if (value == null) {
         unset_nimbus_uptime_secs();
       } else {
-        set_nimbus_uptime_secs((Integer)value);
+        set_nimbus_uptime_secs((java.lang.Integer)value);
       }
       break;
 
@@ -376,7 +354,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
       if (value == null) {
         unset_topologies();
       } else {
-        set_topologies((List<TopologySummary>)value);
+        set_topologies((java.util.List<TopologySummary>)value);
       }
       break;
 
@@ -384,14 +362,15 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
       if (value == null) {
         unset_nimbuses();
       } else {
-        set_nimbuses((List<NimbusSummary>)value);
+        set_nimbuses((java.util.List<NimbusSummary>)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case SUPERVISORS:
       return get_supervisors();
@@ -406,13 +385,13 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
       return get_nimbuses();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -425,11 +404,11 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     case NIMBUSES:
       return is_set_nimbuses();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof ClusterSummary)
@@ -440,6 +419,8 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
   public boolean equals(ClusterSummary that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_supervisors = true && this.is_set_supervisors();
     boolean that_present_supervisors = true && that.is_set_supervisors();
@@ -482,29 +463,25 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_supervisors = true && (is_set_supervisors());
-    list.add(present_supervisors);
-    if (present_supervisors)
-      list.add(supervisors);
+    hashCode = hashCode * 8191 + ((is_set_supervisors()) ? 131071 : 524287);
+    if (is_set_supervisors())
+      hashCode = hashCode * 8191 + supervisors.hashCode();
 
-    boolean present_nimbus_uptime_secs = true && (is_set_nimbus_uptime_secs());
-    list.add(present_nimbus_uptime_secs);
-    if (present_nimbus_uptime_secs)
-      list.add(nimbus_uptime_secs);
+    hashCode = hashCode * 8191 + ((is_set_nimbus_uptime_secs()) ? 131071 : 524287);
+    if (is_set_nimbus_uptime_secs())
+      hashCode = hashCode * 8191 + nimbus_uptime_secs;
 
-    boolean present_topologies = true && (is_set_topologies());
-    list.add(present_topologies);
-    if (present_topologies)
-      list.add(topologies);
+    hashCode = hashCode * 8191 + ((is_set_topologies()) ? 131071 : 524287);
+    if (is_set_topologies())
+      hashCode = hashCode * 8191 + topologies.hashCode();
 
-    boolean present_nimbuses = true && (is_set_nimbuses());
-    list.add(present_nimbuses);
-    if (present_nimbuses)
-      list.add(nimbuses);
+    hashCode = hashCode * 8191 + ((is_set_nimbuses()) ? 131071 : 524287);
+    if (is_set_nimbuses())
+      hashCode = hashCode * 8191 + nimbuses.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -515,7 +492,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_supervisors()).compareTo(other.is_set_supervisors());
+    lastComparison = java.lang.Boolean.valueOf(is_set_supervisors()).compareTo(other.is_set_supervisors());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -525,7 +502,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_nimbus_uptime_secs()).compareTo(other.is_set_nimbus_uptime_secs());
+    lastComparison = java.lang.Boolean.valueOf(is_set_nimbus_uptime_secs()).compareTo(other.is_set_nimbus_uptime_secs());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -535,7 +512,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_topologies()).compareTo(other.is_set_topologies());
+    lastComparison = java.lang.Boolean.valueOf(is_set_topologies()).compareTo(other.is_set_topologies());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -545,7 +522,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_nimbuses()).compareTo(other.is_set_nimbuses());
+    lastComparison = java.lang.Boolean.valueOf(is_set_nimbuses()).compareTo(other.is_set_nimbuses());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -558,21 +535,22 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("ClusterSummary(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("ClusterSummary(");
     boolean first = true;
 
     sb.append("supervisors:");
@@ -633,7 +611,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
       __isset_bitfield = 0;
@@ -643,13 +621,13 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     }
   }
 
-  private static class ClusterSummaryStandardSchemeFactory implements SchemeFactory {
+  private static class ClusterSummaryStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ClusterSummaryStandardScheme getScheme() {
       return new ClusterSummaryStandardScheme();
     }
   }
 
-  private static class ClusterSummaryStandardScheme extends StandardScheme<ClusterSummary> {
+  private static class ClusterSummaryStandardScheme extends org.apache.thrift.scheme.StandardScheme<ClusterSummary> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, ClusterSummary struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -665,8 +643,8 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list108 = iprot.readListBegin();
-                struct.supervisors = new ArrayList<SupervisorSummary>(_list108.size);
-                SupervisorSummary _elem109;
+                struct.supervisors = new java.util.ArrayList<SupervisorSummary>(_list108.size);
+                @org.apache.thrift.annotation.Nullable SupervisorSummary _elem109;
                 for (int _i110 = 0; _i110 < _list108.size; ++_i110)
                 {
                   _elem109 = new SupervisorSummary();
@@ -692,8 +670,8 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list111 = iprot.readListBegin();
-                struct.topologies = new ArrayList<TopologySummary>(_list111.size);
-                TopologySummary _elem112;
+                struct.topologies = new java.util.ArrayList<TopologySummary>(_list111.size);
+                @org.apache.thrift.annotation.Nullable TopologySummary _elem112;
                 for (int _i113 = 0; _i113 < _list111.size; ++_i113)
                 {
                   _elem112 = new TopologySummary();
@@ -711,8 +689,8 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list114 = iprot.readListBegin();
-                struct.nimbuses = new ArrayList<NimbusSummary>(_list114.size);
-                NimbusSummary _elem115;
+                struct.nimbuses = new java.util.ArrayList<NimbusSummary>(_list114.size);
+                @org.apache.thrift.annotation.Nullable NimbusSummary _elem115;
                 for (int _i116 = 0; _i116 < _list114.size; ++_i116)
                 {
                   _elem115 = new NimbusSummary();
@@ -786,17 +764,17 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
 
   }
 
-  private static class ClusterSummaryTupleSchemeFactory implements SchemeFactory {
+  private static class ClusterSummaryTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ClusterSummaryTupleScheme getScheme() {
       return new ClusterSummaryTupleScheme();
     }
   }
 
-  private static class ClusterSummaryTupleScheme extends TupleScheme<ClusterSummary> {
+  private static class ClusterSummaryTupleScheme extends org.apache.thrift.scheme.TupleScheme<ClusterSummary> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, ClusterSummary struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       {
         oprot.writeI32(struct.supervisors.size());
         for (SupervisorSummary _iter120 : struct.supervisors)
@@ -818,7 +796,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
           _iter122.write(oprot);
         }
       }
-      BitSet optionals = new BitSet();
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_nimbus_uptime_secs()) {
         optionals.set(0);
       }
@@ -830,11 +808,11 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, ClusterSummary struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       {
         org.apache.thrift.protocol.TList _list123 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.supervisors = new ArrayList<SupervisorSummary>(_list123.size);
-        SupervisorSummary _elem124;
+        struct.supervisors = new java.util.ArrayList<SupervisorSummary>(_list123.size);
+        @org.apache.thrift.annotation.Nullable SupervisorSummary _elem124;
         for (int _i125 = 0; _i125 < _list123.size; ++_i125)
         {
           _elem124 = new SupervisorSummary();
@@ -845,8 +823,8 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
       struct.set_supervisors_isSet(true);
       {
         org.apache.thrift.protocol.TList _list126 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.topologies = new ArrayList<TopologySummary>(_list126.size);
-        TopologySummary _elem127;
+        struct.topologies = new java.util.ArrayList<TopologySummary>(_list126.size);
+        @org.apache.thrift.annotation.Nullable TopologySummary _elem127;
         for (int _i128 = 0; _i128 < _list126.size; ++_i128)
         {
           _elem127 = new TopologySummary();
@@ -857,8 +835,8 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
       struct.set_topologies_isSet(true);
       {
         org.apache.thrift.protocol.TList _list129 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.nimbuses = new ArrayList<NimbusSummary>(_list129.size);
-        NimbusSummary _elem130;
+        struct.nimbuses = new java.util.ArrayList<NimbusSummary>(_list129.size);
+        @org.apache.thrift.annotation.Nullable NimbusSummary _elem130;
         for (int _i131 = 0; _i131 < _list129.size; ++_i131)
         {
           _elem130 = new NimbusSummary();
@@ -867,7 +845,7 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
         }
       }
       struct.set_nimbuses_isSet(true);
-      BitSet incoming = iprot.readBitSet(1);
+      java.util.BitSet incoming = iprot.readBitSet(1);
       if (incoming.get(0)) {
         struct.nimbus_uptime_secs = iprot.readI32();
         struct.set_nimbus_uptime_secs_isSet(true);
@@ -875,5 +853,8 @@ public class ClusterSummary implements org.apache.thrift.TBase<ClusterSummary, C
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/ClusterWorkerHeartbeat.java b/storm-core/src/jvm/org/apache/storm/generated/ClusterWorkerHeartbeat.java
index d974f1d..ba40e38 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/ClusterWorkerHeartbeat.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/ClusterWorkerHeartbeat.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWorkerHeartbeat, ClusterWorkerHeartbeat._Fields>, java.io.Serializable, Cloneable, Comparable<ClusterWorkerHeartbeat> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ClusterWorkerHeartbeat");
 
@@ -60,14 +33,11 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
   private static final org.apache.thrift.protocol.TField TIME_SECS_FIELD_DESC = new org.apache.thrift.protocol.TField("time_secs", org.apache.thrift.protocol.TType.I32, (short)3);
   private static final org.apache.thrift.protocol.TField UPTIME_SECS_FIELD_DESC = new org.apache.thrift.protocol.TField("uptime_secs", org.apache.thrift.protocol.TType.I32, (short)4);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new ClusterWorkerHeartbeatStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new ClusterWorkerHeartbeatTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new ClusterWorkerHeartbeatStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ClusterWorkerHeartbeatTupleSchemeFactory();
 
-  private String storm_id; // required
-  private Map<ExecutorInfo,ExecutorStats> executor_stats; // required
+  private @org.apache.thrift.annotation.Nullable java.lang.String storm_id; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<ExecutorInfo,ExecutorStats> executor_stats; // required
   private int time_secs; // required
   private int uptime_secs; // required
 
@@ -78,10 +48,10 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
     TIME_SECS((short)3, "time_secs"),
     UPTIME_SECS((short)4, "uptime_secs");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -89,6 +59,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // STORM_ID
@@ -110,21 +81,22 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -133,7 +105,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
@@ -142,9 +114,9 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
   private static final int __TIME_SECS_ISSET_ID = 0;
   private static final int __UPTIME_SECS_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.STORM_ID, new org.apache.thrift.meta_data.FieldMetaData("storm_id", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.EXECUTOR_STATS, new org.apache.thrift.meta_data.FieldMetaData("executor_stats", org.apache.thrift.TFieldRequirementType.REQUIRED, 
@@ -155,7 +127,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
     tmpMap.put(_Fields.UPTIME_SECS, new org.apache.thrift.meta_data.FieldMetaData("uptime_secs", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ClusterWorkerHeartbeat.class, metaDataMap);
   }
 
@@ -163,8 +135,8 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
   }
 
   public ClusterWorkerHeartbeat(
-    String storm_id,
-    Map<ExecutorInfo,ExecutorStats> executor_stats,
+    java.lang.String storm_id,
+    java.util.Map<ExecutorInfo,ExecutorStats> executor_stats,
     int time_secs,
     int uptime_secs)
   {
@@ -186,8 +158,8 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
       this.storm_id = other.storm_id;
     }
     if (other.is_set_executor_stats()) {
-      Map<ExecutorInfo,ExecutorStats> __this__executor_stats = new HashMap<ExecutorInfo,ExecutorStats>(other.executor_stats.size());
-      for (Map.Entry<ExecutorInfo, ExecutorStats> other_element : other.executor_stats.entrySet()) {
+      java.util.Map<ExecutorInfo,ExecutorStats> __this__executor_stats = new java.util.HashMap<ExecutorInfo,ExecutorStats>(other.executor_stats.size());
+      for (java.util.Map.Entry<ExecutorInfo, ExecutorStats> other_element : other.executor_stats.entrySet()) {
 
         ExecutorInfo other_element_key = other_element.getKey();
         ExecutorStats other_element_value = other_element.getValue();
@@ -218,11 +190,12 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
     this.uptime_secs = 0;
   }
 
-  public String get_storm_id() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_storm_id() {
     return this.storm_id;
   }
 
-  public void set_storm_id(String storm_id) {
+  public void set_storm_id(@org.apache.thrift.annotation.Nullable java.lang.String storm_id) {
     this.storm_id = storm_id;
   }
 
@@ -247,16 +220,17 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
 
   public void put_to_executor_stats(ExecutorInfo key, ExecutorStats val) {
     if (this.executor_stats == null) {
-      this.executor_stats = new HashMap<ExecutorInfo,ExecutorStats>();
+      this.executor_stats = new java.util.HashMap<ExecutorInfo,ExecutorStats>();
     }
     this.executor_stats.put(key, val);
   }
 
-  public Map<ExecutorInfo,ExecutorStats> get_executor_stats() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<ExecutorInfo,ExecutorStats> get_executor_stats() {
     return this.executor_stats;
   }
 
-  public void set_executor_stats(Map<ExecutorInfo,ExecutorStats> executor_stats) {
+  public void set_executor_stats(@org.apache.thrift.annotation.Nullable java.util.Map<ExecutorInfo,ExecutorStats> executor_stats) {
     this.executor_stats = executor_stats;
   }
 
@@ -285,16 +259,16 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
   }
 
   public void unset_time_secs() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TIME_SECS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __TIME_SECS_ISSET_ID);
   }
 
   /** Returns true if field time_secs is set (has been assigned a value) and false otherwise */
   public boolean is_set_time_secs() {
-    return EncodingUtils.testBit(__isset_bitfield, __TIME_SECS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __TIME_SECS_ISSET_ID);
   }
 
   public void set_time_secs_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TIME_SECS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __TIME_SECS_ISSET_ID, value);
   }
 
   public int get_uptime_secs() {
@@ -307,25 +281,25 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
   }
 
   public void unset_uptime_secs() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UPTIME_SECS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __UPTIME_SECS_ISSET_ID);
   }
 
   /** Returns true if field uptime_secs is set (has been assigned a value) and false otherwise */
   public boolean is_set_uptime_secs() {
-    return EncodingUtils.testBit(__isset_bitfield, __UPTIME_SECS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __UPTIME_SECS_ISSET_ID);
   }
 
   public void set_uptime_secs_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UPTIME_SECS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __UPTIME_SECS_ISSET_ID, value);
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case STORM_ID:
       if (value == null) {
         unset_storm_id();
       } else {
-        set_storm_id((String)value);
+        set_storm_id((java.lang.String)value);
       }
       break;
 
@@ -333,7 +307,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
       if (value == null) {
         unset_executor_stats();
       } else {
-        set_executor_stats((Map<ExecutorInfo,ExecutorStats>)value);
+        set_executor_stats((java.util.Map<ExecutorInfo,ExecutorStats>)value);
       }
       break;
 
@@ -341,7 +315,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
       if (value == null) {
         unset_time_secs();
       } else {
-        set_time_secs((Integer)value);
+        set_time_secs((java.lang.Integer)value);
       }
       break;
 
@@ -349,14 +323,15 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
       if (value == null) {
         unset_uptime_secs();
       } else {
-        set_uptime_secs((Integer)value);
+        set_uptime_secs((java.lang.Integer)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case STORM_ID:
       return get_storm_id();
@@ -371,13 +346,13 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
       return get_uptime_secs();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -390,11 +365,11 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
     case UPTIME_SECS:
       return is_set_uptime_secs();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof ClusterWorkerHeartbeat)
@@ -405,6 +380,8 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
   public boolean equals(ClusterWorkerHeartbeat that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_storm_id = true && this.is_set_storm_id();
     boolean that_present_storm_id = true && that.is_set_storm_id();
@@ -447,29 +424,21 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_storm_id = true && (is_set_storm_id());
-    list.add(present_storm_id);
-    if (present_storm_id)
-      list.add(storm_id);
+    hashCode = hashCode * 8191 + ((is_set_storm_id()) ? 131071 : 524287);
+    if (is_set_storm_id())
+      hashCode = hashCode * 8191 + storm_id.hashCode();
 
-    boolean present_executor_stats = true && (is_set_executor_stats());
-    list.add(present_executor_stats);
-    if (present_executor_stats)
-      list.add(executor_stats);
+    hashCode = hashCode * 8191 + ((is_set_executor_stats()) ? 131071 : 524287);
+    if (is_set_executor_stats())
+      hashCode = hashCode * 8191 + executor_stats.hashCode();
 
-    boolean present_time_secs = true;
-    list.add(present_time_secs);
-    if (present_time_secs)
-      list.add(time_secs);
+    hashCode = hashCode * 8191 + time_secs;
 
-    boolean present_uptime_secs = true;
-    list.add(present_uptime_secs);
-    if (present_uptime_secs)
-      list.add(uptime_secs);
+    hashCode = hashCode * 8191 + uptime_secs;
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -480,7 +449,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_storm_id()).compareTo(other.is_set_storm_id());
+    lastComparison = java.lang.Boolean.valueOf(is_set_storm_id()).compareTo(other.is_set_storm_id());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -490,7 +459,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_executor_stats()).compareTo(other.is_set_executor_stats());
+    lastComparison = java.lang.Boolean.valueOf(is_set_executor_stats()).compareTo(other.is_set_executor_stats());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -500,7 +469,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_time_secs()).compareTo(other.is_set_time_secs());
+    lastComparison = java.lang.Boolean.valueOf(is_set_time_secs()).compareTo(other.is_set_time_secs());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -510,7 +479,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_uptime_secs()).compareTo(other.is_set_uptime_secs());
+    lastComparison = java.lang.Boolean.valueOf(is_set_uptime_secs()).compareTo(other.is_set_uptime_secs());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -523,21 +492,22 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("ClusterWorkerHeartbeat(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("ClusterWorkerHeartbeat(");
     boolean first = true;
 
     sb.append("storm_id:");
@@ -596,7 +566,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
       __isset_bitfield = 0;
@@ -606,13 +576,13 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
     }
   }
 
-  private static class ClusterWorkerHeartbeatStandardSchemeFactory implements SchemeFactory {
+  private static class ClusterWorkerHeartbeatStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ClusterWorkerHeartbeatStandardScheme getScheme() {
       return new ClusterWorkerHeartbeatStandardScheme();
     }
   }
 
-  private static class ClusterWorkerHeartbeatStandardScheme extends StandardScheme<ClusterWorkerHeartbeat> {
+  private static class ClusterWorkerHeartbeatStandardScheme extends org.apache.thrift.scheme.StandardScheme<ClusterWorkerHeartbeat> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, ClusterWorkerHeartbeat struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -636,9 +606,9 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map694 = iprot.readMapBegin();
-                struct.executor_stats = new HashMap<ExecutorInfo,ExecutorStats>(2*_map694.size);
-                ExecutorInfo _key695;
-                ExecutorStats _val696;
+                struct.executor_stats = new java.util.HashMap<ExecutorInfo,ExecutorStats>(2*_map694.size);
+                @org.apache.thrift.annotation.Nullable ExecutorInfo _key695;
+                @org.apache.thrift.annotation.Nullable ExecutorStats _val696;
                 for (int _i697 = 0; _i697 < _map694.size; ++_i697)
                 {
                   _key695 = new ExecutorInfo();
@@ -692,7 +662,7 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
         oprot.writeFieldBegin(EXECUTOR_STATS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.STRUCT, struct.executor_stats.size()));
-          for (Map.Entry<ExecutorInfo, ExecutorStats> _iter698 : struct.executor_stats.entrySet())
+          for (java.util.Map.Entry<ExecutorInfo, ExecutorStats> _iter698 : struct.executor_stats.entrySet())
           {
             _iter698.getKey().write(oprot);
             _iter698.getValue().write(oprot);
@@ -713,21 +683,21 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
 
   }
 
-  private static class ClusterWorkerHeartbeatTupleSchemeFactory implements SchemeFactory {
+  private static class ClusterWorkerHeartbeatTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ClusterWorkerHeartbeatTupleScheme getScheme() {
       return new ClusterWorkerHeartbeatTupleScheme();
     }
   }
 
-  private static class ClusterWorkerHeartbeatTupleScheme extends TupleScheme<ClusterWorkerHeartbeat> {
+  private static class ClusterWorkerHeartbeatTupleScheme extends org.apache.thrift.scheme.TupleScheme<ClusterWorkerHeartbeat> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, ClusterWorkerHeartbeat struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeString(struct.storm_id);
       {
         oprot.writeI32(struct.executor_stats.size());
-        for (Map.Entry<ExecutorInfo, ExecutorStats> _iter699 : struct.executor_stats.entrySet())
+        for (java.util.Map.Entry<ExecutorInfo, ExecutorStats> _iter699 : struct.executor_stats.entrySet())
         {
           _iter699.getKey().write(oprot);
           _iter699.getValue().write(oprot);
@@ -739,14 +709,14 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, ClusterWorkerHeartbeat struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.storm_id = iprot.readString();
       struct.set_storm_id_isSet(true);
       {
         org.apache.thrift.protocol.TMap _map700 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.executor_stats = new HashMap<ExecutorInfo,ExecutorStats>(2*_map700.size);
-        ExecutorInfo _key701;
-        ExecutorStats _val702;
+        struct.executor_stats = new java.util.HashMap<ExecutorInfo,ExecutorStats>(2*_map700.size);
+        @org.apache.thrift.annotation.Nullable ExecutorInfo _key701;
+        @org.apache.thrift.annotation.Nullable ExecutorStats _val702;
         for (int _i703 = 0; _i703 < _map700.size; ++_i703)
         {
           _key701 = new ExecutorInfo();
@@ -764,5 +734,8 @@ public class ClusterWorkerHeartbeat implements org.apache.thrift.TBase<ClusterWo
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/CommonAggregateStats.java b/storm-core/src/jvm/org/apache/storm/generated/CommonAggregateStats.java
index ba35319..2d3733f 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/CommonAggregateStats.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/CommonAggregateStats.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggregateStats, CommonAggregateStats._Fields>, java.io.Serializable, Cloneable, Comparable<CommonAggregateStats> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CommonAggregateStats");
 
@@ -63,11 +36,8 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   private static final org.apache.thrift.protocol.TField FAILED_FIELD_DESC = new org.apache.thrift.protocol.TField("failed", org.apache.thrift.protocol.TType.I64, (short)6);
   private static final org.apache.thrift.protocol.TField RESOURCES_MAP_FIELD_DESC = new org.apache.thrift.protocol.TField("resources_map", org.apache.thrift.protocol.TType.MAP, (short)7);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new CommonAggregateStatsStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new CommonAggregateStatsTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new CommonAggregateStatsStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new CommonAggregateStatsTupleSchemeFactory();
 
   private int num_executors; // optional
   private int num_tasks; // optional
@@ -75,7 +45,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   private long transferred; // optional
   private long acked; // optional
   private long failed; // optional
-  private Map<String,Double> resources_map; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.Double> resources_map; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -87,10 +57,10 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     FAILED((short)6, "failed"),
     RESOURCES_MAP((short)7, "resources_map");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -98,6 +68,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // NUM_EXECUTORS
@@ -125,21 +96,22 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -148,7 +120,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
@@ -162,9 +134,9 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   private static final int __FAILED_ISSET_ID = 5;
   private byte __isset_bitfield = 0;
   private static final _Fields optionals[] = {_Fields.NUM_EXECUTORS,_Fields.NUM_TASKS,_Fields.EMITTED,_Fields.TRANSFERRED,_Fields.ACKED,_Fields.FAILED,_Fields.RESOURCES_MAP};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.NUM_EXECUTORS, new org.apache.thrift.meta_data.FieldMetaData("num_executors", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
     tmpMap.put(_Fields.NUM_TASKS, new org.apache.thrift.meta_data.FieldMetaData("num_tasks", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -181,7 +153,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
         new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE))));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(CommonAggregateStats.class, metaDataMap);
   }
 
@@ -200,7 +172,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     this.acked = other.acked;
     this.failed = other.failed;
     if (other.is_set_resources_map()) {
-      Map<String,Double> __this__resources_map = new HashMap<String,Double>(other.resources_map);
+      java.util.Map<java.lang.String,java.lang.Double> __this__resources_map = new java.util.HashMap<java.lang.String,java.lang.Double>(other.resources_map);
       this.resources_map = __this__resources_map;
     }
   }
@@ -236,16 +208,16 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   }
 
   public void unset_num_executors() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID);
   }
 
   /** Returns true if field num_executors is set (has been assigned a value) and false otherwise */
   public boolean is_set_num_executors() {
-    return EncodingUtils.testBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID);
   }
 
   public void set_num_executors_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID, value);
   }
 
   public int get_num_tasks() {
@@ -258,16 +230,16 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   }
 
   public void unset_num_tasks() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __NUM_TASKS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __NUM_TASKS_ISSET_ID);
   }
 
   /** Returns true if field num_tasks is set (has been assigned a value) and false otherwise */
   public boolean is_set_num_tasks() {
-    return EncodingUtils.testBit(__isset_bitfield, __NUM_TASKS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __NUM_TASKS_ISSET_ID);
   }
 
   public void set_num_tasks_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __NUM_TASKS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __NUM_TASKS_ISSET_ID, value);
   }
 
   public long get_emitted() {
@@ -280,16 +252,16 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   }
 
   public void unset_emitted() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __EMITTED_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __EMITTED_ISSET_ID);
   }
 
   /** Returns true if field emitted is set (has been assigned a value) and false otherwise */
   public boolean is_set_emitted() {
-    return EncodingUtils.testBit(__isset_bitfield, __EMITTED_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __EMITTED_ISSET_ID);
   }
 
   public void set_emitted_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __EMITTED_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __EMITTED_ISSET_ID, value);
   }
 
   public long get_transferred() {
@@ -302,16 +274,16 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   }
 
   public void unset_transferred() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TRANSFERRED_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __TRANSFERRED_ISSET_ID);
   }
 
   /** Returns true if field transferred is set (has been assigned a value) and false otherwise */
   public boolean is_set_transferred() {
-    return EncodingUtils.testBit(__isset_bitfield, __TRANSFERRED_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __TRANSFERRED_ISSET_ID);
   }
 
   public void set_transferred_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TRANSFERRED_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __TRANSFERRED_ISSET_ID, value);
   }
 
   public long get_acked() {
@@ -324,16 +296,16 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   }
 
   public void unset_acked() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ACKED_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ACKED_ISSET_ID);
   }
 
   /** Returns true if field acked is set (has been assigned a value) and false otherwise */
   public boolean is_set_acked() {
-    return EncodingUtils.testBit(__isset_bitfield, __ACKED_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ACKED_ISSET_ID);
   }
 
   public void set_acked_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ACKED_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ACKED_ISSET_ID, value);
   }
 
   public long get_failed() {
@@ -346,34 +318,35 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   }
 
   public void unset_failed() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __FAILED_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __FAILED_ISSET_ID);
   }
 
   /** Returns true if field failed is set (has been assigned a value) and false otherwise */
   public boolean is_set_failed() {
-    return EncodingUtils.testBit(__isset_bitfield, __FAILED_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __FAILED_ISSET_ID);
   }
 
   public void set_failed_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __FAILED_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __FAILED_ISSET_ID, value);
   }
 
   public int get_resources_map_size() {
     return (this.resources_map == null) ? 0 : this.resources_map.size();
   }
 
-  public void put_to_resources_map(String key, double val) {
+  public void put_to_resources_map(java.lang.String key, double val) {
     if (this.resources_map == null) {
-      this.resources_map = new HashMap<String,Double>();
+      this.resources_map = new java.util.HashMap<java.lang.String,java.lang.Double>();
     }
     this.resources_map.put(key, val);
   }
 
-  public Map<String,Double> get_resources_map() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.lang.Double> get_resources_map() {
     return this.resources_map;
   }
 
-  public void set_resources_map(Map<String,Double> resources_map) {
+  public void set_resources_map(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.Double> resources_map) {
     this.resources_map = resources_map;
   }
 
@@ -392,13 +365,13 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case NUM_EXECUTORS:
       if (value == null) {
         unset_num_executors();
       } else {
-        set_num_executors((Integer)value);
+        set_num_executors((java.lang.Integer)value);
       }
       break;
 
@@ -406,7 +379,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       if (value == null) {
         unset_num_tasks();
       } else {
-        set_num_tasks((Integer)value);
+        set_num_tasks((java.lang.Integer)value);
       }
       break;
 
@@ -414,7 +387,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       if (value == null) {
         unset_emitted();
       } else {
-        set_emitted((Long)value);
+        set_emitted((java.lang.Long)value);
       }
       break;
 
@@ -422,7 +395,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       if (value == null) {
         unset_transferred();
       } else {
-        set_transferred((Long)value);
+        set_transferred((java.lang.Long)value);
       }
       break;
 
@@ -430,7 +403,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       if (value == null) {
         unset_acked();
       } else {
-        set_acked((Long)value);
+        set_acked((java.lang.Long)value);
       }
       break;
 
@@ -438,7 +411,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       if (value == null) {
         unset_failed();
       } else {
-        set_failed((Long)value);
+        set_failed((java.lang.Long)value);
       }
       break;
 
@@ -446,14 +419,15 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       if (value == null) {
         unset_resources_map();
       } else {
-        set_resources_map((Map<String,Double>)value);
+        set_resources_map((java.util.Map<java.lang.String,java.lang.Double>)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case NUM_EXECUTORS:
       return get_num_executors();
@@ -477,13 +451,13 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       return get_resources_map();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -502,11 +476,11 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     case RESOURCES_MAP:
       return is_set_resources_map();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof CommonAggregateStats)
@@ -517,6 +491,8 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
   public boolean equals(CommonAggregateStats that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_num_executors = true && this.is_set_num_executors();
     boolean that_present_num_executors = true && that.is_set_num_executors();
@@ -586,44 +562,37 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
-
-    boolean present_num_executors = true && (is_set_num_executors());
-    list.add(present_num_executors);
-    if (present_num_executors)
-      list.add(num_executors);
-
-    boolean present_num_tasks = true && (is_set_num_tasks());
-    list.add(present_num_tasks);
-    if (present_num_tasks)
-      list.add(num_tasks);
-
-    boolean present_emitted = true && (is_set_emitted());
-    list.add(present_emitted);
-    if (present_emitted)
-      list.add(emitted);
-
-    boolean present_transferred = true && (is_set_transferred());
-    list.add(present_transferred);
-    if (present_transferred)
-      list.add(transferred);
-
-    boolean present_acked = true && (is_set_acked());
-    list.add(present_acked);
-    if (present_acked)
-      list.add(acked);
-
-    boolean present_failed = true && (is_set_failed());
-    list.add(present_failed);
-    if (present_failed)
-      list.add(failed);
-
-    boolean present_resources_map = true && (is_set_resources_map());
-    list.add(present_resources_map);
-    if (present_resources_map)
-      list.add(resources_map);
-
-    return list.hashCode();
+    int hashCode = 1;
+
+    hashCode = hashCode * 8191 + ((is_set_num_executors()) ? 131071 : 524287);
+    if (is_set_num_executors())
+      hashCode = hashCode * 8191 + num_executors;
+
+    hashCode = hashCode * 8191 + ((is_set_num_tasks()) ? 131071 : 524287);
+    if (is_set_num_tasks())
+      hashCode = hashCode * 8191 + num_tasks;
+
+    hashCode = hashCode * 8191 + ((is_set_emitted()) ? 131071 : 524287);
+    if (is_set_emitted())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(emitted);
+
+    hashCode = hashCode * 8191 + ((is_set_transferred()) ? 131071 : 524287);
+    if (is_set_transferred())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(transferred);
+
+    hashCode = hashCode * 8191 + ((is_set_acked()) ? 131071 : 524287);
+    if (is_set_acked())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(acked);
+
+    hashCode = hashCode * 8191 + ((is_set_failed()) ? 131071 : 524287);
+    if (is_set_failed())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(failed);
+
+    hashCode = hashCode * 8191 + ((is_set_resources_map()) ? 131071 : 524287);
+    if (is_set_resources_map())
+      hashCode = hashCode * 8191 + resources_map.hashCode();
+
+    return hashCode;
   }
 
   @Override
@@ -634,7 +603,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_num_executors()).compareTo(other.is_set_num_executors());
+    lastComparison = java.lang.Boolean.valueOf(is_set_num_executors()).compareTo(other.is_set_num_executors());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -644,7 +613,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_num_tasks()).compareTo(other.is_set_num_tasks());
+    lastComparison = java.lang.Boolean.valueOf(is_set_num_tasks()).compareTo(other.is_set_num_tasks());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -654,7 +623,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_emitted()).compareTo(other.is_set_emitted());
+    lastComparison = java.lang.Boolean.valueOf(is_set_emitted()).compareTo(other.is_set_emitted());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -664,7 +633,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_transferred()).compareTo(other.is_set_transferred());
+    lastComparison = java.lang.Boolean.valueOf(is_set_transferred()).compareTo(other.is_set_transferred());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -674,7 +643,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_acked()).compareTo(other.is_set_acked());
+    lastComparison = java.lang.Boolean.valueOf(is_set_acked()).compareTo(other.is_set_acked());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -684,7 +653,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_failed()).compareTo(other.is_set_failed());
+    lastComparison = java.lang.Boolean.valueOf(is_set_failed()).compareTo(other.is_set_failed());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -694,7 +663,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_resources_map()).compareTo(other.is_set_resources_map());
+    lastComparison = java.lang.Boolean.valueOf(is_set_resources_map()).compareTo(other.is_set_resources_map());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -707,21 +676,22 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("CommonAggregateStats(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("CommonAggregateStats(");
     boolean first = true;
 
     if (is_set_num_executors()) {
@@ -786,7 +756,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
       __isset_bitfield = 0;
@@ -796,13 +766,13 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     }
   }
 
-  private static class CommonAggregateStatsStandardSchemeFactory implements SchemeFactory {
+  private static class CommonAggregateStatsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public CommonAggregateStatsStandardScheme getScheme() {
       return new CommonAggregateStatsStandardScheme();
     }
   }
 
-  private static class CommonAggregateStatsStandardScheme extends StandardScheme<CommonAggregateStats> {
+  private static class CommonAggregateStatsStandardScheme extends org.apache.thrift.scheme.StandardScheme<CommonAggregateStats> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, CommonAggregateStats struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -866,8 +836,8 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map368 = iprot.readMapBegin();
-                struct.resources_map = new HashMap<String,Double>(2*_map368.size);
-                String _key369;
+                struct.resources_map = new java.util.HashMap<java.lang.String,java.lang.Double>(2*_map368.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key369;
                 double _val370;
                 for (int _i371 = 0; _i371 < _map368.size; ++_i371)
                 {
@@ -930,7 +900,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
           oprot.writeFieldBegin(RESOURCES_MAP_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.DOUBLE, struct.resources_map.size()));
-            for (Map.Entry<String, Double> _iter372 : struct.resources_map.entrySet())
+            for (java.util.Map.Entry<java.lang.String, java.lang.Double> _iter372 : struct.resources_map.entrySet())
             {
               oprot.writeString(_iter372.getKey());
               oprot.writeDouble(_iter372.getValue());
@@ -946,18 +916,18 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
 
   }
 
-  private static class CommonAggregateStatsTupleSchemeFactory implements SchemeFactory {
+  private static class CommonAggregateStatsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public CommonAggregateStatsTupleScheme getScheme() {
       return new CommonAggregateStatsTupleScheme();
     }
   }
 
-  private static class CommonAggregateStatsTupleScheme extends TupleScheme<CommonAggregateStats> {
+  private static class CommonAggregateStatsTupleScheme extends org.apache.thrift.scheme.TupleScheme<CommonAggregateStats> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, CommonAggregateStats struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
-      BitSet optionals = new BitSet();
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_num_executors()) {
         optionals.set(0);
       }
@@ -1001,7 +971,7 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       if (struct.is_set_resources_map()) {
         {
           oprot.writeI32(struct.resources_map.size());
-          for (Map.Entry<String, Double> _iter373 : struct.resources_map.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.lang.Double> _iter373 : struct.resources_map.entrySet())
           {
             oprot.writeString(_iter373.getKey());
             oprot.writeDouble(_iter373.getValue());
@@ -1012,8 +982,8 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, CommonAggregateStats struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(7);
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      java.util.BitSet incoming = iprot.readBitSet(7);
       if (incoming.get(0)) {
         struct.num_executors = iprot.readI32();
         struct.set_num_executors_isSet(true);
@@ -1041,8 +1011,8 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
       if (incoming.get(6)) {
         {
           org.apache.thrift.protocol.TMap _map374 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.DOUBLE, iprot.readI32());
-          struct.resources_map = new HashMap<String,Double>(2*_map374.size);
-          String _key375;
+          struct.resources_map = new java.util.HashMap<java.lang.String,java.lang.Double>(2*_map374.size);
+          @org.apache.thrift.annotation.Nullable java.lang.String _key375;
           double _val376;
           for (int _i377 = 0; _i377 < _map374.size; ++_i377)
           {
@@ -1056,5 +1026,8 @@ public class CommonAggregateStats implements org.apache.thrift.TBase<CommonAggre
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/ComponentAggregateStats.java b/storm-core/src/jvm/org/apache/storm/generated/ComponentAggregateStats.java
index 2c68331..ad483c1 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/ComponentAggregateStats.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/ComponentAggregateStats.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class ComponentAggregateStats implements org.apache.thrift.TBase<ComponentAggregateStats, ComponentAggregateStats._Fields>, java.io.Serializable, Cloneable, Comparable<ComponentAggregateStats> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComponentAggregateStats");
 
@@ -60,16 +33,13 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
   private static final org.apache.thrift.protocol.TField SPECIFIC_STATS_FIELD_DESC = new org.apache.thrift.protocol.TField("specific_stats", org.apache.thrift.protocol.TType.STRUCT, (short)3);
   private static final org.apache.thrift.protocol.TField LAST_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("last_error", org.apache.thrift.protocol.TType.STRUCT, (short)4);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new ComponentAggregateStatsStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new ComponentAggregateStatsTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new ComponentAggregateStatsStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ComponentAggregateStatsTupleSchemeFactory();
 
-  private ComponentType type; // optional
-  private CommonAggregateStats common_stats; // optional
-  private SpecificAggregateStats specific_stats; // optional
-  private ErrorInfo last_error; // optional
+  private @org.apache.thrift.annotation.Nullable ComponentType type; // optional
+  private @org.apache.thrift.annotation.Nullable CommonAggregateStats common_stats; // optional
+  private @org.apache.thrift.annotation.Nullable SpecificAggregateStats specific_stats; // optional
+  private @org.apache.thrift.annotation.Nullable ErrorInfo last_error; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -82,10 +52,10 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     SPECIFIC_STATS((short)3, "specific_stats"),
     LAST_ERROR((short)4, "last_error");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -93,6 +63,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // TYPE
@@ -114,21 +85,22 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -137,16 +109,16 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
   // isset id assignments
   private static final _Fields optionals[] = {_Fields.TYPE,_Fields.COMMON_STATS,_Fields.SPECIFIC_STATS,_Fields.LAST_ERROR};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ComponentType.class)));
     tmpMap.put(_Fields.COMMON_STATS, new org.apache.thrift.meta_data.FieldMetaData("common_stats", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -155,7 +127,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, SpecificAggregateStats.class)));
     tmpMap.put(_Fields.LAST_ERROR, new org.apache.thrift.meta_data.FieldMetaData("last_error", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ErrorInfo.class)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ComponentAggregateStats.class, metaDataMap);
   }
 
@@ -196,6 +168,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
    * 
    * @see ComponentType
    */
+  @org.apache.thrift.annotation.Nullable
   public ComponentType get_type() {
     return this.type;
   }
@@ -204,7 +177,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
    * 
    * @see ComponentType
    */
-  public void set_type(ComponentType type) {
+  public void set_type(@org.apache.thrift.annotation.Nullable ComponentType type) {
     this.type = type;
   }
 
@@ -223,11 +196,12 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     }
   }
 
+  @org.apache.thrift.annotation.Nullable
   public CommonAggregateStats get_common_stats() {
     return this.common_stats;
   }
 
-  public void set_common_stats(CommonAggregateStats common_stats) {
+  public void set_common_stats(@org.apache.thrift.annotation.Nullable CommonAggregateStats common_stats) {
     this.common_stats = common_stats;
   }
 
@@ -246,11 +220,12 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     }
   }
 
+  @org.apache.thrift.annotation.Nullable
   public SpecificAggregateStats get_specific_stats() {
     return this.specific_stats;
   }
 
-  public void set_specific_stats(SpecificAggregateStats specific_stats) {
+  public void set_specific_stats(@org.apache.thrift.annotation.Nullable SpecificAggregateStats specific_stats) {
     this.specific_stats = specific_stats;
   }
 
@@ -269,11 +244,12 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     }
   }
 
+  @org.apache.thrift.annotation.Nullable
   public ErrorInfo get_last_error() {
     return this.last_error;
   }
 
-  public void set_last_error(ErrorInfo last_error) {
+  public void set_last_error(@org.apache.thrift.annotation.Nullable ErrorInfo last_error) {
     this.last_error = last_error;
   }
 
@@ -292,7 +268,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case TYPE:
       if (value == null) {
@@ -329,7 +305,8 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case TYPE:
       return get_type();
@@ -344,13 +321,13 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
       return get_last_error();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -363,11 +340,11 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     case LAST_ERROR:
       return is_set_last_error();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof ComponentAggregateStats)
@@ -378,6 +355,8 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
   public boolean equals(ComponentAggregateStats that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_type = true && this.is_set_type();
     boolean that_present_type = true && that.is_set_type();
@@ -420,29 +399,25 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_type = true && (is_set_type());
-    list.add(present_type);
-    if (present_type)
-      list.add(type.getValue());
+    hashCode = hashCode * 8191 + ((is_set_type()) ? 131071 : 524287);
+    if (is_set_type())
+      hashCode = hashCode * 8191 + type.getValue();
 
-    boolean present_common_stats = true && (is_set_common_stats());
-    list.add(present_common_stats);
-    if (present_common_stats)
-      list.add(common_stats);
+    hashCode = hashCode * 8191 + ((is_set_common_stats()) ? 131071 : 524287);
+    if (is_set_common_stats())
+      hashCode = hashCode * 8191 + common_stats.hashCode();
 
-    boolean present_specific_stats = true && (is_set_specific_stats());
-    list.add(present_specific_stats);
-    if (present_specific_stats)
-      list.add(specific_stats);
+    hashCode = hashCode * 8191 + ((is_set_specific_stats()) ? 131071 : 524287);
+    if (is_set_specific_stats())
+      hashCode = hashCode * 8191 + specific_stats.hashCode();
 
-    boolean present_last_error = true && (is_set_last_error());
-    list.add(present_last_error);
-    if (present_last_error)
-      list.add(last_error);
+    hashCode = hashCode * 8191 + ((is_set_last_error()) ? 131071 : 524287);
+    if (is_set_last_error())
+      hashCode = hashCode * 8191 + last_error.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -453,7 +428,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_type()).compareTo(other.is_set_type());
+    lastComparison = java.lang.Boolean.valueOf(is_set_type()).compareTo(other.is_set_type());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -463,7 +438,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_common_stats()).compareTo(other.is_set_common_stats());
+    lastComparison = java.lang.Boolean.valueOf(is_set_common_stats()).compareTo(other.is_set_common_stats());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -473,7 +448,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_specific_stats()).compareTo(other.is_set_specific_stats());
+    lastComparison = java.lang.Boolean.valueOf(is_set_specific_stats()).compareTo(other.is_set_specific_stats());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -483,7 +458,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_last_error()).compareTo(other.is_set_last_error());
+    lastComparison = java.lang.Boolean.valueOf(is_set_last_error()).compareTo(other.is_set_last_error());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -496,21 +471,22 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("ComponentAggregateStats(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("ComponentAggregateStats(");
     boolean first = true;
 
     if (is_set_type()) {
@@ -575,7 +551,7 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
@@ -583,13 +559,13 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     }
   }
 
-  private static class ComponentAggregateStatsStandardSchemeFactory implements SchemeFactory {
+  private static class ComponentAggregateStatsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ComponentAggregateStatsStandardScheme getScheme() {
       return new ComponentAggregateStatsStandardScheme();
     }
   }
 
-  private static class ComponentAggregateStatsStandardScheme extends StandardScheme<ComponentAggregateStats> {
+  private static class ComponentAggregateStatsStandardScheme extends org.apache.thrift.scheme.StandardScheme<ComponentAggregateStats> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, ComponentAggregateStats struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -683,18 +659,18 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
 
   }
 
-  private static class ComponentAggregateStatsTupleSchemeFactory implements SchemeFactory {
+  private static class ComponentAggregateStatsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ComponentAggregateStatsTupleScheme getScheme() {
       return new ComponentAggregateStatsTupleScheme();
     }
   }
 
-  private static class ComponentAggregateStatsTupleScheme extends TupleScheme<ComponentAggregateStats> {
+  private static class ComponentAggregateStatsTupleScheme extends org.apache.thrift.scheme.TupleScheme<ComponentAggregateStats> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, ComponentAggregateStats struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
-      BitSet optionals = new BitSet();
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_type()) {
         optionals.set(0);
       }
@@ -724,8 +700,8 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, ComponentAggregateStats struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(4);
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      java.util.BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
         struct.type = org.apache.storm.generated.ComponentType.findByValue(iprot.readI32());
         struct.set_type_isSet(true);
@@ -748,5 +724,8 @@ public class ComponentAggregateStats implements org.apache.thrift.TBase<Componen
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/ComponentCommon.java b/storm-core/src/jvm/org/apache/storm/generated/ComponentCommon.java
index 420ad60..fae2898 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/ComponentCommon.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/ComponentCommon.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon, ComponentCommon._Fields>, java.io.Serializable, Cloneable, Comparable<ComponentCommon> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComponentCommon");
 
@@ -60,16 +33,13 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
   private static final org.apache.thrift.protocol.TField PARALLELISM_HINT_FIELD_DESC = new org.apache.thrift.protocol.TField("parallelism_hint", org.apache.thrift.protocol.TType.I32, (short)3);
   private static final org.apache.thrift.protocol.TField JSON_CONF_FIELD_DESC = new org.apache.thrift.protocol.TField("json_conf", org.apache.thrift.protocol.TType.STRING, (short)4);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new ComponentCommonStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new ComponentCommonTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new ComponentCommonStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ComponentCommonTupleSchemeFactory();
 
-  private Map<GlobalStreamId,Grouping> inputs; // required
-  private Map<String,StreamInfo> streams; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,Grouping> inputs; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,StreamInfo> streams; // required
   private int parallelism_hint; // optional
-  private String json_conf; // optional
+  private @org.apache.thrift.annotation.Nullable java.lang.String json_conf; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -78,10 +48,10 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     PARALLELISM_HINT((short)3, "parallelism_hint"),
     JSON_CONF((short)4, "json_conf");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -89,6 +59,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // INPUTS
@@ -110,21 +81,22 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -133,7 +105,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
@@ -142,9 +114,9 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
   private static final int __PARALLELISM_HINT_ISSET_ID = 0;
   private byte __isset_bitfield = 0;
   private static final _Fields optionals[] = {_Fields.PARALLELISM_HINT,_Fields.JSON_CONF};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.INPUTS, new org.apache.thrift.meta_data.FieldMetaData("inputs", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, GlobalStreamId.class), 
@@ -157,7 +129,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
     tmpMap.put(_Fields.JSON_CONF, new org.apache.thrift.meta_data.FieldMetaData("json_conf", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ComponentCommon.class, metaDataMap);
   }
 
@@ -165,8 +137,8 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
   }
 
   public ComponentCommon(
-    Map<GlobalStreamId,Grouping> inputs,
-    Map<String,StreamInfo> streams)
+    java.util.Map<GlobalStreamId,Grouping> inputs,
+    java.util.Map<java.lang.String,StreamInfo> streams)
   {
     this();
     this.inputs = inputs;
@@ -179,8 +151,8 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
   public ComponentCommon(ComponentCommon other) {
     __isset_bitfield = other.__isset_bitfield;
     if (other.is_set_inputs()) {
-      Map<GlobalStreamId,Grouping> __this__inputs = new HashMap<GlobalStreamId,Grouping>(other.inputs.size());
-      for (Map.Entry<GlobalStreamId, Grouping> other_element : other.inputs.entrySet()) {
+      java.util.Map<GlobalStreamId,Grouping> __this__inputs = new java.util.HashMap<GlobalStreamId,Grouping>(other.inputs.size());
+      for (java.util.Map.Entry<GlobalStreamId, Grouping> other_element : other.inputs.entrySet()) {
 
         GlobalStreamId other_element_key = other_element.getKey();
         Grouping other_element_value = other_element.getValue();
@@ -194,13 +166,13 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
       this.inputs = __this__inputs;
     }
     if (other.is_set_streams()) {
-      Map<String,StreamInfo> __this__streams = new HashMap<String,StreamInfo>(other.streams.size());
-      for (Map.Entry<String, StreamInfo> other_element : other.streams.entrySet()) {
+      java.util.Map<java.lang.String,StreamInfo> __this__streams = new java.util.HashMap<java.lang.String,StreamInfo>(other.streams.size());
+      for (java.util.Map.Entry<java.lang.String, StreamInfo> other_element : other.streams.entrySet()) {
 
-        String other_element_key = other_element.getKey();
+        java.lang.String other_element_key = other_element.getKey();
         StreamInfo other_element_value = other_element.getValue();
 
-        String __this__streams_copy_key = other_element_key;
+        java.lang.String __this__streams_copy_key = other_element_key;
 
         StreamInfo __this__streams_copy_value = new StreamInfo(other_element_value);
 
@@ -233,16 +205,17 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
 
   public void put_to_inputs(GlobalStreamId key, Grouping val) {
     if (this.inputs == null) {
-      this.inputs = new HashMap<GlobalStreamId,Grouping>();
+      this.inputs = new java.util.HashMap<GlobalStreamId,Grouping>();
     }
     this.inputs.put(key, val);
   }
 
-  public Map<GlobalStreamId,Grouping> get_inputs() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<GlobalStreamId,Grouping> get_inputs() {
     return this.inputs;
   }
 
-  public void set_inputs(Map<GlobalStreamId,Grouping> inputs) {
+  public void set_inputs(@org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,Grouping> inputs) {
     this.inputs = inputs;
   }
 
@@ -265,18 +238,19 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     return (this.streams == null) ? 0 : this.streams.size();
   }
 
-  public void put_to_streams(String key, StreamInfo val) {
+  public void put_to_streams(java.lang.String key, StreamInfo val) {
     if (this.streams == null) {
-      this.streams = new HashMap<String,StreamInfo>();
+      this.streams = new java.util.HashMap<java.lang.String,StreamInfo>();
     }
     this.streams.put(key, val);
   }
 
-  public Map<String,StreamInfo> get_streams() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,StreamInfo> get_streams() {
     return this.streams;
   }
 
-  public void set_streams(Map<String,StreamInfo> streams) {
+  public void set_streams(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,StreamInfo> streams) {
     this.streams = streams;
   }
 
@@ -305,23 +279,24 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
   }
 
   public void unset_parallelism_hint() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PARALLELISM_HINT_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __PARALLELISM_HINT_ISSET_ID);
   }
 
   /** Returns true if field parallelism_hint is set (has been assigned a value) and false otherwise */
   public boolean is_set_parallelism_hint() {
-    return EncodingUtils.testBit(__isset_bitfield, __PARALLELISM_HINT_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __PARALLELISM_HINT_ISSET_ID);
   }
 
   public void set_parallelism_hint_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PARALLELISM_HINT_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __PARALLELISM_HINT_ISSET_ID, value);
   }
 
-  public String get_json_conf() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_json_conf() {
     return this.json_conf;
   }
 
-  public void set_json_conf(String json_conf) {
+  public void set_json_conf(@org.apache.thrift.annotation.Nullable java.lang.String json_conf) {
     this.json_conf = json_conf;
   }
 
@@ -340,13 +315,13 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case INPUTS:
       if (value == null) {
         unset_inputs();
       } else {
-        set_inputs((Map<GlobalStreamId,Grouping>)value);
+        set_inputs((java.util.Map<GlobalStreamId,Grouping>)value);
       }
       break;
 
@@ -354,7 +329,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
       if (value == null) {
         unset_streams();
       } else {
-        set_streams((Map<String,StreamInfo>)value);
+        set_streams((java.util.Map<java.lang.String,StreamInfo>)value);
       }
       break;
 
@@ -362,7 +337,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
       if (value == null) {
         unset_parallelism_hint();
       } else {
-        set_parallelism_hint((Integer)value);
+        set_parallelism_hint((java.lang.Integer)value);
       }
       break;
 
@@ -370,14 +345,15 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
       if (value == null) {
         unset_json_conf();
       } else {
-        set_json_conf((String)value);
+        set_json_conf((java.lang.String)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case INPUTS:
       return get_inputs();
@@ -392,13 +368,13 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
       return get_json_conf();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -411,11 +387,11 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     case JSON_CONF:
       return is_set_json_conf();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof ComponentCommon)
@@ -426,6 +402,8 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
   public boolean equals(ComponentCommon that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_inputs = true && this.is_set_inputs();
     boolean that_present_inputs = true && that.is_set_inputs();
@@ -468,29 +446,25 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_inputs = true && (is_set_inputs());
-    list.add(present_inputs);
-    if (present_inputs)
-      list.add(inputs);
+    hashCode = hashCode * 8191 + ((is_set_inputs()) ? 131071 : 524287);
+    if (is_set_inputs())
+      hashCode = hashCode * 8191 + inputs.hashCode();
 
-    boolean present_streams = true && (is_set_streams());
-    list.add(present_streams);
-    if (present_streams)
-      list.add(streams);
+    hashCode = hashCode * 8191 + ((is_set_streams()) ? 131071 : 524287);
+    if (is_set_streams())
+      hashCode = hashCode * 8191 + streams.hashCode();
 
-    boolean present_parallelism_hint = true && (is_set_parallelism_hint());
-    list.add(present_parallelism_hint);
-    if (present_parallelism_hint)
-      list.add(parallelism_hint);
+    hashCode = hashCode * 8191 + ((is_set_parallelism_hint()) ? 131071 : 524287);
+    if (is_set_parallelism_hint())
+      hashCode = hashCode * 8191 + parallelism_hint;
 
-    boolean present_json_conf = true && (is_set_json_conf());
-    list.add(present_json_conf);
-    if (present_json_conf)
-      list.add(json_conf);
+    hashCode = hashCode * 8191 + ((is_set_json_conf()) ? 131071 : 524287);
+    if (is_set_json_conf())
+      hashCode = hashCode * 8191 + json_conf.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -501,7 +475,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_inputs()).compareTo(other.is_set_inputs());
+    lastComparison = java.lang.Boolean.valueOf(is_set_inputs()).compareTo(other.is_set_inputs());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -511,7 +485,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_streams()).compareTo(other.is_set_streams());
+    lastComparison = java.lang.Boolean.valueOf(is_set_streams()).compareTo(other.is_set_streams());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -521,7 +495,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_parallelism_hint()).compareTo(other.is_set_parallelism_hint());
+    lastComparison = java.lang.Boolean.valueOf(is_set_parallelism_hint()).compareTo(other.is_set_parallelism_hint());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -531,7 +505,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_json_conf()).compareTo(other.is_set_json_conf());
+    lastComparison = java.lang.Boolean.valueOf(is_set_json_conf()).compareTo(other.is_set_json_conf());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -544,21 +518,22 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("ComponentCommon(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("ComponentCommon(");
     boolean first = true;
 
     sb.append("inputs:");
@@ -617,7 +592,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
       __isset_bitfield = 0;
@@ -627,13 +602,13 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     }
   }
 
-  private static class ComponentCommonStandardSchemeFactory implements SchemeFactory {
+  private static class ComponentCommonStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ComponentCommonStandardScheme getScheme() {
       return new ComponentCommonStandardScheme();
     }
   }
 
-  private static class ComponentCommonStandardScheme extends StandardScheme<ComponentCommon> {
+  private static class ComponentCommonStandardScheme extends org.apache.thrift.scheme.StandardScheme<ComponentCommon> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, ComponentCommon struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -649,9 +624,9 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map24 = iprot.readMapBegin();
-                struct.inputs = new HashMap<GlobalStreamId,Grouping>(2*_map24.size);
-                GlobalStreamId _key25;
-                Grouping _val26;
+                struct.inputs = new java.util.HashMap<GlobalStreamId,Grouping>(2*_map24.size);
+                @org.apache.thrift.annotation.Nullable GlobalStreamId _key25;
+                @org.apache.thrift.annotation.Nullable Grouping _val26;
                 for (int _i27 = 0; _i27 < _map24.size; ++_i27)
                 {
                   _key25 = new GlobalStreamId();
@@ -671,9 +646,9 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map28 = iprot.readMapBegin();
-                struct.streams = new HashMap<String,StreamInfo>(2*_map28.size);
-                String _key29;
-                StreamInfo _val30;
+                struct.streams = new java.util.HashMap<java.lang.String,StreamInfo>(2*_map28.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key29;
+                @org.apache.thrift.annotation.Nullable StreamInfo _val30;
                 for (int _i31 = 0; _i31 < _map28.size; ++_i31)
                 {
                   _key29 = iprot.readString();
@@ -721,7 +696,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
         oprot.writeFieldBegin(INPUTS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.STRUCT, struct.inputs.size()));
-          for (Map.Entry<GlobalStreamId, Grouping> _iter32 : struct.inputs.entrySet())
+          for (java.util.Map.Entry<GlobalStreamId, Grouping> _iter32 : struct.inputs.entrySet())
           {
             _iter32.getKey().write(oprot);
             _iter32.getValue().write(oprot);
@@ -734,7 +709,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
         oprot.writeFieldBegin(STREAMS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, struct.streams.size()));
-          for (Map.Entry<String, StreamInfo> _iter33 : struct.streams.entrySet())
+          for (java.util.Map.Entry<java.lang.String, StreamInfo> _iter33 : struct.streams.entrySet())
           {
             oprot.writeString(_iter33.getKey());
             _iter33.getValue().write(oprot);
@@ -761,20 +736,20 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
 
   }
 
-  private static class ComponentCommonTupleSchemeFactory implements SchemeFactory {
+  private static class ComponentCommonTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ComponentCommonTupleScheme getScheme() {
       return new ComponentCommonTupleScheme();
     }
   }
 
-  private static class ComponentCommonTupleScheme extends TupleScheme<ComponentCommon> {
+  private static class ComponentCommonTupleScheme extends org.apache.thrift.scheme.TupleScheme<ComponentCommon> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, ComponentCommon struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       {
         oprot.writeI32(struct.inputs.size());
-        for (Map.Entry<GlobalStreamId, Grouping> _iter34 : struct.inputs.entrySet())
+        for (java.util.Map.Entry<GlobalStreamId, Grouping> _iter34 : struct.inputs.entrySet())
         {
           _iter34.getKey().write(oprot);
           _iter34.getValue().write(oprot);
@@ -782,13 +757,13 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
       }
       {
         oprot.writeI32(struct.streams.size());
-        for (Map.Entry<String, StreamInfo> _iter35 : struct.streams.entrySet())
+        for (java.util.Map.Entry<java.lang.String, StreamInfo> _iter35 : struct.streams.entrySet())
         {
           oprot.writeString(_iter35.getKey());
           _iter35.getValue().write(oprot);
         }
       }
-      BitSet optionals = new BitSet();
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_parallelism_hint()) {
         optionals.set(0);
       }
@@ -806,12 +781,12 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, ComponentCommon struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       {
         org.apache.thrift.protocol.TMap _map36 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.inputs = new HashMap<GlobalStreamId,Grouping>(2*_map36.size);
-        GlobalStreamId _key37;
-        Grouping _val38;
+        struct.inputs = new java.util.HashMap<GlobalStreamId,Grouping>(2*_map36.size);
+        @org.apache.thrift.annotation.Nullable GlobalStreamId _key37;
+        @org.apache.thrift.annotation.Nullable Grouping _val38;
         for (int _i39 = 0; _i39 < _map36.size; ++_i39)
         {
           _key37 = new GlobalStreamId();
@@ -824,9 +799,9 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
       struct.set_inputs_isSet(true);
       {
         org.apache.thrift.protocol.TMap _map40 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.streams = new HashMap<String,StreamInfo>(2*_map40.size);
-        String _key41;
-        StreamInfo _val42;
+        struct.streams = new java.util.HashMap<java.lang.String,StreamInfo>(2*_map40.size);
+        @org.apache.thrift.annotation.Nullable java.lang.String _key41;
+        @org.apache.thrift.annotation.Nullable StreamInfo _val42;
         for (int _i43 = 0; _i43 < _map40.size; ++_i43)
         {
           _key41 = iprot.readString();
@@ -836,7 +811,7 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
         }
       }
       struct.set_streams_isSet(true);
-      BitSet incoming = iprot.readBitSet(2);
+      java.util.BitSet incoming = iprot.readBitSet(2);
       if (incoming.get(0)) {
         struct.parallelism_hint = iprot.readI32();
         struct.set_parallelism_hint_isSet(true);
@@ -848,5 +823,8 @@ public class ComponentCommon implements org.apache.thrift.TBase<ComponentCommon,
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/ComponentObject.java b/storm-core/src/jvm/org/apache/storm/generated/ComponentObject.java
index 94560a0..d0bedea 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/ComponentObject.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/ComponentObject.java
@@ -16,41 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, ComponentObject._Fields> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComponentObject");
   private static final org.apache.thrift.protocol.TField SERIALIZED_JAVA_FIELD_DESC = new org.apache.thrift.protocol.TField("serialized_java", org.apache.thrift.protocol.TType.STRING, (short)1);
@@ -63,10 +37,10 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
     SHELL((short)2, "shell"),
     JAVA_OBJECT((short)3, "java_object");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -74,6 +48,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // SERIALIZED_JAVA
@@ -93,21 +68,22 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -116,21 +92,21 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-    tmpMap.put(_Fields.SERIALIZED_JAVA, new org.apache.thrift.meta_data.FieldMetaData("serialized_java", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.SERIALIZED_JAVA, new org.apache.thrift.meta_data.FieldMetaData("serialized_java", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
-    tmpMap.put(_Fields.SHELL, new org.apache.thrift.meta_data.FieldMetaData("shell", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+    tmpMap.put(_Fields.SHELL, new org.apache.thrift.meta_data.FieldMetaData("shell", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ShellComponent.class)));
-    tmpMap.put(_Fields.JAVA_OBJECT, new org.apache.thrift.meta_data.FieldMetaData("java_object", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+    tmpMap.put(_Fields.JAVA_OBJECT, new org.apache.thrift.meta_data.FieldMetaData("java_object", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, JavaObject.class)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ComponentObject.class, metaDataMap);
   }
 
@@ -138,7 +114,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
     super();
   }
 
-  public ComponentObject(_Fields setField, Object value) {
+  public ComponentObject(_Fields setField, java.lang.Object value) {
     super(setField, value);
   }
 
@@ -149,7 +125,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
     return new ComponentObject(this);
   }
 
-  public static ComponentObject serialized_java(ByteBuffer value) {
+  public static ComponentObject serialized_java(java.nio.ByteBuffer value) {
     ComponentObject x = new ComponentObject();
     x.set_serialized_java(value);
     return x;
@@ -157,7 +133,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
 
   public static ComponentObject serialized_java(byte[] value) {
     ComponentObject x = new ComponentObject();
-    x.set_serialized_java(ByteBuffer.wrap(Arrays.copyOf(value, value.length)));
+    x.set_serialized_java  (java.nio.ByteBuffer.wrap(value.clone()));
     return x;
   }
 
@@ -175,36 +151,36 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
 
 
   @Override
-  protected void checkType(_Fields setField, Object value) throws ClassCastException {
+  protected void checkType(_Fields setField, java.lang.Object value) throws java.lang.ClassCastException {
     switch (setField) {
       case SERIALIZED_JAVA:
-        if (value instanceof ByteBuffer) {
+        if (value instanceof java.nio.ByteBuffer) {
           break;
         }
-        throw new ClassCastException("Was expecting value of type ByteBuffer for field 'serialized_java', but got " + value.getClass().getSimpleName());
+        throw new java.lang.ClassCastException("Was expecting value of type java.nio.ByteBuffer for field 'serialized_java', but got " + value.getClass().getSimpleName());
       case SHELL:
         if (value instanceof ShellComponent) {
           break;
         }
-        throw new ClassCastException("Was expecting value of type ShellComponent for field 'shell', but got " + value.getClass().getSimpleName());
+        throw new java.lang.ClassCastException("Was expecting value of type ShellComponent for field 'shell', but got " + value.getClass().getSimpleName());
       case JAVA_OBJECT:
         if (value instanceof JavaObject) {
           break;
         }
-        throw new ClassCastException("Was expecting value of type JavaObject for field 'java_object', but got " + value.getClass().getSimpleName());
+        throw new java.lang.ClassCastException("Was expecting value of type JavaObject for field 'java_object', but got " + value.getClass().getSimpleName());
       default:
-        throw new IllegalArgumentException("Unknown field id " + setField);
+        throw new java.lang.IllegalArgumentException("Unknown field id " + setField);
     }
   }
 
   @Override
-  protected Object standardSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TField field) throws org.apache.thrift.TException {
+  protected java.lang.Object standardSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TField field) throws org.apache.thrift.TException {
     _Fields setField = _Fields.findByThriftId(field.id);
     if (setField != null) {
       switch (setField) {
         case SERIALIZED_JAVA:
           if (field.type == SERIALIZED_JAVA_FIELD_DESC.type) {
-            ByteBuffer serialized_java;
+            java.nio.ByteBuffer serialized_java;
             serialized_java = iprot.readBinary();
             return serialized_java;
           } else {
@@ -232,7 +208,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
             return null;
           }
         default:
-          throw new IllegalStateException("setField wasn't null, but didn't match any of the case statements!");
+          throw new java.lang.IllegalStateException("setField wasn't null, but didn't match any of the case statements!");
       }
     } else {
       org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
@@ -244,7 +220,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
   protected void standardSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
     switch (setField_) {
       case SERIALIZED_JAVA:
-        ByteBuffer serialized_java = (ByteBuffer)value_;
+        java.nio.ByteBuffer serialized_java = (java.nio.ByteBuffer)value_;
         oprot.writeBinary(serialized_java);
         return;
       case SHELL:
@@ -256,17 +232,17 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
         java_object.write(oprot);
         return;
       default:
-        throw new IllegalStateException("Cannot write union with unknown field " + setField_);
+        throw new java.lang.IllegalStateException("Cannot write union with unknown field " + setField_);
     }
   }
 
   @Override
-  protected Object tupleSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, short fieldID) throws org.apache.thrift.TException {
+  protected java.lang.Object tupleSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, short fieldID) throws org.apache.thrift.TException {
     _Fields setField = _Fields.findByThriftId(fieldID);
     if (setField != null) {
       switch (setField) {
         case SERIALIZED_JAVA:
-          ByteBuffer serialized_java;
+          java.nio.ByteBuffer serialized_java;
           serialized_java = iprot.readBinary();
           return serialized_java;
         case SHELL:
@@ -280,10 +256,10 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
           java_object.read(iprot);
           return java_object;
         default:
-          throw new IllegalStateException("setField wasn't null, but didn't match any of the case statements!");
+          throw new java.lang.IllegalStateException("setField wasn't null, but didn't match any of the case statements!");
       }
     } else {
-      throw new TProtocolException("Couldn't find a field with field id " + fieldID);
+      throw new org.apache.thrift.protocol.TProtocolException("Couldn't find a field with field id " + fieldID);
     }
   }
 
@@ -291,7 +267,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
   protected void tupleSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
     switch (setField_) {
       case SERIALIZED_JAVA:
-        ByteBuffer serialized_java = (ByteBuffer)value_;
+        java.nio.ByteBuffer serialized_java = (java.nio.ByteBuffer)value_;
         oprot.writeBinary(serialized_java);
         return;
       case SHELL:
@@ -303,7 +279,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
         java_object.write(oprot);
         return;
       default:
-        throw new IllegalStateException("Cannot write union with unknown field " + setField_);
+        throw new java.lang.IllegalStateException("Cannot write union with unknown field " + setField_);
     }
   }
 
@@ -317,7 +293,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
       case JAVA_OBJECT:
         return JAVA_OBJECT_FIELD_DESC;
       default:
-        throw new IllegalArgumentException("Unknown field id " + setField);
+        throw new java.lang.IllegalArgumentException("Unknown field id " + setField);
     }
   }
 
@@ -331,6 +307,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
     return _Fields.findByThriftIdOrThrow(id);
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
@@ -338,24 +315,24 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
 
   public byte[] get_serialized_java() {
     set_serialized_java(org.apache.thrift.TBaseHelper.rightSize(buffer_for_serialized_java()));
-    ByteBuffer b = buffer_for_serialized_java();
+    java.nio.ByteBuffer b = buffer_for_serialized_java();
     return b == null ? null : b.array();
   }
 
-  public ByteBuffer buffer_for_serialized_java() {
+  public java.nio.ByteBuffer buffer_for_serialized_java() {
     if (getSetField() == _Fields.SERIALIZED_JAVA) {
-      return org.apache.thrift.TBaseHelper.copyBinary((ByteBuffer)getFieldValue());
+      return org.apache.thrift.TBaseHelper.copyBinary((java.nio.ByteBuffer)getFieldValue());
     } else {
-      throw new RuntimeException("Cannot get field 'serialized_java' because union is currently set to " + getFieldDesc(getSetField()).name);
+      throw new java.lang.RuntimeException("Cannot get field 'serialized_java' because union is currently set to " + getFieldDesc(getSetField()).name);
     }
   }
 
   public void set_serialized_java(byte[] value) {
-    set_serialized_java(ByteBuffer.wrap(Arrays.copyOf(value, value.length)));
+    set_serialized_java  (java.nio.ByteBuffer.wrap(value.clone()));
   }
 
-  public void set_serialized_java(ByteBuffer value) {
-    if (value == null) throw new NullPointerException();
+  public void set_serialized_java(java.nio.ByteBuffer value) {
+    if (value == null) throw new java.lang.NullPointerException();
     setField_ = _Fields.SERIALIZED_JAVA;
     value_ = value;
   }
@@ -364,12 +341,12 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
     if (getSetField() == _Fields.SHELL) {
       return (ShellComponent)getFieldValue();
     } else {
-      throw new RuntimeException("Cannot get field 'shell' because union is currently set to " + getFieldDesc(getSetField()).name);
+      throw new java.lang.RuntimeException("Cannot get field 'shell' because union is currently set to " + getFieldDesc(getSetField()).name);
     }
   }
 
   public void set_shell(ShellComponent value) {
-    if (value == null) throw new NullPointerException();
+    if (value == null) throw new java.lang.NullPointerException();
     setField_ = _Fields.SHELL;
     value_ = value;
   }
@@ -378,12 +355,12 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
     if (getSetField() == _Fields.JAVA_OBJECT) {
       return (JavaObject)getFieldValue();
     } else {
-      throw new RuntimeException("Cannot get field 'java_object' because union is currently set to " + getFieldDesc(getSetField()).name);
+      throw new java.lang.RuntimeException("Cannot get field 'java_object' because union is currently set to " + getFieldDesc(getSetField()).name);
     }
   }
 
   public void set_java_object(JavaObject value) {
-    if (value == null) throw new NullPointerException();
+    if (value == null) throw new java.lang.NullPointerException();
     setField_ = _Fields.JAVA_OBJECT;
     value_ = value;
   }
@@ -403,7 +380,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
   }
 
 
-  public boolean equals(Object other) {
+  public boolean equals(java.lang.Object other) {
     if (other instanceof ComponentObject) {
       return equals((ComponentObject)other);
     } else {
@@ -427,12 +404,12 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    java.util.List<java.lang.Object> list = new java.util.ArrayList<java.lang.Object>();
     list.add(this.getClass().getName());
     org.apache.thrift.TFieldIdEnum setField = getSetField();
     if (setField != null) {
       list.add(setField.getThriftFieldId());
-      Object value = getFieldValue();
+      java.lang.Object value = getFieldValue();
       if (value instanceof org.apache.thrift.TEnum) {
         list.add(((org.apache.thrift.TEnum)getFieldValue()).getValue());
       } else {
@@ -450,7 +427,7 @@ public class ComponentObject extends org.apache.thrift.TUnion<ComponentObject, C
   }
 
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
diff --git a/storm-core/src/jvm/org/apache/storm/generated/ComponentPageInfo.java b/storm-core/src/jvm/org/apache/storm/generated/ComponentPageInfo.java
index 7fcebcc..b1e42a1 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/ComponentPageInfo.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/ComponentPageInfo.java
@@ -16,42 +16,15 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageInfo, ComponentPageInfo._Fields>, java.io.Serializable, Cloneable, Comparable<ComponentPageInfo> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComponentPageInfo");
 
@@ -72,28 +45,25 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
   private static final org.apache.thrift.protocol.TField TOPOLOGY_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("topology_status", org.apache.thrift.protocol.TType.STRING, (short)15);
   private static final org.apache.thrift.protocol.TField RESOURCES_MAP_FIELD_DESC = new org.apache.thrift.protocol.TField("resources_map", org.apache.thrift.protocol.TType.MAP, (short)16);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new ComponentPageInfoStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new ComponentPageInfoTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new ComponentPageInfoStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ComponentPageInfoTupleSchemeFactory();
 
-  private String component_id; // required
-  private ComponentType component_type; // required
-  private String topology_id; // optional
-  private String topology_name; // optional
+  private @org.apache.thrift.annotation.Nullable java.lang.String component_id; // required
+  private @org.apache.thrift.annotation.Nullable ComponentType component_type; // required
+  private @org.apache.thrift.annotation.Nullable java.lang.String topology_id; // optional
+  private @org.apache.thrift.annotation.Nullable java.lang.String topology_name; // optional
   private int num_executors; // optional
   private int num_tasks; // optional
-  private Map<String,ComponentAggregateStats> window_to_stats; // optional
-  private Map<GlobalStreamId,ComponentAggregateStats> gsid_to_input_stats; // optional
-  private Map<String,ComponentAggregateStats> sid_to_output_stats; // optional
-  private List<ExecutorAggregateStats> exec_stats; // optional
-  private List<ErrorInfo> errors; // optional
-  private String eventlog_host; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,ComponentAggregateStats> window_to_stats; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,ComponentAggregateStats> gsid_to_input_stats; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,ComponentAggregateStats> sid_to_output_stats; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.List<ExecutorAggregateStats> exec_stats; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.List<ErrorInfo> errors; // optional
+  private @org.apache.thrift.annotation.Nullable java.lang.String eventlog_host; // optional
   private int eventlog_port; // optional
-  private DebugOptions debug_options; // optional
-  private String topology_status; // optional
-  private Map<String,Double> resources_map; // optional
+  private @org.apache.thrift.annotation.Nullable DebugOptions debug_options; // optional
+  private @org.apache.thrift.annotation.Nullable java.lang.String topology_status; // optional
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.Double> resources_map; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -118,10 +88,10 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     TOPOLOGY_STATUS((short)15, "topology_status"),
     RESOURCES_MAP((short)16, "resources_map");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -129,6 +99,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // COMPONENT_ID
@@ -174,21 +145,22 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -197,7 +169,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
@@ -208,9 +180,9 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
   private static final int __EVENTLOG_PORT_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
   private static final _Fields optionals[] = {_Fields.TOPOLOGY_ID,_Fields.TOPOLOGY_NAME,_Fields.NUM_EXECUTORS,_Fields.NUM_TASKS,_Fields.WINDOW_TO_STATS,_Fields.GSID_TO_INPUT_STATS,_Fields.SID_TO_OUTPUT_STATS,_Fields.EXEC_STATS,_Fields.ERRORS,_Fields.EVENTLOG_HOST,_Fields.EVENTLOG_PORT,_Fields.DEBUG_OPTIONS,_Fields.TOPOLOGY_STATUS,_Fields.RESOURCES_MAP};
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.COMPONENT_ID, new org.apache.thrift.meta_data.FieldMetaData("component_id", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.COMPONENT_TYPE, new org.apache.thrift.meta_data.FieldMetaData("component_type", org.apache.thrift.TFieldRequirementType.REQUIRED, 
@@ -253,7 +225,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE))));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ComponentPageInfo.class, metaDataMap);
   }
 
@@ -261,7 +233,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
   }
 
   public ComponentPageInfo(
-    String component_id,
+    java.lang.String component_id,
     ComponentType component_type)
   {
     this();
@@ -289,13 +261,13 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     this.num_executors = other.num_executors;
     this.num_tasks = other.num_tasks;
     if (other.is_set_window_to_stats()) {
-      Map<String,ComponentAggregateStats> __this__window_to_stats = new HashMap<String,ComponentAggregateStats>(other.window_to_stats.size());
-      for (Map.Entry<String, ComponentAggregateStats> other_element : other.window_to_stats.entrySet()) {
+      java.util.Map<java.lang.String,ComponentAggregateStats> __this__window_to_stats = new java.util.HashMap<java.lang.String,ComponentAggregateStats>(other.window_to_stats.size());
+      for (java.util.Map.Entry<java.lang.String, ComponentAggregateStats> other_element : other.window_to_stats.entrySet()) {
 
-        String other_element_key = other_element.getKey();
+        java.lang.String other_element_key = other_element.getKey();
         ComponentAggregateStats other_element_value = other_element.getValue();
 
-        String __this__window_to_stats_copy_key = other_element_key;
+        java.lang.String __this__window_to_stats_copy_key = other_element_key;
 
         ComponentAggregateStats __this__window_to_stats_copy_value = new ComponentAggregateStats(other_element_value);
 
@@ -304,8 +276,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       this.window_to_stats = __this__window_to_stats;
     }
     if (other.is_set_gsid_to_input_stats()) {
-      Map<GlobalStreamId,ComponentAggregateStats> __this__gsid_to_input_stats = new HashMap<GlobalStreamId,ComponentAggregateStats>(other.gsid_to_input_stats.size());
-      for (Map.Entry<GlobalStreamId, ComponentAggregateStats> other_element : other.gsid_to_input_stats.entrySet()) {
+      java.util.Map<GlobalStreamId,ComponentAggregateStats> __this__gsid_to_input_stats = new java.util.HashMap<GlobalStreamId,ComponentAggregateStats>(other.gsid_to_input_stats.size());
+      for (java.util.Map.Entry<GlobalStreamId, ComponentAggregateStats> other_element : other.gsid_to_input_stats.entrySet()) {
 
         GlobalStreamId other_element_key = other_element.getKey();
         ComponentAggregateStats other_element_value = other_element.getValue();
@@ -319,13 +291,13 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       this.gsid_to_input_stats = __this__gsid_to_input_stats;
     }
     if (other.is_set_sid_to_output_stats()) {
-      Map<String,ComponentAggregateStats> __this__sid_to_output_stats = new HashMap<String,ComponentAggregateStats>(other.sid_to_output_stats.size());
-      for (Map.Entry<String, ComponentAggregateStats> other_element : other.sid_to_output_stats.entrySet()) {
+      java.util.Map<java.lang.String,ComponentAggregateStats> __this__sid_to_output_stats = new java.util.HashMap<java.lang.String,ComponentAggregateStats>(other.sid_to_output_stats.size());
+      for (java.util.Map.Entry<java.lang.String, ComponentAggregateStats> other_element : other.sid_to_output_stats.entrySet()) {
 
-        String other_element_key = other_element.getKey();
+        java.lang.String other_element_key = other_element.getKey();
         ComponentAggregateStats other_element_value = other_element.getValue();
 
-        String __this__sid_to_output_stats_copy_key = other_element_key;
+        java.lang.String __this__sid_to_output_stats_copy_key = other_element_key;
 
         ComponentAggregateStats __this__sid_to_output_stats_copy_value = new ComponentAggregateStats(other_element_value);
 
@@ -334,14 +306,14 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       this.sid_to_output_stats = __this__sid_to_output_stats;
     }
     if (other.is_set_exec_stats()) {
-      List<ExecutorAggregateStats> __this__exec_stats = new ArrayList<ExecutorAggregateStats>(other.exec_stats.size());
+      java.util.List<ExecutorAggregateStats> __this__exec_stats = new java.util.ArrayList<ExecutorAggregateStats>(other.exec_stats.size());
       for (ExecutorAggregateStats other_element : other.exec_stats) {
         __this__exec_stats.add(new ExecutorAggregateStats(other_element));
       }
       this.exec_stats = __this__exec_stats;
     }
     if (other.is_set_errors()) {
-      List<ErrorInfo> __this__errors = new ArrayList<ErrorInfo>(other.errors.size());
+      java.util.List<ErrorInfo> __this__errors = new java.util.ArrayList<ErrorInfo>(other.errors.size());
       for (ErrorInfo other_element : other.errors) {
         __this__errors.add(new ErrorInfo(other_element));
       }
@@ -358,7 +330,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       this.topology_status = other.topology_status;
     }
     if (other.is_set_resources_map()) {
-      Map<String,Double> __this__resources_map = new HashMap<String,Double>(other.resources_map);
+      java.util.Map<java.lang.String,java.lang.Double> __this__resources_map = new java.util.HashMap<java.lang.String,java.lang.Double>(other.resources_map);
       this.resources_map = __this__resources_map;
     }
   }
@@ -390,11 +362,12 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     this.resources_map = null;
   }
 
-  public String get_component_id() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_component_id() {
     return this.component_id;
   }
 
-  public void set_component_id(String component_id) {
+  public void set_component_id(@org.apache.thrift.annotation.Nullable java.lang.String component_id) {
     this.component_id = component_id;
   }
 
@@ -417,6 +390,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
    * 
    * @see ComponentType
    */
+  @org.apache.thrift.annotation.Nullable
   public ComponentType get_component_type() {
     return this.component_type;
   }
@@ -425,7 +399,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
    * 
    * @see ComponentType
    */
-  public void set_component_type(ComponentType component_type) {
+  public void set_component_type(@org.apache.thrift.annotation.Nullable ComponentType component_type) {
     this.component_type = component_type;
   }
 
@@ -444,11 +418,12 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     }
   }
 
-  public String get_topology_id() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_topology_id() {
     return this.topology_id;
   }
 
-  public void set_topology_id(String topology_id) {
+  public void set_topology_id(@org.apache.thrift.annotation.Nullable java.lang.String topology_id) {
     this.topology_id = topology_id;
   }
 
@@ -467,11 +442,12 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     }
   }
 
-  public String get_topology_name() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_topology_name() {
     return this.topology_name;
   }
 
-  public void set_topology_name(String topology_name) {
+  public void set_topology_name(@org.apache.thrift.annotation.Nullable java.lang.String topology_name) {
     this.topology_name = topology_name;
   }
 
@@ -500,16 +476,16 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
   }
 
   public void unset_num_executors() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID);
   }
 
   /** Returns true if field num_executors is set (has been assigned a value) and false otherwise */
   public boolean is_set_num_executors() {
-    return EncodingUtils.testBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID);
   }
 
   public void set_num_executors_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __NUM_EXECUTORS_ISSET_ID, value);
   }
 
   public int get_num_tasks() {
@@ -522,34 +498,35 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
   }
 
   public void unset_num_tasks() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __NUM_TASKS_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __NUM_TASKS_ISSET_ID);
   }
 
   /** Returns true if field num_tasks is set (has been assigned a value) and false otherwise */
   public boolean is_set_num_tasks() {
-    return EncodingUtils.testBit(__isset_bitfield, __NUM_TASKS_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __NUM_TASKS_ISSET_ID);
   }
 
   public void set_num_tasks_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __NUM_TASKS_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __NUM_TASKS_ISSET_ID, value);
   }
 
   public int get_window_to_stats_size() {
     return (this.window_to_stats == null) ? 0 : this.window_to_stats.size();
   }
 
-  public void put_to_window_to_stats(String key, ComponentAggregateStats val) {
+  public void put_to_window_to_stats(java.lang.String key, ComponentAggregateStats val) {
     if (this.window_to_stats == null) {
-      this.window_to_stats = new HashMap<String,ComponentAggregateStats>();
+      this.window_to_stats = new java.util.HashMap<java.lang.String,ComponentAggregateStats>();
     }
     this.window_to_stats.put(key, val);
   }
 
-  public Map<String,ComponentAggregateStats> get_window_to_stats() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,ComponentAggregateStats> get_window_to_stats() {
     return this.window_to_stats;
   }
 
-  public void set_window_to_stats(Map<String,ComponentAggregateStats> window_to_stats) {
+  public void set_window_to_stats(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,ComponentAggregateStats> window_to_stats) {
     this.window_to_stats = window_to_stats;
   }
 
@@ -574,16 +551,17 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
 
   public void put_to_gsid_to_input_stats(GlobalStreamId key, ComponentAggregateStats val) {
     if (this.gsid_to_input_stats == null) {
-      this.gsid_to_input_stats = new HashMap<GlobalStreamId,ComponentAggregateStats>();
+      this.gsid_to_input_stats = new java.util.HashMap<GlobalStreamId,ComponentAggregateStats>();
     }
     this.gsid_to_input_stats.put(key, val);
   }
 
-  public Map<GlobalStreamId,ComponentAggregateStats> get_gsid_to_input_stats() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<GlobalStreamId,ComponentAggregateStats> get_gsid_to_input_stats() {
     return this.gsid_to_input_stats;
   }
 
-  public void set_gsid_to_input_stats(Map<GlobalStreamId,ComponentAggregateStats> gsid_to_input_stats) {
+  public void set_gsid_to_input_stats(@org.apache.thrift.annotation.Nullable java.util.Map<GlobalStreamId,ComponentAggregateStats> gsid_to_input_stats) {
     this.gsid_to_input_stats = gsid_to_input_stats;
   }
 
@@ -606,18 +584,19 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     return (this.sid_to_output_stats == null) ? 0 : this.sid_to_output_stats.size();
   }
 
-  public void put_to_sid_to_output_stats(String key, ComponentAggregateStats val) {
+  public void put_to_sid_to_output_stats(java.lang.String key, ComponentAggregateStats val) {
     if (this.sid_to_output_stats == null) {
-      this.sid_to_output_stats = new HashMap<String,ComponentAggregateStats>();
+      this.sid_to_output_stats = new java.util.HashMap<java.lang.String,ComponentAggregateStats>();
     }
     this.sid_to_output_stats.put(key, val);
   }
 
-  public Map<String,ComponentAggregateStats> get_sid_to_output_stats() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,ComponentAggregateStats> get_sid_to_output_stats() {
     return this.sid_to_output_stats;
   }
 
-  public void set_sid_to_output_stats(Map<String,ComponentAggregateStats> sid_to_output_stats) {
+  public void set_sid_to_output_stats(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,ComponentAggregateStats> sid_to_output_stats) {
     this.sid_to_output_stats = sid_to_output_stats;
   }
 
@@ -640,22 +619,24 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     return (this.exec_stats == null) ? 0 : this.exec_stats.size();
   }
 
+  @org.apache.thrift.annotation.Nullable
   public java.util.Iterator<ExecutorAggregateStats> get_exec_stats_iterator() {
     return (this.exec_stats == null) ? null : this.exec_stats.iterator();
   }
 
   public void add_to_exec_stats(ExecutorAggregateStats elem) {
     if (this.exec_stats == null) {
-      this.exec_stats = new ArrayList<ExecutorAggregateStats>();
+      this.exec_stats = new java.util.ArrayList<ExecutorAggregateStats>();
     }
     this.exec_stats.add(elem);
   }
 
-  public List<ExecutorAggregateStats> get_exec_stats() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.List<ExecutorAggregateStats> get_exec_stats() {
     return this.exec_stats;
   }
 
-  public void set_exec_stats(List<ExecutorAggregateStats> exec_stats) {
+  public void set_exec_stats(@org.apache.thrift.annotation.Nullable java.util.List<ExecutorAggregateStats> exec_stats) {
     this.exec_stats = exec_stats;
   }
 
@@ -678,22 +659,24 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     return (this.errors == null) ? 0 : this.errors.size();
   }
 
+  @org.apache.thrift.annotation.Nullable
   public java.util.Iterator<ErrorInfo> get_errors_iterator() {
     return (this.errors == null) ? null : this.errors.iterator();
   }
 
   public void add_to_errors(ErrorInfo elem) {
     if (this.errors == null) {
-      this.errors = new ArrayList<ErrorInfo>();
+      this.errors = new java.util.ArrayList<ErrorInfo>();
     }
     this.errors.add(elem);
   }
 
-  public List<ErrorInfo> get_errors() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.List<ErrorInfo> get_errors() {
     return this.errors;
   }
 
-  public void set_errors(List<ErrorInfo> errors) {
+  public void set_errors(@org.apache.thrift.annotation.Nullable java.util.List<ErrorInfo> errors) {
     this.errors = errors;
   }
 
@@ -712,11 +695,12 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     }
   }
 
-  public String get_eventlog_host() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_eventlog_host() {
     return this.eventlog_host;
   }
 
-  public void set_eventlog_host(String eventlog_host) {
+  public void set_eventlog_host(@org.apache.thrift.annotation.Nullable java.lang.String eventlog_host) {
     this.eventlog_host = eventlog_host;
   }
 
@@ -745,23 +729,24 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
   }
 
   public void unset_eventlog_port() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __EVENTLOG_PORT_ISSET_ID);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __EVENTLOG_PORT_ISSET_ID);
   }
 
   /** Returns true if field eventlog_port is set (has been assigned a value) and false otherwise */
   public boolean is_set_eventlog_port() {
-    return EncodingUtils.testBit(__isset_bitfield, __EVENTLOG_PORT_ISSET_ID);
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __EVENTLOG_PORT_ISSET_ID);
   }
 
   public void set_eventlog_port_isSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __EVENTLOG_PORT_ISSET_ID, value);
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __EVENTLOG_PORT_ISSET_ID, value);
   }
 
+  @org.apache.thrift.annotation.Nullable
   public DebugOptions get_debug_options() {
     return this.debug_options;
   }
 
-  public void set_debug_options(DebugOptions debug_options) {
+  public void set_debug_options(@org.apache.thrift.annotation.Nullable DebugOptions debug_options) {
     this.debug_options = debug_options;
   }
 
@@ -780,11 +765,12 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     }
   }
 
-  public String get_topology_status() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_topology_status() {
     return this.topology_status;
   }
 
-  public void set_topology_status(String topology_status) {
+  public void set_topology_status(@org.apache.thrift.annotation.Nullable java.lang.String topology_status) {
     this.topology_status = topology_status;
   }
 
@@ -807,18 +793,19 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     return (this.resources_map == null) ? 0 : this.resources_map.size();
   }
 
-  public void put_to_resources_map(String key, double val) {
+  public void put_to_resources_map(java.lang.String key, double val) {
     if (this.resources_map == null) {
-      this.resources_map = new HashMap<String,Double>();
+      this.resources_map = new java.util.HashMap<java.lang.String,java.lang.Double>();
     }
     this.resources_map.put(key, val);
   }
 
-  public Map<String,Double> get_resources_map() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.lang.Double> get_resources_map() {
     return this.resources_map;
   }
 
-  public void set_resources_map(Map<String,Double> resources_map) {
+  public void set_resources_map(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.Double> resources_map) {
     this.resources_map = resources_map;
   }
 
@@ -837,13 +824,13 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case COMPONENT_ID:
       if (value == null) {
         unset_component_id();
       } else {
-        set_component_id((String)value);
+        set_component_id((java.lang.String)value);
       }
       break;
 
@@ -859,7 +846,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_topology_id();
       } else {
-        set_topology_id((String)value);
+        set_topology_id((java.lang.String)value);
       }
       break;
 
@@ -867,7 +854,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_topology_name();
       } else {
-        set_topology_name((String)value);
+        set_topology_name((java.lang.String)value);
       }
       break;
 
@@ -875,7 +862,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_num_executors();
       } else {
-        set_num_executors((Integer)value);
+        set_num_executors((java.lang.Integer)value);
       }
       break;
 
@@ -883,7 +870,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_num_tasks();
       } else {
-        set_num_tasks((Integer)value);
+        set_num_tasks((java.lang.Integer)value);
       }
       break;
 
@@ -891,7 +878,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_window_to_stats();
       } else {
-        set_window_to_stats((Map<String,ComponentAggregateStats>)value);
+        set_window_to_stats((java.util.Map<java.lang.String,ComponentAggregateStats>)value);
       }
       break;
 
@@ -899,7 +886,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_gsid_to_input_stats();
       } else {
-        set_gsid_to_input_stats((Map<GlobalStreamId,ComponentAggregateStats>)value);
+        set_gsid_to_input_stats((java.util.Map<GlobalStreamId,ComponentAggregateStats>)value);
       }
       break;
 
@@ -907,7 +894,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_sid_to_output_stats();
       } else {
-        set_sid_to_output_stats((Map<String,ComponentAggregateStats>)value);
+        set_sid_to_output_stats((java.util.Map<java.lang.String,ComponentAggregateStats>)value);
       }
       break;
 
@@ -915,7 +902,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_exec_stats();
       } else {
-        set_exec_stats((List<ExecutorAggregateStats>)value);
+        set_exec_stats((java.util.List<ExecutorAggregateStats>)value);
       }
       break;
 
@@ -923,7 +910,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_errors();
       } else {
-        set_errors((List<ErrorInfo>)value);
+        set_errors((java.util.List<ErrorInfo>)value);
       }
       break;
 
@@ -931,7 +918,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_eventlog_host();
       } else {
-        set_eventlog_host((String)value);
+        set_eventlog_host((java.lang.String)value);
       }
       break;
 
@@ -939,7 +926,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_eventlog_port();
       } else {
-        set_eventlog_port((Integer)value);
+        set_eventlog_port((java.lang.Integer)value);
       }
       break;
 
@@ -955,7 +942,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_topology_status();
       } else {
-        set_topology_status((String)value);
+        set_topology_status((java.lang.String)value);
       }
       break;
 
@@ -963,14 +950,15 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (value == null) {
         unset_resources_map();
       } else {
-        set_resources_map((Map<String,Double>)value);
+        set_resources_map((java.util.Map<java.lang.String,java.lang.Double>)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case COMPONENT_ID:
       return get_component_id();
@@ -1021,13 +1009,13 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       return get_resources_map();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
@@ -1064,11 +1052,11 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     case RESOURCES_MAP:
       return is_set_resources_map();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof ComponentPageInfo)
@@ -1079,6 +1067,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
   public boolean equals(ComponentPageInfo that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_component_id = true && this.is_set_component_id();
     boolean that_present_component_id = true && that.is_set_component_id();
@@ -1229,89 +1219,73 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
-
-    boolean present_component_id = true && (is_set_component_id());
-    list.add(present_component_id);
-    if (present_component_id)
-      list.add(component_id);
-
-    boolean present_component_type = true && (is_set_component_type());
-    list.add(present_component_type);
-    if (present_component_type)
-      list.add(component_type.getValue());
-
-    boolean present_topology_id = true && (is_set_topology_id());
-    list.add(present_topology_id);
-    if (present_topology_id)
-      list.add(topology_id);
-
-    boolean present_topology_name = true && (is_set_topology_name());
-    list.add(present_topology_name);
-    if (present_topology_name)
-      list.add(topology_name);
-
-    boolean present_num_executors = true && (is_set_num_executors());
-    list.add(present_num_executors);
-    if (present_num_executors)
-      list.add(num_executors);
-
-    boolean present_num_tasks = true && (is_set_num_tasks());
-    list.add(present_num_tasks);
-    if (present_num_tasks)
-      list.add(num_tasks);
-
-    boolean present_window_to_stats = true && (is_set_window_to_stats());
-    list.add(present_window_to_stats);
-    if (present_window_to_stats)
-      list.add(window_to_stats);
-
-    boolean present_gsid_to_input_stats = true && (is_set_gsid_to_input_stats());
-    list.add(present_gsid_to_input_stats);
-    if (present_gsid_to_input_stats)
-      list.add(gsid_to_input_stats);
-
-    boolean present_sid_to_output_stats = true && (is_set_sid_to_output_stats());
-    list.add(present_sid_to_output_stats);
-    if (present_sid_to_output_stats)
-      list.add(sid_to_output_stats);
-
-    boolean present_exec_stats = true && (is_set_exec_stats());
-    list.add(present_exec_stats);
-    if (present_exec_stats)
-      list.add(exec_stats);
-
-    boolean present_errors = true && (is_set_errors());
-    list.add(present_errors);
-    if (present_errors)
-      list.add(errors);
-
-    boolean present_eventlog_host = true && (is_set_eventlog_host());
-    list.add(present_eventlog_host);
-    if (present_eventlog_host)
-      list.add(eventlog_host);
-
-    boolean present_eventlog_port = true && (is_set_eventlog_port());
-    list.add(present_eventlog_port);
-    if (present_eventlog_port)
-      list.add(eventlog_port);
-
-    boolean present_debug_options = true && (is_set_debug_options());
-    list.add(present_debug_options);
-    if (present_debug_options)
-      list.add(debug_options);
-
-    boolean present_topology_status = true && (is_set_topology_status());
-    list.add(present_topology_status);
-    if (present_topology_status)
-      list.add(topology_status);
-
-    boolean present_resources_map = true && (is_set_resources_map());
-    list.add(present_resources_map);
-    if (present_resources_map)
-      list.add(resources_map);
-
-    return list.hashCode();
+    int hashCode = 1;
+
+    hashCode = hashCode * 8191 + ((is_set_component_id()) ? 131071 : 524287);
+    if (is_set_component_id())
+      hashCode = hashCode * 8191 + component_id.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_component_type()) ? 131071 : 524287);
+    if (is_set_component_type())
+      hashCode = hashCode * 8191 + component_type.getValue();
+
+    hashCode = hashCode * 8191 + ((is_set_topology_id()) ? 131071 : 524287);
+    if (is_set_topology_id())
+      hashCode = hashCode * 8191 + topology_id.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_topology_name()) ? 131071 : 524287);
+    if (is_set_topology_name())
+      hashCode = hashCode * 8191 + topology_name.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_num_executors()) ? 131071 : 524287);
+    if (is_set_num_executors())
+      hashCode = hashCode * 8191 + num_executors;
+
+    hashCode = hashCode * 8191 + ((is_set_num_tasks()) ? 131071 : 524287);
+    if (is_set_num_tasks())
+      hashCode = hashCode * 8191 + num_tasks;
+
+    hashCode = hashCode * 8191 + ((is_set_window_to_stats()) ? 131071 : 524287);
+    if (is_set_window_to_stats())
+      hashCode = hashCode * 8191 + window_to_stats.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_gsid_to_input_stats()) ? 131071 : 524287);
+    if (is_set_gsid_to_input_stats())
+      hashCode = hashCode * 8191 + gsid_to_input_stats.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_sid_to_output_stats()) ? 131071 : 524287);
+    if (is_set_sid_to_output_stats())
+      hashCode = hashCode * 8191 + sid_to_output_stats.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_exec_stats()) ? 131071 : 524287);
+    if (is_set_exec_stats())
+      hashCode = hashCode * 8191 + exec_stats.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_errors()) ? 131071 : 524287);
+    if (is_set_errors())
+      hashCode = hashCode * 8191 + errors.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_eventlog_host()) ? 131071 : 524287);
+    if (is_set_eventlog_host())
+      hashCode = hashCode * 8191 + eventlog_host.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_eventlog_port()) ? 131071 : 524287);
+    if (is_set_eventlog_port())
+      hashCode = hashCode * 8191 + eventlog_port;
+
+    hashCode = hashCode * 8191 + ((is_set_debug_options()) ? 131071 : 524287);
+    if (is_set_debug_options())
+      hashCode = hashCode * 8191 + debug_options.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_topology_status()) ? 131071 : 524287);
+    if (is_set_topology_status())
+      hashCode = hashCode * 8191 + topology_status.hashCode();
+
+    hashCode = hashCode * 8191 + ((is_set_resources_map()) ? 131071 : 524287);
+    if (is_set_resources_map())
+      hashCode = hashCode * 8191 + resources_map.hashCode();
+
+    return hashCode;
   }
 
   @Override
@@ -1322,7 +1296,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_component_id()).compareTo(other.is_set_component_id());
+    lastComparison = java.lang.Boolean.valueOf(is_set_component_id()).compareTo(other.is_set_component_id());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1332,7 +1306,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_component_type()).compareTo(other.is_set_component_type());
+    lastComparison = java.lang.Boolean.valueOf(is_set_component_type()).compareTo(other.is_set_component_type());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1342,7 +1316,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_topology_id()).compareTo(other.is_set_topology_id());
+    lastComparison = java.lang.Boolean.valueOf(is_set_topology_id()).compareTo(other.is_set_topology_id());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1352,7 +1326,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_topology_name()).compareTo(other.is_set_topology_name());
+    lastComparison = java.lang.Boolean.valueOf(is_set_topology_name()).compareTo(other.is_set_topology_name());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1362,7 +1336,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_num_executors()).compareTo(other.is_set_num_executors());
+    lastComparison = java.lang.Boolean.valueOf(is_set_num_executors()).compareTo(other.is_set_num_executors());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1372,7 +1346,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_num_tasks()).compareTo(other.is_set_num_tasks());
+    lastComparison = java.lang.Boolean.valueOf(is_set_num_tasks()).compareTo(other.is_set_num_tasks());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1382,7 +1356,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_window_to_stats()).compareTo(other.is_set_window_to_stats());
+    lastComparison = java.lang.Boolean.valueOf(is_set_window_to_stats()).compareTo(other.is_set_window_to_stats());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1392,7 +1366,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_gsid_to_input_stats()).compareTo(other.is_set_gsid_to_input_stats());
+    lastComparison = java.lang.Boolean.valueOf(is_set_gsid_to_input_stats()).compareTo(other.is_set_gsid_to_input_stats());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1402,7 +1376,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_sid_to_output_stats()).compareTo(other.is_set_sid_to_output_stats());
+    lastComparison = java.lang.Boolean.valueOf(is_set_sid_to_output_stats()).compareTo(other.is_set_sid_to_output_stats());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1412,7 +1386,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_exec_stats()).compareTo(other.is_set_exec_stats());
+    lastComparison = java.lang.Boolean.valueOf(is_set_exec_stats()).compareTo(other.is_set_exec_stats());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1422,7 +1396,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_errors()).compareTo(other.is_set_errors());
+    lastComparison = java.lang.Boolean.valueOf(is_set_errors()).compareTo(other.is_set_errors());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1432,7 +1406,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_eventlog_host()).compareTo(other.is_set_eventlog_host());
+    lastComparison = java.lang.Boolean.valueOf(is_set_eventlog_host()).compareTo(other.is_set_eventlog_host());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1442,7 +1416,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_eventlog_port()).compareTo(other.is_set_eventlog_port());
+    lastComparison = java.lang.Boolean.valueOf(is_set_eventlog_port()).compareTo(other.is_set_eventlog_port());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1452,7 +1426,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_debug_options()).compareTo(other.is_set_debug_options());
+    lastComparison = java.lang.Boolean.valueOf(is_set_debug_options()).compareTo(other.is_set_debug_options());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1462,7 +1436,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_topology_status()).compareTo(other.is_set_topology_status());
+    lastComparison = java.lang.Boolean.valueOf(is_set_topology_status()).compareTo(other.is_set_topology_status());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1472,7 +1446,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(is_set_resources_map()).compareTo(other.is_set_resources_map());
+    lastComparison = java.lang.Boolean.valueOf(is_set_resources_map()).compareTo(other.is_set_resources_map());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -1485,21 +1459,22 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("ComponentPageInfo(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("ComponentPageInfo(");
     boolean first = true;
 
     sb.append("component_id:");
@@ -1673,7 +1648,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
       __isset_bitfield = 0;
@@ -1683,13 +1658,13 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     }
   }
 
-  private static class ComponentPageInfoStandardSchemeFactory implements SchemeFactory {
+  private static class ComponentPageInfoStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ComponentPageInfoStandardScheme getScheme() {
       return new ComponentPageInfoStandardScheme();
     }
   }
 
-  private static class ComponentPageInfoStandardScheme extends StandardScheme<ComponentPageInfo> {
+  private static class ComponentPageInfoStandardScheme extends org.apache.thrift.scheme.StandardScheme<ComponentPageInfo> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, ComponentPageInfo struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -1753,9 +1728,9 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map482 = iprot.readMapBegin();
-                struct.window_to_stats = new HashMap<String,ComponentAggregateStats>(2*_map482.size);
-                String _key483;
-                ComponentAggregateStats _val484;
+                struct.window_to_stats = new java.util.HashMap<java.lang.String,ComponentAggregateStats>(2*_map482.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key483;
+                @org.apache.thrift.annotation.Nullable ComponentAggregateStats _val484;
                 for (int _i485 = 0; _i485 < _map482.size; ++_i485)
                 {
                   _key483 = iprot.readString();
@@ -1774,9 +1749,9 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map486 = iprot.readMapBegin();
-                struct.gsid_to_input_stats = new HashMap<GlobalStreamId,ComponentAggregateStats>(2*_map486.size);
-                GlobalStreamId _key487;
-                ComponentAggregateStats _val488;
+                struct.gsid_to_input_stats = new java.util.HashMap<GlobalStreamId,ComponentAggregateStats>(2*_map486.size);
+                @org.apache.thrift.annotation.Nullable GlobalStreamId _key487;
+                @org.apache.thrift.annotation.Nullable ComponentAggregateStats _val488;
                 for (int _i489 = 0; _i489 < _map486.size; ++_i489)
                 {
                   _key487 = new GlobalStreamId();
@@ -1796,9 +1771,9 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map490 = iprot.readMapBegin();
-                struct.sid_to_output_stats = new HashMap<String,ComponentAggregateStats>(2*_map490.size);
-                String _key491;
-                ComponentAggregateStats _val492;
+                struct.sid_to_output_stats = new java.util.HashMap<java.lang.String,ComponentAggregateStats>(2*_map490.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key491;
+                @org.apache.thrift.annotation.Nullable ComponentAggregateStats _val492;
                 for (int _i493 = 0; _i493 < _map490.size; ++_i493)
                 {
                   _key491 = iprot.readString();
@@ -1817,8 +1792,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list494 = iprot.readListBegin();
-                struct.exec_stats = new ArrayList<ExecutorAggregateStats>(_list494.size);
-                ExecutorAggregateStats _elem495;
+                struct.exec_stats = new java.util.ArrayList<ExecutorAggregateStats>(_list494.size);
+                @org.apache.thrift.annotation.Nullable ExecutorAggregateStats _elem495;
                 for (int _i496 = 0; _i496 < _list494.size; ++_i496)
                 {
                   _elem495 = new ExecutorAggregateStats();
@@ -1836,8 +1811,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list497 = iprot.readListBegin();
-                struct.errors = new ArrayList<ErrorInfo>(_list497.size);
-                ErrorInfo _elem498;
+                struct.errors = new java.util.ArrayList<ErrorInfo>(_list497.size);
+                @org.apache.thrift.annotation.Nullable ErrorInfo _elem498;
                 for (int _i499 = 0; _i499 < _list497.size; ++_i499)
                 {
                   _elem498 = new ErrorInfo();
@@ -1888,8 +1863,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map500 = iprot.readMapBegin();
-                struct.resources_map = new HashMap<String,Double>(2*_map500.size);
-                String _key501;
+                struct.resources_map = new java.util.HashMap<java.lang.String,java.lang.Double>(2*_map500.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key501;
                 double _val502;
                 for (int _i503 = 0; _i503 < _map500.size; ++_i503)
                 {
@@ -1956,7 +1931,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
           oprot.writeFieldBegin(WINDOW_TO_STATS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, struct.window_to_stats.size()));
-            for (Map.Entry<String, ComponentAggregateStats> _iter504 : struct.window_to_stats.entrySet())
+            for (java.util.Map.Entry<java.lang.String, ComponentAggregateStats> _iter504 : struct.window_to_stats.entrySet())
             {
               oprot.writeString(_iter504.getKey());
               _iter504.getValue().write(oprot);
@@ -1971,7 +1946,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
           oprot.writeFieldBegin(GSID_TO_INPUT_STATS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.STRUCT, struct.gsid_to_input_stats.size()));
-            for (Map.Entry<GlobalStreamId, ComponentAggregateStats> _iter505 : struct.gsid_to_input_stats.entrySet())
+            for (java.util.Map.Entry<GlobalStreamId, ComponentAggregateStats> _iter505 : struct.gsid_to_input_stats.entrySet())
             {
               _iter505.getKey().write(oprot);
               _iter505.getValue().write(oprot);
@@ -1986,7 +1961,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
           oprot.writeFieldBegin(SID_TO_OUTPUT_STATS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, struct.sid_to_output_stats.size()));
-            for (Map.Entry<String, ComponentAggregateStats> _iter506 : struct.sid_to_output_stats.entrySet())
+            for (java.util.Map.Entry<java.lang.String, ComponentAggregateStats> _iter506 : struct.sid_to_output_stats.entrySet())
             {
               oprot.writeString(_iter506.getKey());
               _iter506.getValue().write(oprot);
@@ -2055,7 +2030,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
           oprot.writeFieldBegin(RESOURCES_MAP_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.DOUBLE, struct.resources_map.size()));
-            for (Map.Entry<String, Double> _iter509 : struct.resources_map.entrySet())
+            for (java.util.Map.Entry<java.lang.String, java.lang.Double> _iter509 : struct.resources_map.entrySet())
             {
               oprot.writeString(_iter509.getKey());
               oprot.writeDouble(_iter509.getValue());
@@ -2071,20 +2046,20 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
 
   }
 
-  private static class ComponentPageInfoTupleSchemeFactory implements SchemeFactory {
+  private static class ComponentPageInfoTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public ComponentPageInfoTupleScheme getScheme() {
       return new ComponentPageInfoTupleScheme();
     }
   }
 
-  private static class ComponentPageInfoTupleScheme extends TupleScheme<ComponentPageInfo> {
+  private static class ComponentPageInfoTupleScheme extends org.apache.thrift.scheme.TupleScheme<ComponentPageInfo> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, ComponentPageInfo struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeString(struct.component_id);
       oprot.writeI32(struct.component_type.getValue());
-      BitSet optionals = new BitSet();
+      java.util.BitSet optionals = new java.util.BitSet();
       if (struct.is_set_topology_id()) {
         optionals.set(0);
       }
@@ -2143,7 +2118,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (struct.is_set_window_to_stats()) {
         {
           oprot.writeI32(struct.window_to_stats.size());
-          for (Map.Entry<String, ComponentAggregateStats> _iter510 : struct.window_to_stats.entrySet())
+          for (java.util.Map.Entry<java.lang.String, ComponentAggregateStats> _iter510 : struct.window_to_stats.entrySet())
           {
             oprot.writeString(_iter510.getKey());
             _iter510.getValue().write(oprot);
@@ -2153,7 +2128,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (struct.is_set_gsid_to_input_stats()) {
         {
           oprot.writeI32(struct.gsid_to_input_stats.size());
-          for (Map.Entry<GlobalStreamId, ComponentAggregateStats> _iter511 : struct.gsid_to_input_stats.entrySet())
+          for (java.util.Map.Entry<GlobalStreamId, ComponentAggregateStats> _iter511 : struct.gsid_to_input_stats.entrySet())
           {
             _iter511.getKey().write(oprot);
             _iter511.getValue().write(oprot);
@@ -2163,7 +2138,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (struct.is_set_sid_to_output_stats()) {
         {
           oprot.writeI32(struct.sid_to_output_stats.size());
-          for (Map.Entry<String, ComponentAggregateStats> _iter512 : struct.sid_to_output_stats.entrySet())
+          for (java.util.Map.Entry<java.lang.String, ComponentAggregateStats> _iter512 : struct.sid_to_output_stats.entrySet())
           {
             oprot.writeString(_iter512.getKey());
             _iter512.getValue().write(oprot);
@@ -2203,7 +2178,7 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (struct.is_set_resources_map()) {
         {
           oprot.writeI32(struct.resources_map.size());
-          for (Map.Entry<String, Double> _iter515 : struct.resources_map.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.lang.Double> _iter515 : struct.resources_map.entrySet())
           {
             oprot.writeString(_iter515.getKey());
             oprot.writeDouble(_iter515.getValue());
@@ -2214,12 +2189,12 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, ComponentPageInfo struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.component_id = iprot.readString();
       struct.set_component_id_isSet(true);
       struct.component_type = org.apache.storm.generated.ComponentType.findByValue(iprot.readI32());
       struct.set_component_type_isSet(true);
-      BitSet incoming = iprot.readBitSet(14);
+      java.util.BitSet incoming = iprot.readBitSet(14);
       if (incoming.get(0)) {
         struct.topology_id = iprot.readString();
         struct.set_topology_id_isSet(true);
@@ -2239,9 +2214,9 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (incoming.get(4)) {
         {
           org.apache.thrift.protocol.TMap _map516 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.window_to_stats = new HashMap<String,ComponentAggregateStats>(2*_map516.size);
-          String _key517;
-          ComponentAggregateStats _val518;
+          struct.window_to_stats = new java.util.HashMap<java.lang.String,ComponentAggregateStats>(2*_map516.size);
+          @org.apache.thrift.annotation.Nullable java.lang.String _key517;
+          @org.apache.thrift.annotation.Nullable ComponentAggregateStats _val518;
           for (int _i519 = 0; _i519 < _map516.size; ++_i519)
           {
             _key517 = iprot.readString();
@@ -2255,9 +2230,9 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (incoming.get(5)) {
         {
           org.apache.thrift.protocol.TMap _map520 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRUCT, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.gsid_to_input_stats = new HashMap<GlobalStreamId,ComponentAggregateStats>(2*_map520.size);
-          GlobalStreamId _key521;
-          ComponentAggregateStats _val522;
+          struct.gsid_to_input_stats = new java.util.HashMap<GlobalStreamId,ComponentAggregateStats>(2*_map520.size);
+          @org.apache.thrift.annotation.Nullable GlobalStreamId _key521;
+          @org.apache.thrift.annotation.Nullable ComponentAggregateStats _val522;
           for (int _i523 = 0; _i523 < _map520.size; ++_i523)
           {
             _key521 = new GlobalStreamId();
@@ -2272,9 +2247,9 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (incoming.get(6)) {
         {
           org.apache.thrift.protocol.TMap _map524 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.sid_to_output_stats = new HashMap<String,ComponentAggregateStats>(2*_map524.size);
-          String _key525;
-          ComponentAggregateStats _val526;
+          struct.sid_to_output_stats = new java.util.HashMap<java.lang.String,ComponentAggregateStats>(2*_map524.size);
+          @org.apache.thrift.annotation.Nullable java.lang.String _key525;
+          @org.apache.thrift.annotation.Nullable ComponentAggregateStats _val526;
           for (int _i527 = 0; _i527 < _map524.size; ++_i527)
           {
             _key525 = iprot.readString();
@@ -2288,8 +2263,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (incoming.get(7)) {
         {
           org.apache.thrift.protocol.TList _list528 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.exec_stats = new ArrayList<ExecutorAggregateStats>(_list528.size);
-          ExecutorAggregateStats _elem529;
+          struct.exec_stats = new java.util.ArrayList<ExecutorAggregateStats>(_list528.size);
+          @org.apache.thrift.annotation.Nullable ExecutorAggregateStats _elem529;
           for (int _i530 = 0; _i530 < _list528.size; ++_i530)
           {
             _elem529 = new ExecutorAggregateStats();
@@ -2302,8 +2277,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (incoming.get(8)) {
         {
           org.apache.thrift.protocol.TList _list531 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.errors = new ArrayList<ErrorInfo>(_list531.size);
-          ErrorInfo _elem532;
+          struct.errors = new java.util.ArrayList<ErrorInfo>(_list531.size);
+          @org.apache.thrift.annotation.Nullable ErrorInfo _elem532;
           for (int _i533 = 0; _i533 < _list531.size; ++_i533)
           {
             _elem532 = new ErrorInfo();
@@ -2333,8 +2308,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
       if (incoming.get(13)) {
         {
           org.apache.thrift.protocol.TMap _map534 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.DOUBLE, iprot.readI32());
-          struct.resources_map = new HashMap<String,Double>(2*_map534.size);
-          String _key535;
+          struct.resources_map = new java.util.HashMap<java.lang.String,java.lang.Double>(2*_map534.size);
+          @org.apache.thrift.annotation.Nullable java.lang.String _key535;
           double _val536;
           for (int _i537 = 0; _i537 < _map534.size; ++_i537)
           {
@@ -2348,5 +2323,8 @@ public class ComponentPageInfo implements org.apache.thrift.TBase<ComponentPageI
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/ComponentType.java b/storm-core/src/jvm/org/apache/storm/generated/ComponentType.java
index 7a9fd66..e5a4dc9 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/ComponentType.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/ComponentType.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -24,10 +24,7 @@
 package org.apache.storm.generated;
 
 
-import java.util.Map;
-import java.util.HashMap;
-import org.apache.thrift.TEnum;
-
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public enum ComponentType implements org.apache.thrift.TEnum {
   BOLT(1),
   SPOUT(2);
@@ -49,6 +46,7 @@ public enum ComponentType implements org.apache.thrift.TEnum {
    * Find a the enum type by its integer value, as defined in the Thrift IDL.
    * @return null if the value is not found.
    */
+  @org.apache.thrift.annotation.Nullable
   public static ComponentType findByValue(int value) { 
     switch (value) {
       case 1:
diff --git a/storm-core/src/jvm/org/apache/storm/generated/Credentials.java b/storm-core/src/jvm/org/apache/storm/generated/Credentials.java
index 231af06..b4e86e8 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/Credentials.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/Credentials.java
@@ -16,63 +16,33 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
 public class Credentials implements org.apache.thrift.TBase<Credentials, Credentials._Fields>, java.io.Serializable, Cloneable, Comparable<Credentials> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Credentials");
 
   private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField("creds", org.apache.thrift.protocol.TType.MAP, (short)1);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new CredentialsStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new CredentialsTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new CredentialsStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new CredentialsTupleSchemeFactory();
 
-  private Map<String,String> creds; // required
+  private @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.String> creds; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     CREDS((short)1, "creds");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -80,6 +50,7 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // CREDS
@@ -95,21 +66,22 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -118,20 +90,20 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
   // isset id assignments
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.CREDS, new org.apache.thrift.meta_data.FieldMetaData("creds", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Credentials.class, metaDataMap);
   }
 
@@ -139,7 +111,7 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
   }
 
   public Credentials(
-    Map<String,String> creds)
+    java.util.Map<java.lang.String,java.lang.String> creds)
   {
     this();
     this.creds = creds;
@@ -150,7 +122,7 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
    */
   public Credentials(Credentials other) {
     if (other.is_set_creds()) {
-      Map<String,String> __this__creds = new HashMap<String,String>(other.creds);
+      java.util.Map<java.lang.String,java.lang.String> __this__creds = new java.util.HashMap<java.lang.String,java.lang.String>(other.creds);
       this.creds = __this__creds;
     }
   }
@@ -168,18 +140,19 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
     return (this.creds == null) ? 0 : this.creds.size();
   }
 
-  public void put_to_creds(String key, String val) {
+  public void put_to_creds(java.lang.String key, java.lang.String val) {
     if (this.creds == null) {
-      this.creds = new HashMap<String,String>();
+      this.creds = new java.util.HashMap<java.lang.String,java.lang.String>();
     }
     this.creds.put(key, val);
   }
 
-  public Map<String,String> get_creds() {
+  @org.apache.thrift.annotation.Nullable
+  public java.util.Map<java.lang.String,java.lang.String> get_creds() {
     return this.creds;
   }
 
-  public void set_creds(Map<String,String> creds) {
+  public void set_creds(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.String> creds) {
     this.creds = creds;
   }
 
@@ -198,43 +171,44 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case CREDS:
       if (value == null) {
         unset_creds();
       } else {
-        set_creds((Map<String,String>)value);
+        set_creds((java.util.Map<java.lang.String,java.lang.String>)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case CREDS:
       return get_creds();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
     case CREDS:
       return is_set_creds();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof Credentials)
@@ -245,6 +219,8 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
   public boolean equals(Credentials that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_creds = true && this.is_set_creds();
     boolean that_present_creds = true && that.is_set_creds();
@@ -260,14 +236,13 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_creds = true && (is_set_creds());
-    list.add(present_creds);
-    if (present_creds)
-      list.add(creds);
+    hashCode = hashCode * 8191 + ((is_set_creds()) ? 131071 : 524287);
+    if (is_set_creds())
+      hashCode = hashCode * 8191 + creds.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -278,7 +253,7 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_creds()).compareTo(other.is_set_creds());
+    lastComparison = java.lang.Boolean.valueOf(is_set_creds()).compareTo(other.is_set_creds());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -291,21 +266,22 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("Credentials(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("Credentials(");
     boolean first = true;
 
     sb.append("creds:");
@@ -336,7 +312,7 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
@@ -344,13 +320,13 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
     }
   }
 
-  private static class CredentialsStandardSchemeFactory implements SchemeFactory {
+  private static class CredentialsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public CredentialsStandardScheme getScheme() {
       return new CredentialsStandardScheme();
     }
   }
 
-  private static class CredentialsStandardScheme extends StandardScheme<Credentials> {
+  private static class CredentialsStandardScheme extends org.apache.thrift.scheme.StandardScheme<Credentials> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, Credentials struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -366,9 +342,9 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
                 org.apache.thrift.protocol.TMap _map548 = iprot.readMapBegin();
-                struct.creds = new HashMap<String,String>(2*_map548.size);
-                String _key549;
-                String _val550;
+                struct.creds = new java.util.HashMap<java.lang.String,java.lang.String>(2*_map548.size);
+                @org.apache.thrift.annotation.Nullable java.lang.String _key549;
+                @org.apache.thrift.annotation.Nullable java.lang.String _val550;
                 for (int _i551 = 0; _i551 < _map548.size; ++_i551)
                 {
                   _key549 = iprot.readString();
@@ -399,7 +375,7 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
         oprot.writeFieldBegin(CREDS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.creds.size()));
-          for (Map.Entry<String, String> _iter552 : struct.creds.entrySet())
+          for (java.util.Map.Entry<java.lang.String, java.lang.String> _iter552 : struct.creds.entrySet())
           {
             oprot.writeString(_iter552.getKey());
             oprot.writeString(_iter552.getValue());
@@ -414,20 +390,20 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
 
   }
 
-  private static class CredentialsTupleSchemeFactory implements SchemeFactory {
+  private static class CredentialsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public CredentialsTupleScheme getScheme() {
       return new CredentialsTupleScheme();
     }
   }
 
-  private static class CredentialsTupleScheme extends TupleScheme<Credentials> {
+  private static class CredentialsTupleScheme extends org.apache.thrift.scheme.TupleScheme<Credentials> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, Credentials struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       {
         oprot.writeI32(struct.creds.size());
-        for (Map.Entry<String, String> _iter553 : struct.creds.entrySet())
+        for (java.util.Map.Entry<java.lang.String, java.lang.String> _iter553 : struct.creds.entrySet())
         {
           oprot.writeString(_iter553.getKey());
           oprot.writeString(_iter553.getValue());
@@ -437,12 +413,12 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, Credentials struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       {
         org.apache.thrift.protocol.TMap _map554 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-        struct.creds = new HashMap<String,String>(2*_map554.size);
-        String _key555;
-        String _val556;
+        struct.creds = new java.util.HashMap<java.lang.String,java.lang.String>(2*_map554.size);
+        @org.apache.thrift.annotation.Nullable java.lang.String _key555;
+        @org.apache.thrift.annotation.Nullable java.lang.String _val556;
         for (int _i557 = 0; _i557 < _map554.size; ++_i557)
         {
           _key555 = iprot.readString();
@@ -454,5 +430,8 @@ public class Credentials implements org.apache.thrift.TBase<Credentials, Credent
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/DRPCExecutionException.java b/storm-core/src/jvm/org/apache/storm/generated/DRPCExecutionException.java
index c7ba94f..8b2c10b 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/DRPCExecutionException.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/DRPCExecutionException.java
@@ -16,63 +16,33 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-
-import org.apache.thrift.scheme.TupleScheme;
-import org.apache.thrift.protocol.TTupleProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.EncodingUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.async.AsyncMethodCallback;
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.EnumMap;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.EnumSet;
-import java.util.Collections;
-import java.util.BitSet;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import javax.annotation.Generated;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
-public class DRPCExecutionException extends TException implements org.apache.thrift.TBase<DRPCExecutionException, DRPCExecutionException._Fields>, java.io.Serializable, Cloneable, Comparable<DRPCExecutionException> {
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)")
+public class DRPCExecutionException extends org.apache.thrift.TException implements org.apache.thrift.TBase<DRPCExecutionException, DRPCExecutionException._Fields>, java.io.Serializable, Cloneable, Comparable<DRPCExecutionException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DRPCExecutionException");
 
   private static final org.apache.thrift.protocol.TField MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("msg", org.apache.thrift.protocol.TType.STRING, (short)1);
 
-  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
-  static {
-    schemes.put(StandardScheme.class, new DRPCExecutionExceptionStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new DRPCExecutionExceptionTupleSchemeFactory());
-  }
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new DRPCExecutionExceptionStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new DRPCExecutionExceptionTupleSchemeFactory();
 
-  private String msg; // required
+  private @org.apache.thrift.annotation.Nullable java.lang.String msg; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     MSG((short)1, "msg");
 
-    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
     static {
-      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
         byName.put(field.getFieldName(), field);
       }
     }
@@ -80,6 +50,7 @@ public class DRPCExecutionException extends TException implements org.apache.thr
     /**
      * Find the _Fields constant that matches fieldId, or null if its not found.
      */
+    @org.apache.thrift.annotation.Nullable
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
         case 1: // MSG
@@ -95,21 +66,22 @@ public class DRPCExecutionException extends TException implements org.apache.thr
      */
     public static _Fields findByThriftIdOrThrow(int fieldId) {
       _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
       return fields;
     }
 
     /**
      * Find the _Fields constant that matches name, or null if its not found.
      */
-    public static _Fields findByName(String name) {
+    @org.apache.thrift.annotation.Nullable
+    public static _Fields findByName(java.lang.String name) {
       return byName.get(name);
     }
 
     private final short _thriftId;
-    private final String _fieldName;
+    private final java.lang.String _fieldName;
 
-    _Fields(short thriftId, String fieldName) {
+    _Fields(short thriftId, java.lang.String fieldName) {
       _thriftId = thriftId;
       _fieldName = fieldName;
     }
@@ -118,18 +90,18 @@ public class DRPCExecutionException extends TException implements org.apache.thr
       return _thriftId;
     }
 
-    public String getFieldName() {
+    public java.lang.String getFieldName() {
       return _fieldName;
     }
   }
 
   // isset id assignments
-  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
-    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.MSG, new org.apache.thrift.meta_data.FieldMetaData("msg", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DRPCExecutionException.class, metaDataMap);
   }
 
@@ -137,7 +109,7 @@ public class DRPCExecutionException extends TException implements org.apache.thr
   }
 
   public DRPCExecutionException(
-    String msg)
+    java.lang.String msg)
   {
     this();
     this.msg = msg;
@@ -161,11 +133,12 @@ public class DRPCExecutionException extends TException implements org.apache.thr
     this.msg = null;
   }
 
-  public String get_msg() {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.String get_msg() {
     return this.msg;
   }
 
-  public void set_msg(String msg) {
+  public void set_msg(@org.apache.thrift.annotation.Nullable java.lang.String msg) {
     this.msg = msg;
   }
 
@@ -184,43 +157,44 @@ public class DRPCExecutionException extends TException implements org.apache.thr
     }
   }
 
-  public void setFieldValue(_Fields field, Object value) {
+  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
     switch (field) {
     case MSG:
       if (value == null) {
         unset_msg();
       } else {
-        set_msg((String)value);
+        set_msg((java.lang.String)value);
       }
       break;
 
     }
   }
 
-  public Object getFieldValue(_Fields field) {
+  @org.apache.thrift.annotation.Nullable
+  public java.lang.Object getFieldValue(_Fields field) {
     switch (field) {
     case MSG:
       return get_msg();
 
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
   public boolean isSet(_Fields field) {
     if (field == null) {
-      throw new IllegalArgumentException();
+      throw new java.lang.IllegalArgumentException();
     }
 
     switch (field) {
     case MSG:
       return is_set_msg();
     }
-    throw new IllegalStateException();
+    throw new java.lang.IllegalStateException();
   }
 
   @Override
-  public boolean equals(Object that) {
+  public boolean equals(java.lang.Object that) {
     if (that == null)
       return false;
     if (that instanceof DRPCExecutionException)
@@ -231,6 +205,8 @@ public class DRPCExecutionException extends TException implements org.apache.thr
   public boolean equals(DRPCExecutionException that) {
     if (that == null)
       return false;
+    if (this == that)
+      return true;
 
     boolean this_present_msg = true && this.is_set_msg();
     boolean that_present_msg = true && that.is_set_msg();
@@ -246,14 +222,13 @@ public class DRPCExecutionException extends TException implements org.apache.thr
 
   @Override
   public int hashCode() {
-    List<Object> list = new ArrayList<Object>();
+    int hashCode = 1;
 
-    boolean present_msg = true && (is_set_msg());
-    list.add(present_msg);
-    if (present_msg)
-      list.add(msg);
+    hashCode = hashCode * 8191 + ((is_set_msg()) ? 131071 : 524287);
+    if (is_set_msg())
+      hashCode = hashCode * 8191 + msg.hashCode();
 
-    return list.hashCode();
+    return hashCode;
   }
 
   @Override
@@ -264,7 +239,7 @@ public class DRPCExecutionException extends TException implements org.apache.thr
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(is_set_msg()).compareTo(other.is_set_msg());
+    lastComparison = java.lang.Boolean.valueOf(is_set_msg()).compareTo(other.is_set_msg());
     if (lastComparison != 0) {
       return lastComparison;
     }
@@ -277,21 +252,22 @@ public class DRPCExecutionException extends TException implements org.apache.thr
     return 0;
   }
 
+  @org.apache.thrift.annotation.Nullable
   public _Fields fieldForId(int fieldId) {
     return _Fields.findByThriftId(fieldId);
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    scheme(iprot).read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    scheme(oprot).write(oprot, this);
   }
 
   @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("DRPCExecutionException(");
+  public java.lang.String toString() {
+    java.lang.StringBuilder sb = new java.lang.StringBuilder("DRPCExecutionException(");
     boolean first = true;
 
     sb.append("msg:");
@@ -322,7 +298,7 @@ public class DRPCExecutionException extends TException implements org.apache.thr
     }
   }
 
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
     try {
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
@@ -330,13 +306,13 @@ public class DRPCExecutionException extends TException implements org.apache.thr
     }
   }
 
-  private static class DRPCExecutionExceptionStandardSchemeFactory implements SchemeFactory {
+  private static class DRPCExecutionExceptionStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public DRPCExecutionExceptionStandardScheme getScheme() {
       return new DRPCExecutionExceptionStandardScheme();
     }
   }
 
-  private static class DRPCExecutionExceptionStandardScheme extends StandardScheme<DRPCExecutionException> {
+  private static class DRPCExecutionExceptionStandardScheme extends org.apache.thrift.scheme.StandardScheme<DRPCExecutionException> {
 
     public void read(org.apache.thrift.protocol.TProtocol iprot, DRPCExecutionException struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
@@ -380,27 +356,30 @@ public class DRPCExecutionException extends TException implements org.apache.thr
 
   }
 
-  private static class DRPCExecutionExceptionTupleSchemeFactory implements SchemeFactory {
+  private static class DRPCExecutionExceptionTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
     public DRPCExecutionExceptionTupleScheme getScheme() {
       return new DRPCExecutionExceptionTupleScheme();
     }
   }
 
-  private static class DRPCExecutionExceptionTupleScheme extends TupleScheme<DRPCExecutionException> {
+  private static class DRPCExecutionExceptionTupleScheme extends org.apache.thrift.scheme.TupleScheme<DRPCExecutionException> {
 
     @Override
     public void write(org.apache.thrift.protocol.TProtocol prot, DRPCExecutionException struct) throws org.apache.thrift.TException {
-      TTupleProtocol oprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       oprot.writeString(struct.msg);
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, DRPCExecutionException struct) throws org.apache.thrift.TException {
-      TTupleProtocol iprot = (TTupleProtocol) prot;
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
       struct.msg = iprot.readString();
       struct.set_msg_isSet(true);
     }
   }
 
+  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
+    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
+  }
 }
 
diff --git a/storm-core/src/jvm/org/apache/storm/generated/DRPCRequest.java b/storm-core/src/jvm/org/apache/storm/generated/DRPCRequest.java
index 33d85c2..edf36cb 100644
--- a/storm-core/src/jvm/org/apache/storm/generated/DRPCRequest.java
+++ b/storm-core/src/jvm/org/apache/storm/generated/DRPCRequest.java
@@ -16,66 +16,36 @@
  * limitations under the License.
  */
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.12.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 package org.apache.storm.generated;
 
... 117769 lines suppressed ...