diff options
author | Marek Gradzki <mgradzki@cisco.com> | 2017-12-07 15:40:11 +0100 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2017-12-09 13:23:15 +0000 |
commit | 6e73f7f6055a9ba1c4e604060934a0aa5e555f57 (patch) | |
tree | 84ad8d53635552c1a158d48d783b794f34e1d762 /src/vpp-api/java/jvpp/gen/jvppgen/jvpp_callback_facade_gen.py | |
parent | c42fc05bfbb26fd11fe92ac9d11587660a817ac1 (diff) |
jvpp: do not hardcode event sufixes (VPP-940)
JVpp maps request messages with replies
for Java API user convenience, e.g.:
- do not polute send APIs with messages other than requests/dumps,
- allow callback registration only for replies/details and events.
Since there are no conventions for event message naming
(https://wiki.fd.io/view/VPP/API_Concepts#API_Conventions),
jvpp should not limit events to messages
that end with 'event' or 'counters' suffix.
Instead jvpp should treat all messages
except for requests/dumps as potential events.
Such behaviour was introduced on Java API level by
https://gerrit.fd.io/r/#/c/8377/
in order support reusing
details messages as events (e.g. BFD events).
This patch goes one step forward by
relaxing rules at jvpp generation level.
Change-Id: I2a35e9eb2a288b2cf02d36ca95e6cb13e76e19e3
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'src/vpp-api/java/jvpp/gen/jvppgen/jvpp_callback_facade_gen.py')
-rw-r--r-- | src/vpp-api/java/jvpp/gen/jvppgen/jvpp_callback_facade_gen.py | 28 |
1 files changed, 16 insertions, 12 deletions
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 f2659871f2f..a365946beea 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 @@ -109,11 +109,9 @@ def generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_pack methods = [] methods_impl = [] - for func in func_list: - - if util.is_notification(func['name']): - continue + # Generate methods for sending messages. + for func in func_list: 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) or util.is_control_ping(camel_case_name): @@ -123,8 +121,11 @@ def generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_pack 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 util.is_request(func['name'], func_list): callback_type += "Reply" + else: + # Skip messages that do not not have replies (e.g events/counters). + continue callback_type += callback_gen.callback_suffix if len(func['args']) == 0: @@ -278,12 +279,15 @@ jvpp_facade_callback_notification_method_template = Template(""" def generate_callback(func_list, base_package, plugin_package, plugin_name, dto_package, callback_package, notification_package, callback_facade_package, inputfile): callbacks = [] for func in func_list: - camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name']) if util.is_control_ping(camel_case_name_with_suffix): + # Skip control ping managed by jvpp registry. + continue + if util.is_dump(func['name']) or util.is_request(func['name'], func_list): continue + # Generate callbacks for all messages except for dumps and requests (handled by vpp, not client). if util.is_reply(camel_case_name_with_suffix): request_method = camel_case_name_with_suffix callbacks.append(jvpp_facade_callback_method_template.substitute(plugin_package=plugin_package, @@ -291,13 +295,12 @@ def generate_callback(func_list, base_package, plugin_package, plugin_name, dto_ callback_package=callback_package, callback=camel_case_name_with_suffix + callback_gen.callback_suffix, callback_dto=request_method)) - - if util.is_notification(func["name"]): + else: callbacks.append(jvpp_facade_callback_notification_method_template.substitute(plugin_package=plugin_package, - dto_package=dto_package, - callback_package=callback_package, - callback=camel_case_name_with_suffix + callback_gen.callback_suffix, - callback_dto=camel_case_name_with_suffix)) + dto_package=dto_package, + callback_package=callback_package, + callback=camel_case_name_with_suffix + callback_gen.callback_suffix, + callback_dto=camel_case_name_with_suffix)) jvpp_file = open(os.path.join(callback_facade_package, "CallbackJVpp%sFacadeCallback.java" % plugin_name), 'w') jvpp_file.write(jvpp_facade_callback_template.substitute(inputfile=inputfile, @@ -317,6 +320,7 @@ def generate_callback(func_list, base_package, plugin_package, plugin_name, dto_ def get_request_name(camel_case_dto_name): return remove_suffix(camel_case_dto_name) + def remove_suffix(name): if util.is_reply(name): return util.remove_reply_suffix(name) |