java_gen: make OFFactory be a XidGenerator
diff --git a/java_gen/java_model.py b/java_gen/java_model.py
index 033ff20..410a1dd 100644
--- a/java_gen/java_model.py
+++ b/java_gen/java_model.py
@@ -378,14 +378,15 @@
             annotated_base_class = base_class + "<?>" if base_class == "OFOxm" else base_class
 
             factories[base_class] = OFFactory(package="%s.%s" % (prefix, package),
-                    name=base_class + "s", members=[], remove_prefix=remove_prefix, base_class=annotated_base_class, sub_factories={})
+                    name=base_class + "s", members=[], remove_prefix=remove_prefix, base_class=annotated_base_class, sub_factories={}, xid_generator=False)
 
         factories[""] = OFFactory(
                     package=prefix,
                     name="OFFactory",
                     remove_prefix="",
                     members=[], base_class="OFMessage", sub_factories=OrderedDict(
-                        ("{}{}s".format(n[2].lower(), n[3:]), "{}s".format(n)) for n in sub_factory_classes ))
+                        ("{}{}s".format(n[2].lower(), n[3:]), "{}s".format(n)) for n in sub_factory_classes ),
+                    xid_generator=True)
 
         for i in self.interfaces:
             for n, factory in factories.items():
@@ -421,7 +422,7 @@
             return True
 
 
-class OFFactory(namedtuple("OFFactory", ("package", "name", "members", "remove_prefix", "base_class", "sub_factories"))):
+class OFFactory(namedtuple("OFFactory", ("package", "name", "members", "remove_prefix", "base_class", "sub_factories", "xid_generator"))):
     @property
     def factory_classes(self):
             return [ OFFactoryClass(
@@ -624,6 +625,10 @@
     def writeable_members(self):
         return [ m for m in self.members if m.is_writeable ]
 
+    @memoize
+    def member_by_name(self, name):
+        return find(lambda m: m.name == name, self.members)
+
     @property
     @memoize
     def members(self):