Merge branch 'master' of github.com:floodlight/loxigen into group_mod

Conflicts:
	java_gen/java_model.py
	loxi_front_end/frontend.py
	loxi_front_end/frontend_ir.py
	loxigen.py
	py_gen/templates/message.py
	utest/test_frontend.py
diff --git a/java_gen/java_model.py b/java_gen/java_model.py
index d124f5a..824a320 100644
--- a/java_gen/java_model.py
+++ b/java_gen/java_model.py
@@ -61,7 +61,11 @@
     interface_blacklist = set( ("OFUint8", "OFUint32",))
     # registry of interface properties that should not be generated
     # map: $java_type -> set(java_name_property)
-    read_blacklist = defaultdict(lambda: set(), OFExperimenter=set(('data','subtype')), OFActionExperimenter=set(('data',)))
+    read_blacklist = defaultdict(lambda: set(),
+        OFExperimenter=set(('data','subtype')),
+        OFActionExperimenter=set(('data',)),
+        OFExperimenterStatsRequest=set(('data','subtype')),
+        OFExperimenterStatsReply=set(('data','subtype')))
     # 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',)))
     # interfaces that are virtual
@@ -502,9 +506,19 @@
         if re.match(r'OFStatsRequest$', self.name):
             return ("", "OFMessage", "T extends OFStatsReply")
         elif self.ir_class.is_subclassof('of_stats_request'):
-            return ("", "OFStatsRequest<{}>".format(re.sub(r'Request$', 'Reply', self.name)), None)
+            if self.ir_class.is_subclassof('of_bsn_stats_request'):
+                return ("", "OFBsnStatsRequest", None)
+            elif self.ir_class.is_subclassof('of_experimenter_stats_request'):
+                return ("", "OFExperimenterStatsRequest", None)
+            else:
+                return ("", "OFStatsRequest<{}>".format(re.sub(r'Request$', 'Reply', self.name)), None)
         elif self.ir_class.is_subclassof('of_stats_reply'):
-            return ("", "OFStatsReply", None)
+            if self.ir_class.is_subclassof('of_bsn_stats_reply'):
+                return ("", "OFBsnStatsReply", None)
+            elif self.ir_class.is_subclassof('of_experimenter_stats_reply'):
+                return ("", "OFExperimenterStatsReply", None)
+            else:
+                return ("", "OFStatsReply", None)
         elif self.ir_class.is_subclassof('of_error_msg'):
             return ("", "OFErrorMsg", None)
         elif self.ir_class.is_subclassof('of_flow_mod'):