java_gen: generate more classes
diff --git a/java_gen/java_model.py b/java_gen/java_model.py
index 6f5cfaa..f603411 100644
--- a/java_gen/java_model.py
+++ b/java_gen/java_model.py
@@ -46,9 +46,10 @@
 import java_gen.java_type as java_type
 
 class JavaModel(object):
-    enum_blacklist = set(("OFDefinitions","OFFlowWildcards"))
-    write_blacklist = defaultdict(lambda: set(), OFOxm=set(('typeLen',)), OFAction=set(('type',)))
-    virtual_interfaces = set(['OFOxm', 'OFAction' ])
+    enum_blacklist = set(("OFDefinitions",))
+    enum_entry_blacklist = defaultdict(lambda: set(), OFFlowWildcards=set([ "NW_DST_BITS", "NW_SRC_BITS", "NW_SRC_SHIFT", "NW_DST_SHIFT" ]))
+    write_blacklist = defaultdict(lambda: set(), OFOxm=set(('typeLen',)), OFAction=set(('type',)), OFInstruction=set(('type',)))
+    virtual_interfaces = set(['OFOxm', 'OFAction', 'OFInstruction' ])
 
     @property
     @memoize
@@ -112,10 +113,16 @@
             return False
         if clazz.interface.name == "OFTableMod":
             return False
+        if clazz.interface.name.startswith("OFMatchV"):
+            return True
         if loxi_utils.class_is_message(clazz.interface.c_name):
             return True
         if loxi_utils.class_is_oxm(clazz.interface.c_name):
             return True
+        if loxi_utils.class_is_action(clazz.interface.c_name):
+            return True
+        if loxi_utils.class_is_instruction(clazz.interface.c_name):
+            return True
         else:
             return False
 
@@ -193,6 +200,8 @@
     def class_info(self):
         if re.match(r'OFFlow(Add|Modify(Strict)?|Delete(Strict)?)$', self.name):
             return ("", "OFFlowMod")
+        elif re.match(r'OFMatch.*', self.name):
+            return ("", "Match")
         elif loxi_utils.class_is_message(self.c_name):
             return ("", "OFMessage")
         elif loxi_utils.class_is_action(self.c_name):
@@ -550,6 +559,8 @@
 
         self.entries = [ JavaEnumEntry(self, name, version_value_map)
                          for (name, version_value_map) in entry_name_version_value_map.items() ]
+
+        self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ]
         self.package = "org.openflow.protocol"
 
     def wire_type(self, version):