VPP-362 Implement dumping of LISP adjacencies
[vpp.git] / vpp-api / java / jvpp / gen / jvpp_gen.py
index 26bcea1..80bb4b9 100755 (executable)
 import argparse
 import importlib
 import sys
+import os
 
-import callback_gen
-import notification_gen
-import dto_gen
-import jvpp_callback_facade_gen
-import jvpp_future_facade_gen
-import jvpp_impl_gen
-import jvpp_c_gen
-import util
+from jvppgen import callback_gen
+from jvppgen import notification_gen
+from jvppgen import dto_gen
+from jvppgen import jvpp_callback_facade_gen
+from jvppgen import jvpp_future_facade_gen
+from jvppgen import jvpp_impl_gen
+from jvppgen import jvpp_c_gen
+from jvppgen import util
 
 # Invocation:
-# ~/Projects/vpp/vpp-api/jvpp/gen$ mkdir -p java/org/openvpp/jvpp && cd java/org/openvpp/jvpp
-# ~/Projects/vpp/vpp-api/jvpp/gen/java/org/openvpp/jvpp$ ../../../../jvpp_gen.py -idefs_api_vpp_papi.py
+# ~/Projects/vpp/vpp-api/jvpp/gen$ mkdir -p java/io/fd/vpp/jvpp && cd java/io/fd/vpp/jvpp
+# ~/Projects/vpp/vpp-api/jvpp/gen/java/io/fd/vpp/jvpp$ ../../../../jvpp_gen.py -idefs_api_vpp_papi.py
 #
 # Compilation:
-# ~/Projects/vpp/vpp-api/jvpp/gen/java/org/openvpp/jvpp$ javac *.java dto/*.java callback/*.java
+# ~/Projects/vpp/vpp-api/jvpp/gen/java/io/fd/vpp/jvpp$ javac *.java dto/*.java callback/*.java
 #
 # where
 # defs_api_vpp_papi.py - vpe.api in python format (generated by vppapigen)
-from util import vpp_2_jni_type_mapping
+from jvppgen.util import vpp_2_jni_type_mapping
 
 parser = argparse.ArgumentParser(description='VPP Java API generator')
 parser.add_argument('-i', action="store", dest="inputfile")
+parser.add_argument('--plugin_name', action="store", dest="plugin_name")
+parser.add_argument('--control_ping_class', action="store", dest="control_ping_class", default="ControlPing")
 args = parser.parse_args()
 
 sys.path.append(".")
 
-inputfile = args.inputfile.replace('.py', '')
+print "args.inputfile %s" % args.inputfile
+importdir = os.path.dirname(args.inputfile)
+print "importdir %s" % importdir
+inputfile = os.path.basename(args.inputfile)
+inputfile = inputfile.replace('.py', '')
+print "inputfile %s" % inputfile
+plugin_name = args.plugin_name
+print "plugin_name %s" % plugin_name
+control_ping_class = args.control_ping_class
+print "control_ping_class %s" % control_ping_class
+sys.path.append(importdir)
 cfg = importlib.import_module(inputfile, package=None)
 
 
 # FIXME: functions unsupported due to problems with vpe.api
 def is_supported(f_name):
-    return f_name not in {'vnet_ip4_fib_counters', 'vnet_ip6_fib_counters'}
+    return f_name not in {'vnet_ip4_fib_counters', 'vnet_ip6_fib_counters',
+            'lisp_adjacencies_get_reply', 'lisp_adjacencies_get'}
 
 
 def is_request_field(field_name):
@@ -96,7 +110,7 @@ def get_definitions():
     # Pass 1
     func_list = []
     func_name = {}
-    for a in cfg.vppapidef:
+    for a in cfg.messages:
         if not is_supported(a[0]):
             continue
 
@@ -124,18 +138,20 @@ def get_definitions():
 
 func_list, func_name = get_definitions()
 
-base_package = 'org.openvpp.jvpp'
+base_package = 'io.fd.vpp.jvpp'
+plugin_package = base_package + '.' + plugin_name
 dto_package = 'dto'
 callback_package = 'callback'
 notification_package = 'notification'
 future_package = 'future'
 # TODO find better package name
 callback_facade_package = 'callfacade'
-
-dto_gen.generate_dtos(func_list, base_package, dto_package, args.inputfile)
-jvpp_impl_gen.generate_jvpp(func_list, base_package, dto_package, args.inputfile)
-callback_gen.generate_callbacks(func_list, base_package, callback_package, dto_package, args.inputfile)
-notification_gen.generate_notification_registry(func_list, base_package, notification_package, callback_package, dto_package, args.inputfile)
-jvpp_c_gen.generate_jvpp(func_list, args.inputfile)
-jvpp_future_facade_gen.generate_jvpp(func_list, base_package, dto_package, callback_package, notification_package, future_package, args.inputfile)
-jvpp_callback_facade_gen.generate_jvpp(func_list, base_package, dto_package, callback_package, notification_package, callback_facade_package, args.inputfile)
+control_ping_class_fqn = "%s.%s.%s" % (plugin_package, dto_package, control_ping_class)
+
+dto_gen.generate_dtos(func_list, base_package, plugin_package, plugin_name.title(), dto_package, args.inputfile)
+jvpp_impl_gen.generate_jvpp(func_list, base_package, plugin_package, plugin_name, control_ping_class_fqn, dto_package, args.inputfile)
+callback_gen.generate_callbacks(func_list, base_package, plugin_package, plugin_name.title(), callback_package, dto_package, args.inputfile)
+notification_gen.generate_notification_registry(func_list, base_package, plugin_package, plugin_name.title(), notification_package, callback_package, dto_package, args.inputfile)
+jvpp_c_gen.generate_jvpp(func_list, plugin_name, args.inputfile)
+jvpp_future_facade_gen.generate_jvpp(func_list, base_package, plugin_package, plugin_name.title(), dto_package, callback_package, notification_package, future_package, args.inputfile)
+jvpp_callback_facade_gen.generate_jvpp(func_list, base_package, plugin_package, plugin_name.title(), dto_package, callback_package, notification_package, callback_facade_package, args.inputfile)