java_gen: work in progress commit of java generator
diff --git a/java_gen/java_code_gen.py b/java_gen/java_code_gen.py
new file mode 100644
index 0000000..91c89a7
--- /dev/null
+++ b/java_gen/java_code_gen.py
@@ -0,0 +1,68 @@
+import of_g
+import pdb
+import os
+
+import lang_java
+
+import loxi_utils.loxi_utils as loxi_utils
+
+import java_gen.msgs as msgs
+import java_gen.java_utils as java_utils
+
+def gen_all_java(out, name):
+ """ Generate all of the java files
+
+ @param out is an open file handle to a file called README
+ @param name should be 'README' and is ignored for the java
+ driver
+ """
+ messages = list()
+ actions = list()
+ instructions = list()
+ matches = list()
+ stat_types = list()
+ queue_prop = list()
+ lists = list()
+ for cls in of_g.unified:
+ print "! Classifying %s" % cls
+ if cls in [ 'of_stats_reply', 'of_flow_mod', 'of_stats_request' ] :
+ continue # doesn't work?!
+ if loxi_utils.class_is_stats_message(cls):
+ stat_types.append(cls)
+ elif loxi_utils.class_is_message(cls):
+ messages.append(cls)
+ elif loxi_utils.class_is_action(cls):
+ actions.append(cls)
+ elif loxi_utils.class_is_instruction(cls):
+ instructions.append(cls)
+ elif loxi_utils.class_is_oxm(cls):
+ matches.append(cls)
+ elif loxi_utils.class_is_queue_prop(cls):
+ queue_prop.append(cls)
+ elif loxi_utils.class_is_list(cls):
+ lists.append(cls)
+ else:
+ print "Skipping Unknown class object %s" % str(cls)
+ print "Parsed "
+ print " Messages: %d" % len(messages)
+ print " Actions: %d" % len(actions)
+ print " Instructions: %d" % len(instructions)
+ print " OXM matches: %d" % len(matches)
+ print " Stat types: %d" % len(stat_types)
+ print " Queue properties: %d" % len(queue_prop)
+ print " Lists: %d" % len(lists)
+ target_dir='loxi_output/openflowj'
+ basedir="%s/%s/" % (
+ target_dir,
+ lang_java.file_to_subdir_map['base_java'])
+ srcdir = "%s/src/main/java/org/openflow/protocol" % basedir
+ print "Outputting to %s" % basedir
+ if not os.path.exists(basedir):
+ os.makedirs(basedir)
+ java_utils.copy_prewrite_tree(basedir)
+ msgs.create_message_interfaces(messages,srcdir)
+ msgs.create_message_by_version(messages,srcdir)
+ msgs.create_of_type_enum(messages,srcdir)
+ with open('README.java-lang') as readme_src:
+ out.writelines(readme_src.readlines())
+ out.close()