java_gen: support TLVs
diff --git a/java_gen/java_model.py b/java_gen/java_model.py
index f1c8c12..c4e4ea5 100644
--- a/java_gen/java_model.py
+++ b/java_gen/java_model.py
@@ -68,7 +68,15 @@
         OFExperimenterStatsReply=set(('data','subtype')),
         OFInstructionExperimenter=set(('data',)))
     # map: $java_type -> set(java_name_property)
-    write_blacklist = defaultdict(lambda: set(), OFOxm=set(('typeLen',)), OFAction=set(('type',)), OFInstruction=set(('type',)), OFFlowMod=set(('command', )), OFExperimenter=set(('data','subtype')), OFActionExperimenter=set(('data',)))
+    write_blacklist = defaultdict(
+        lambda: set(),
+        OFOxm=set(('typeLen',)),
+        OFAction=set(('type',)),
+        OFInstruction=set(('type',)),
+        OFFlowMod=set(('command', )),
+        OFExperimenter=set(('data','subtype')),
+        OFActionExperimenter=set(('data',)),
+        OFBsnTlv=set(('type',)))
     # interfaces that are virtual
     virtual_interfaces = set(['OFOxm', 'OFInstruction', 'OFFlowMod', 'OFBsnVport' ])
 
@@ -512,6 +520,8 @@
             return ("", "OFHelloElem", None)
         elif loxi_utils.class_is_table_feature_prop(self.c_name):
             return ("", "OFTableFeatureProp", None)
+        elif loxi_utils.class_is_bsn_tlv(self.c_name):
+            return ("", "OFBsnTlv", None)
         else:
             return ("", None, None)
 
diff --git a/loxi_utils/loxi_utils.py b/loxi_utils/loxi_utils.py
index d5937ac..5d725a5 100644
--- a/loxi_utils/loxi_utils.py
+++ b/loxi_utils/loxi_utils.py
@@ -145,6 +145,12 @@
     u = _unified_by_name(cls)
     return u.is_instanceof("of_stats_request") or u.ir_instanceof("of_stats_reply")
 
+def class_is_bsn_tlv(cls):
+    """
+    Return True if cls_name is a bsn_tlv object
+    """
+    return _unified_by_name(cls).is_instanceof("of_bsn_tlv")
+
 def class_is_list(cls):
     """
     Return True if cls_name is a list object