From 8f3ad25c637381da3f499f992c3477768cb636f9 Mon Sep 17 00:00:00 2001 From: Marek Gradzki Date: Thu, 7 Dec 2017 16:49:26 +0100 Subject: jvpp: remove special request<>reply mappings 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 --- src/vpp-api/java/jvpp/gen/jvpp_gen.py | 1 - src/vpp-api/java/jvpp/gen/jvppgen/callback_gen.py | 4 +-- src/vpp-api/java/jvpp/gen/jvppgen/dto_gen.py | 11 ++------ src/vpp-api/java/jvpp/gen/jvppgen/jni_gen.py | 7 ----- src/vpp-api/java/jvpp/gen/jvppgen/jvpp_c_gen.py | 17 +++++------- .../jvpp/gen/jvppgen/jvpp_callback_facade_gen.py | 26 ++++++------------ .../jvpp/gen/jvppgen/jvpp_future_facade_gen.py | 24 +++-------------- src/vpp-api/java/jvpp/gen/jvppgen/jvpp_impl_gen.py | 7 +---- .../java/jvpp/gen/jvppgen/notification_gen.py | 2 +- src/vpp-api/java/jvpp/gen/jvppgen/util.py | 31 ++++------------------ 10 files changed, 28 insertions(+), 102 deletions(-) (limited to 'src') diff --git a/src/vpp-api/java/jvpp/gen/jvpp_gen.py b/src/vpp-api/java/jvpp/gen/jvpp_gen.py index 6648a4f7156..ca2d2624d50 100755 --- a/src/vpp-api/java/jvpp/gen/jvpp_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvpp_gen.py @@ -15,7 +15,6 @@ # import argparse -import importlib import sys import os import json diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/callback_gen.py b/src/vpp-api/java/jvpp/gen/jvppgen/callback_gen.py index f0aee47b0f5..e1c31dd6661 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/callback_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/callback_gen.py @@ -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 diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/dto_gen.py b/src/vpp-api/java/jvpp/gen/jvppgen/dto_gen.py index e94bbc5cb28..5f2cdc2ad05 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/dto_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/dto_gen.py @@ -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'], diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/jni_gen.py b/src/vpp-api/java/jvpp/gen/jvppgen/jni_gen.py index cb0d66e85cc..8c8be5b8877 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/jni_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/jni_gen.py @@ -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}); diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_c_gen.py b/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_c_gen.py index e2f6aa4d505..e67b6ecfa5d 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_c_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_c_gen.py @@ -14,13 +14,13 @@ # 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'])) diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_callback_facade_gen.py b/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_callback_facade_gen.py index 53e9f49e029..f2659871f2f 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_callback_facade_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_callback_facade_gen.py @@ -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): diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_future_facade_gen.py b/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_future_facade_gen.py index a45a532d7f2..e1bb43b9a65 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_future_facade_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_future_facade_gen.py @@ -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 diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_impl_gen.py b/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_impl_gen.py index f802ee27014..c2b8ebbf574 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_impl_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/jvpp_impl_gen.py @@ -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): diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/notification_gen.py b/src/vpp-api/java/jvpp/gen/jvppgen/notification_gen.py index 96111193f07..6da58c2e12c 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/notification_gen.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/notification_gen.py @@ -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, diff --git a/src/vpp-api/java/jvpp/gen/jvppgen/util.py b/src/vpp-api/java/jvpp/gen/jvppgen/util.py index 48645246596..6c2ffbc420c 100644 --- a/src/vpp-api/java/jvpp/gen/jvppgen/util.py +++ b/src/vpp-api/java/jvpp/gen/jvppgen/util.py @@ -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): -- cgit 1.2.3-korg