jvpp: remove special request<>reply mappings 52/9752/1
authorMarek Gradzki <mgradzki@cisco.com>
Thu, 7 Dec 2017 15:49:26 +0000 (16:49 +0100)
committerMarek Gradzki <mgradzki@cisco.com>
Thu, 7 Dec 2017 15:54:28 +0000 (16:54 +0100)
Since L2FibTable removal
and introduction of dedicated SW Interface Event,
special message handling code can be removed.

The patch also fixes issues
found by Intelij's code inspection tool.

Change-Id: Ic4b2fd12ac30c7627f4cd6769716e4bb52ec0b10
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
src/vpp-api/java/jvpp/gen/jvpp_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/callback_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/dto_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/jni_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/jvpp_c_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/jvpp_callback_facade_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/jvpp_future_facade_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/jvpp_impl_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/notification_gen.py
src/vpp-api/java/jvpp/gen/jvppgen/util.py

index 6648a4f..ca2d262 100755 (executable)
@@ -15,7 +15,6 @@
 #
 
 import argparse
-import importlib
 import sys
 import os
 import json
index f0aee47..e1c31dd 100644 (file)
@@ -17,8 +17,6 @@ import os
 import util
 from string import Template
 
-from util import remove_suffix
-
 callback_suffix = "Callback"
 
 callback_template = Template("""
@@ -63,7 +61,7 @@ def generate_callbacks(func_list, base_package, plugin_package, plugin_name, cal
 
         camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name'])
 
-        if util.is_ignored(func['name']) or util.is_control_ping(camel_case_name_with_suffix):
+        if util.is_control_ping(camel_case_name_with_suffix):
             continue
         if not util.is_reply(camel_case_name_with_suffix) and not util.is_notification(func['name']):
             continue
index e94bbc5..5f2cdc2 100644 (file)
@@ -72,7 +72,7 @@ def generate_dtos(func_list, base_package, plugin_package, plugin_name, dto_pack
         camel_case_method_name = util.underscore_to_camelcase(func['name'])
         dto_path = os.path.join(dto_package, camel_case_dto_name + ".java")
 
-        if util.is_ignored(func['name']) or util.is_control_ping(camel_case_dto_name):
+        if util.is_control_ping(camel_case_dto_name):
             continue
 
         fields = generate_dto_fields(camel_case_dto_name, func)
@@ -83,7 +83,7 @@ def generate_dtos(func_list, base_package, plugin_package, plugin_name, dto_pack
         if not util.is_just_notification(func["name"]):
             if util.is_reply(camel_case_dto_name):
                 description = "reply DTO"
-                request_dto_name = get_request_name(camel_case_dto_name, func['name'])
+                request_dto_name = util.remove_reply_suffix(camel_case_dto_name)
                 if util.is_details(camel_case_dto_name):
                     # FIXME assumption that dump calls end with "Dump" suffix. Not enforced in vpe.api
                     base_type += "JVppReply<%s.%s.%s>" % (plugin_package, dto_package, request_dto_name + "Dump")
@@ -272,13 +272,6 @@ dump_dto_suffix = "ReplyDump"
 dump_reply_artificial_dtos = {}
 
 
-# Returns request name or special one from unconventional_naming_rep_req map
-def get_request_name(camel_case_dto_name, func_name):
-    return util.underscore_to_camelcase_upper(
-        util.unconventional_naming_rep_req[func_name]) if func_name in util.unconventional_naming_rep_req \
-        else util.remove_reply_suffix(camel_case_dto_name)
-
-
 def flush_dump_reply_dtos(inputfile):
     for dump_reply_artificial_dto in dump_reply_artificial_dtos.values():
         dto_path = os.path.join(dump_reply_artificial_dto['dto_package'],
index cb0d66e..8c8be5b 100644 (file)
@@ -27,9 +27,6 @@ default_dto_field_setter_template = Template("""
     (*env)->Set${jni_setter}(env, ${object_name}, ${field_reference_name}FieldId, mp->${c_name});
 """)
 
-variable_length_array_value_template = Template("""mp->${length_var_name}""")
-variable_length_array_template = Template("""clib_net_to_host_${length_field_type}(${value})""")
-
 u16_dto_field_setter_template = Template("""
     (*env)->Set${jni_setter}(env, ${object_name}, ${field_reference_name}FieldId, clib_net_to_host_u16(mp->${c_name}));
 """)
@@ -185,10 +182,6 @@ i32_struct_setter_template = Template("""
 u64_struct_setter_template = Template("""
     mp->${c_name} = clib_host_to_net_u64(${field_reference_name});""")
 
-array_length_enforcement_template = Template("""
-        size_t max_size = ${field_length};
-        if (cnt > max_size) cnt = max_size;""")
-
 u8_array_struct_setter_template = Template("""
     if (${field_reference_name}) {
         jsize cnt = (*env)->GetArrayLength (env, ${field_reference_name});
index e2f6aa4..e67b6ec 100644 (file)
 # limitations under the License.
 #
 
-import os, util
+import util
 from string import Template
 
 import jni_gen
 
 
-def is_manually_generated(f_name, plugin_name):
+def is_manually_generated(f_name):
     return f_name in {'control_ping_reply'}
 
 
@@ -67,7 +67,7 @@ def generate_class_cache(func_list, plugin_name):
         class_name = util.underscore_to_camelcase_upper(c_name)
         ref_name = util.underscore_to_camelcase(c_name)
 
-        if util.is_ignored(c_name) or util.is_control_ping(class_name):
+        if util.is_control_ping(class_name):
             continue
 
         class_references.append(class_reference_template.substitute(
@@ -144,8 +144,8 @@ def generate_jni_impl(func_list, plugin_name, inputfile):
     for f in func_list:
         f_name = f['name']
         camel_case_function_name = util.underscore_to_camelcase(f_name)
-        if is_manually_generated(f_name, plugin_name) or util.is_reply(camel_case_function_name) \
-                or util.is_ignored(f_name) or util.is_just_notification(f_name):
+        if is_manually_generated(f_name) or util.is_reply(camel_case_function_name) \
+                or util.is_just_notification(f_name):
             continue
 
         arguments = ''
@@ -254,7 +254,7 @@ def generate_msg_handlers(func_list, plugin_name, inputfile):
         dto_name = util.underscore_to_camelcase_upper(handler_name)
         ref_name = util.underscore_to_camelcase(handler_name)
 
-        if is_manually_generated(handler_name, plugin_name) or util.is_ignored(handler_name):
+        if is_manually_generated(handler_name):
             continue
 
         if not util.is_reply(dto_name) and not util.is_notification(handler_name):
@@ -308,7 +308,7 @@ def generate_handler_registration(func_list):
         name = f['name']
         camelcase_name = util.underscore_to_camelcase(f['name'])
 
-        if (not util.is_reply(camelcase_name) and not util.is_notification(name)) or util.is_ignored(name) \
+        if (not util.is_reply(camelcase_name) and not util.is_notification(name)) \
                 or util.is_control_ping(camelcase_name):
             continue
 
@@ -328,9 +328,6 @@ def generate_api_verification(func_list):
     for f in func_list:
         name = f['name']
 
-        if util.is_ignored(name):
-            continue
-
         api_verification.append(api_verification_template.substitute(
             name=name,
             crc=f['crc']))
index 53e9f49..f265987 100644 (file)
@@ -17,7 +17,6 @@ import os, util
 from string import Template
 
 import callback_gen
-import dto_gen
 
 jvpp_ifc_template = Template("""
 package $plugin_package.$callback_facade_package;
@@ -112,7 +111,7 @@ def generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_pack
     methods_impl = []
     for func in func_list:
 
-        if util.is_notification(func['name']) or util.is_ignored(func['name']):
+        if util.is_notification(func['name']):
             continue
 
         camel_case_name = util.underscore_to_camelcase(func['name'])
@@ -121,10 +120,10 @@ def generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_pack
             continue
 
         # Strip suffix for dump calls
-        callback_type = get_request_name(camel_case_name_upper, func['name'])
-        if (util.is_dump(camel_case_name_upper)):
+        callback_type = get_request_name(camel_case_name_upper)
+        if util.is_dump(camel_case_name_upper):
             callback_type += "Details"
-        elif (not util.is_notification(camel_case_name_upper)):
+        elif not util.is_notification(camel_case_name_upper):
             callback_type += "Reply"
         callback_type += callback_gen.callback_suffix
 
@@ -282,7 +281,7 @@ def generate_callback(func_list, base_package, plugin_package, plugin_name, dto_
 
         camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name'])
 
-        if util.is_ignored(func['name']) or util.is_control_ping(camel_case_name_with_suffix):
+        if util.is_control_ping(camel_case_name_with_suffix):
             continue
 
         if util.is_reply(camel_case_name_with_suffix):
@@ -314,18 +313,9 @@ def generate_callback(func_list, base_package, plugin_package, plugin_name, dto_
     jvpp_file.close()
 
 
-# Returns request name or special one from unconventional_naming_rep_req map
-def get_request_name(camel_case_dto_name, func_name):
-    if func_name in reverse_dict(util.unconventional_naming_rep_req):
-        request_name = util.underscore_to_camelcase_upper(reverse_dict(util.unconventional_naming_rep_req)[func_name])
-    else:
-        request_name = camel_case_dto_name
-    return remove_suffix(request_name)
-
-
-def reverse_dict(map):
-    return dict((v, k) for k, v in map.iteritems())
-
+# Returns request name
+def get_request_name(camel_case_dto_name):
+    return remove_suffix(camel_case_dto_name)
 
 def remove_suffix(name):
     if util.is_reply(name):
index a45a532..e1bb43b 100644 (file)
@@ -169,7 +169,7 @@ def generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_pack
     for func in func_list:
         camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name'])
 
-        if util.is_ignored(func['name']) or util.is_control_ping(camel_case_name_with_suffix):
+        if util.is_control_ping(camel_case_name_with_suffix):
             continue
 
         if not util.is_reply(camel_case_name_with_suffix) and not util.is_notification(func['name']):
@@ -181,8 +181,7 @@ def generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_pack
             camel_case_request_method_name = util.remove_reply_suffix(util.underscore_to_camelcase(func['name']))
             request_dto = util.remove_reply_suffix(util.underscore_to_camelcase_upper(func['name']))
             if util.is_details(camel_case_name_with_suffix):
-                camel_case_reply_name = get_standard_dump_reply_name(util.underscore_to_camelcase_upper(func['name']),
-                                                                     func['name'])
+                camel_case_reply_name = util.underscore_to_camelcase_upper(func['name'])
                 callbacks.append(jvpp_facade_details_callback_method_template.substitute(base_package=base_package,
                                                                                          plugin_package=plugin_package,
                                                                                          dto_package=dto_package,
@@ -206,8 +205,7 @@ def generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_pack
                                                                                      request_name=util.remove_reply_suffix(camel_case_reply_name) +
                                                                                                   util.underscore_to_camelcase_upper(util.dump_suffix)))
             else:
-                request_name = util.underscore_to_camelcase_upper(util.unconventional_naming_rep_req[func['name']]) \
-                    if func['name'] in util.unconventional_naming_rep_req else util.remove_reply_suffix(camel_case_name_with_suffix)
+                request_name = util.remove_reply_suffix(camel_case_name_with_suffix)
 
                 methods.append(future_jvpp_method_template.substitute(plugin_package=plugin_package,
                                                                       dto_package=dto_package,
@@ -339,19 +337,3 @@ future_jvpp_dump_method_impl_template = Template('''
         return send(request, new $plugin_package.$dto_package.$reply_name());
     }
 ''')
-
-
-# Returns request name or special one from unconventional_naming_rep_req map
-def get_standard_dump_reply_name(camel_case_dto_name, func_name):
-    # FIXME this is a hotfix for sub-details callbacks
-    # FIXME also for L2FibTableEntry
-    # It's all because unclear mapping between
-    #  request -> reply,
-    #  dump -> reply, details,
-    #  notification_start -> reply, notifications
-
-    # vpe.api needs to be "standardized" so we can parse the information and create maps before generating java code
-    suffix = func_name.split("_")[-1]
-    return util.underscore_to_camelcase_upper(
-        util.unconventional_naming_rep_req[func_name]) + util.underscore_to_camelcase_upper(suffix) if func_name in util.unconventional_naming_rep_req \
-        else camel_case_dto_name
index f802ee2..c2b8ebb 100644 (file)
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import os, util
+import util
 from string import Template
 
 jvpp_ifc_template = Template("""
@@ -173,11 +173,6 @@ def generate_jvpp(func_list, base_package, plugin_package, plugin_name_underscor
     methods = []
     methods_impl = []
     for func in func_list:
-
-        # Skip structures that are used only as notifications
-        if util.is_ignored(func['name']):
-            continue
-
         camel_case_name = util.underscore_to_camelcase(func['name'])
         camel_case_name_upper = util.underscore_to_camelcase_upper(func['name'])
         if util.is_reply(camel_case_name):
index 9611119..6da58c2 100644 (file)
@@ -178,7 +178,7 @@ def generate_notification_registry(func_list, base_package, plugin_package, plug
     callback_file = open(os.path.join(notification_package, "Global%sEventCallback.java" % plugin_name), 'w')
 
     global_notification_callback_callbacks = ""
-    if (callbacks):
+    if callbacks:
         global_notification_callback_callbacks = " extends " + ", ".join(callbacks)
 
     callback_file.write(global_notification_callback_template.substitute(inputfile=inputfile,
index 4864524..6c2ffbc 100644 (file)
@@ -35,16 +35,15 @@ def remove_folder(folder):
         removedirs(folder)
 
 
-reply_suffixes = ("reply", "details", "l2fibtableentry")
+reply_suffixes = ("reply", "details")
 
 
 def is_reply(name):
     return name.lower().endswith(reply_suffixes)
 
-details_suffix = "details"
 
 def is_details(name):
-    return name.lower().endswith(reply_suffixes[1]) or name.lower().endswith(reply_suffixes[2])
+    return name.lower().endswith(reply_suffixes[1])
 
 
 def is_retval_field(name):
@@ -60,11 +59,7 @@ def is_dump(name):
 def get_reply_suffix(name):
     for reply_suffix in reply_suffixes:
         if name.lower().endswith(reply_suffix):
-            if reply_suffix == reply_suffixes[2]:
-                # FIXME workaround for l2_fib_table_entry
-                return 'entry'
-            else:
-                return reply_suffix
+            return reply_suffix
 
 # Mapping according to:
 # http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html
@@ -94,7 +89,7 @@ jni_2_java_type_mapping = {'u8': 'byte',
 vpp_2_jni_type_mapping = {'u8': 'jbyte',
                           'u8[]': 'jbyteArray',
                           'i8': 'jbyte',
-                          'u8[]': 'jbyteArray',
+                          'i8[]': 'jbyteArray',
                           'u16': 'jshort',
                           'u16[]': 'jshortArray',
                           'i16': 'jshort',
@@ -153,21 +148,9 @@ jni_field_accessors =  {'u8': 'ByteField',
                         'f64[]': 'ObjectField'
                         }
 
-
-# vpe.api calls that do not follow naming conventions and have to be handled exceptionally when finding reply -> request mapping
-# FIXME in vpe.api
-unconventional_naming_rep_req = {
-                                 }
-
-#
 # FIXME no convention in the naming of events (notifications) in vpe.api
 notifications_message_suffixes = ("event", "counters")
 
-# messages that must be ignored. These messages are INSUFFICIENTLY marked as disabled in vpe.api
-# FIXME
-ignored_messages = []
-
-
 def is_notification(name):
     """ Returns true if the structure is a notification regardless of its no other use """
     return is_just_notification(name)
@@ -178,10 +161,6 @@ def is_just_notification(name):
     return name.lower().endswith(notifications_message_suffixes)
 
 
-def is_ignored(param):
-    return param.lower() in ignored_messages
-
-
 def remove_reply_suffix(camel_case_name_with_suffix):
     return remove_suffix(camel_case_name_with_suffix, get_reply_suffix(camel_case_name_with_suffix))
 
@@ -194,7 +173,7 @@ def remove_suffix(camel_case_name_with_suffix, suffix):
 
 
 def is_control_ping(camel_case_name_with_suffix):
-    return camel_case_name_with_suffix.lower().startswith("controlping");
+    return camel_case_name_with_suffix.lower().startswith("controlping")
 
 
 def api_message_to_javadoc(api_message):