java_gen: make OFFactory be a XidGenerator
diff --git a/java_gen/templates/of_factory_class.java b/java_gen/templates/of_factory_class.java
index 86b092a..5263226 100644
--- a/java_gen/templates/of_factory_class.java
+++ b/java_gen/templates/of_factory_class.java
@@ -40,7 +40,10 @@
public class ${factory.name} implements ${factory.interface.name} {
public final static ${factory.name} INSTANCE = new ${factory.name}();
- private ${factory.name}() {}
+
+ //:: if factory.interface.xid_generator:
+ private final XidGenerator xidGenerator = XidGenerators.global();
+ //:: #endif
//:: for name, clazz in factory.interface.sub_factories.items():
public ${clazz} ${name}() {
@@ -59,7 +62,7 @@
//:: if len(i.writeable_members) > 0:
public ${i.name}.Builder ${factory.interface.method_name(i, builder=True)}() {
//:: if i.has_version(factory.version) and model.generate_class(i.versioned_class(factory.version)):
- return new ${i.versioned_class(factory.version).name}.Builder();
+ return new ${i.versioned_class(factory.version).name}.Builder()${".setXid(nextXid())" if i.member_by_name("xid") else ""};
//:: else:
throw new UnsupportedOperationException("${i.name} not supported in version ${factory.version}");
//:: #endif
@@ -72,12 +75,12 @@
//:: general_get_match_func_written = True
//:: #endif
//:: if len(i.writeable_members) <= 2:
- public ${i.name} ${factory.interface.method_name(i, builder=False)}(${", ".join("%s %s" % (p.java_type.public_type, p.name) for p in i.writeable_members)}) {
+ public ${i.name} ${factory.interface.method_name(i, builder=False)}(${", ".join("%s %s" % (p.java_type.public_type, p.name) for p in i.writeable_members if p.name != "xid" )}) {
//:: if i.has_version(factory.version) and model.generate_class(i.versioned_class(factory.version)):
//:: if len(i.writeable_members) > 0:
return new ${i.versioned_class(factory.version).name}(
${",\n ".join(
- [ prop.name for prop in i.versioned_class(factory.version).data_members])}
+ [ prop.name if prop.name != "xid" else "nextXid()" for prop in i.versioned_class(factory.version).data_members])}
);
//:: else:
return ${i.versioned_class(factory.version).name}.INSTANCE;
@@ -155,5 +158,10 @@
}
}
//:: #endif
+//:: if factory.interface.xid_generator:
+ public long nextXid() {
+ return xidGenerator.nextXid();
+ }
+//:: #endif
}