diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index 4e32a37..ae4a5a9 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -2112,6 +2112,8 @@
     indent(out) << "new FieldValueMetaData(" << get_java_type_string(type);
     if (type->is_typedef()) {
       indent(out) << ", \"" << ((t_typedef*)type)->get_symbolic() << "\"";
+    } else if (((t_base_type*)type)->is_binary()) {
+      indent(out) << ", true";
     }
   }
   out << ")";
diff --git a/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java b/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java
index 2aad65d..2180b08 100644
--- a/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java
+++ b/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java
@@ -30,17 +30,24 @@
 
   private final boolean isTypedefType;
   private final String typedefName;
+  private final boolean isBinary;
 
-  public FieldValueMetaData(byte type) {
+  public FieldValueMetaData(byte type, boolean binary) {
     this.type = type;
     this.isTypedefType = false;
     this.typedefName = null;
+    this.isBinary = binary;
+  }
+
+  public FieldValueMetaData(byte type) {
+    this(type, false);
   }
 
   public FieldValueMetaData(byte type, String typedefName) {
     this.type = type;
     this.isTypedefType = true;
     this.typedefName = typedefName;
+    this.isBinary = false;
   }
 
   public boolean isTypedef() {
@@ -58,4 +65,8 @@
   public boolean isContainer() {
     return type == TType.LIST || type == TType.MAP || type == TType.SET;
   }
+
+  public boolean isBinary() {
+    return isBinary;
+  }
 }
diff --git a/lib/java/test/org/apache/thrift/TestStruct.java b/lib/java/test/org/apache/thrift/TestStruct.java
index e9f165d..61b384d 100644
--- a/lib/java/test/org/apache/thrift/TestStruct.java
+++ b/lib/java/test/org/apache/thrift/TestStruct.java
@@ -196,23 +196,28 @@
     Map<CrazyNesting._Fields, FieldMetaData> mdMap = CrazyNesting.metaDataMap;
 
     // Check for struct fields existence
-    assertEquals(3, mdMap.size());
+    assertEquals(4, mdMap.size());
     assertTrue(mdMap.containsKey(CrazyNesting._Fields.SET_FIELD));
     assertTrue(mdMap.containsKey(CrazyNesting._Fields.LIST_FIELD));
     assertTrue(mdMap.containsKey(CrazyNesting._Fields.STRING_FIELD));
+    assertTrue(mdMap.containsKey(CrazyNesting._Fields.BINARY_FIELD));
 
     // Check for struct fields contents
     assertEquals("string_field", mdMap.get(CrazyNesting._Fields.STRING_FIELD).fieldName);
     assertEquals("list_field", mdMap.get(CrazyNesting._Fields.LIST_FIELD).fieldName);
     assertEquals("set_field", mdMap.get(CrazyNesting._Fields.SET_FIELD).fieldName);
+    assertEquals("binary_field", mdMap.get(CrazyNesting._Fields.BINARY_FIELD).fieldName);
 
     assertEquals(TFieldRequirementType.DEFAULT, mdMap.get(CrazyNesting._Fields.STRING_FIELD).requirementType);
     assertEquals(TFieldRequirementType.REQUIRED, mdMap.get(CrazyNesting._Fields.LIST_FIELD).requirementType);
     assertEquals(TFieldRequirementType.OPTIONAL, mdMap.get(CrazyNesting._Fields.SET_FIELD).requirementType);
 
     assertEquals(TType.STRING, mdMap.get(CrazyNesting._Fields.STRING_FIELD).valueMetaData.type);
+    assertFalse(mdMap.get(CrazyNesting._Fields.STRING_FIELD).valueMetaData.isBinary());
     assertEquals(TType.LIST, mdMap.get(CrazyNesting._Fields.LIST_FIELD).valueMetaData.type);
     assertEquals(TType.SET, mdMap.get(CrazyNesting._Fields.SET_FIELD).valueMetaData.type);
+    assertEquals(TType.STRING, mdMap.get(CrazyNesting._Fields.BINARY_FIELD).valueMetaData.type);
+    assertTrue(mdMap.get(CrazyNesting._Fields.BINARY_FIELD).valueMetaData.isBinary());
 
     // Check nested structures
     assertTrue(mdMap.get(CrazyNesting._Fields.LIST_FIELD).valueMetaData.isContainer());
diff --git a/test/ThriftTest.thrift b/test/ThriftTest.thrift
index 5e927b5..88fbd79 100644
--- a/test/ThriftTest.thrift
+++ b/test/ThriftTest.thrift
@@ -94,7 +94,8 @@
 struct CrazyNesting {
   1: string string_field,
   2: optional set<Insanity> set_field,
-  3: required list< map<set<i32>,map<i32,set<list<map<Insanity,string>>>>>> list_field
+  3: required list< map<set<i32>,map<i32,set<list<map<Insanity,string>>>>>> list_field,
+  4: binary binary_field
 }
 
 exception Xception {
