def generate_callback(func_list, base_package, dto_package, callback_package, callback_facade_package, inputfile): callbacks = [] for func in func_list: if util.is_notification(func['name']) or util.is_ignored(func['name']): # TODO handle notifications continue camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name']) if not util.is_reply(camel_case_name_with_suffix): continue callbacks.append(jvpp_facade_callback_method_template.substitute(base_package=base_package, dto_package=dto_package, callback_package=callback_package, callback=util.remove_reply_suffix(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, "CallbackJVppFacadeCallback.java"), 'w') jvpp_file.write(jvpp_facade_callback_template.substitute(inputfile=inputfile, base_package=base_package, dto_package=dto_package, callback_package=callback_package, methods="".join(callbacks), callback_facade_package=callback_facade_package)) jvpp_file.flush() jvpp_file.close()
def generate_dump_reply_dto(request_dto_name, base_package, plugin_package, dto_package, camel_case_dto_name, camel_case_method_name, func): base_type = "JVppReplyDump<%s.%s.%s, %s.%s.%s>" % ( plugin_package, dto_package, util.remove_reply_suffix(camel_case_dto_name) + "Dump", plugin_package, dto_package, camel_case_dto_name) fields = " public java.util.List<%s> %s = new java.util.ArrayList<>();" % (camel_case_dto_name, camel_case_method_name) cls_name = camel_case_dto_name + dump_dto_suffix # using artificial type for fields, just to bypass the is_array check in base methods generators # the type is not really used artificial_type = 'u8' # In case of already existing artificial reply dump DTO, just update it # Used for sub-dump dtos if request_dto_name in dump_reply_artificial_dtos.keys(): dump_reply_artificial_dtos[request_dto_name]['fields'] += '\n' + fields dump_reply_artificial_dtos[request_dto_name]['field_names'].append(func['name']) dump_reply_artificial_dtos[request_dto_name]['field_types'].append(artificial_type) methods = '\n' + generate_dto_base_methods(dump_reply_artificial_dtos[request_dto_name]['cls_name'], {'args': dump_reply_artificial_dtos[request_dto_name]['field_names'], 'types': dump_reply_artificial_dtos[request_dto_name]['field_types']}) dump_reply_artificial_dtos[request_dto_name]['methods'] = methods else: methods = '\n' + generate_dto_base_methods(cls_name, {'args': [func['name']], 'types': [artificial_type]}) dump_reply_artificial_dtos[request_dto_name] = ({'docs': util.api_message_to_javadoc(func), 'cls_name': cls_name, 'fields': fields, 'field_names': [func['name']], 'field_types': [artificial_type], # strip too many newlines at the end of base method block 'methods': methods, 'plugin_package': plugin_package, 'base_package': base_package, 'base_type': base_type, 'dto_package': dto_package})
def generate_dump_reply_dto(request_dto_name, base_package, dto_package, camel_case_dto_name, camel_case_method_name, func): base_type = "JVppReplyDump<%s.%s.%s, %s.%s.%s>" % ( base_package, dto_package, util.remove_reply_suffix(camel_case_dto_name) + "Dump", base_package, dto_package, camel_case_dto_name) fields = " public java.util.List<%s> %s = new java.util.ArrayList<>();" % ( camel_case_dto_name, camel_case_method_name) cls_name = camel_case_dto_name + dump_dto_suffix # In case of already existing artificial reply dump DTO, just update it # Used for sub-dump dtos if request_dto_name in dump_reply_artificial_dtos.keys(): dump_reply_artificial_dtos[request_dto_name]['fields'] = \ dump_reply_artificial_dtos[request_dto_name]['fields'] + '\n' + fields else: dump_reply_artificial_dtos[request_dto_name] = ({ 'docs': util.api_message_to_javadoc(func), 'cls_name': cls_name, 'fields': fields, 'methods': "", 'base_package': base_package, 'base_type': base_type, 'dto_package': dto_package, })
def remove_suffix(name): if util.is_reply(name): return util.remove_reply_suffix(name) else: if util.is_dump(name): return util.remove_suffix(name, util.dump_suffix) else: return name
def generate_dtos(func_list, base_package, plugin_package, plugin_name, dto_package, inputfile, logger): """ Generates dto objects in a dedicated package """ logger.debug("Generating DTOs for %s" % inputfile) if not os.path.exists(dto_package): os.mkdir(dto_package) for func in func_list: camel_case_dto_name = util.underscore_to_camelcase_upper(func['name']) 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_control_ping(camel_case_dto_name): continue fields = generate_dto_fields(camel_case_dto_name, func) methods = generate_dto_base_methods(camel_case_dto_name, func) base_type = "" if util.is_reply(camel_case_dto_name): description = "reply DTO" request_dto_name = util.remove_reply_suffix(camel_case_dto_name) if util.is_details(camel_case_dto_name): base_type += "JVppReply<%s.%s.%s>" % ( plugin_package, dto_package, request_dto_name + "Dump") generate_dump_reply_dto(request_dto_name, base_package, plugin_package, dto_package, camel_case_dto_name, camel_case_method_name, func) else: base_type += "JVppReply<%s.%s.%s>" % ( plugin_package, dto_package, request_dto_name) elif util.is_dump(camel_case_dto_name) or util.is_request( func['name'], func_list): args = "" if fields is "" else "this" methods += send_template.substitute( method_name=camel_case_method_name, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, args=args) if util.is_dump(camel_case_dto_name): base_type += "JVppDump" description = "dump request DTO" else: base_type += "JVppRequest" description = "request DTO" else: description = "event DTO" dto_path = os.path.join(dto_package, camel_case_dto_name + ".java") write_dto_file(base_package, plugin_package, base_type, camel_case_dto_name, description, dto_package, dto_path, fields, func, inputfile, methods) flush_dump_reply_dtos(inputfile)
def generate_callbacks(func_list, base_package, plugin_package, plugin_name, callback_package, dto_package, inputfile): """ Generates callback interfaces """ print "Generating Callback interfaces" if not os.path.exists(callback_package): os.mkdir(callback_package) callbacks = [] 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): continue if not util.is_reply(camel_case_name_with_suffix) and not util.is_notification(func['name']): continue if util.is_reply(camel_case_name_with_suffix): camel_case_name = util.remove_reply_suffix(camel_case_name_with_suffix) callback_type = "JVppCallback" else: camel_case_name_with_suffix = util.add_notification_suffix(camel_case_name_with_suffix) camel_case_name = camel_case_name_with_suffix callback_type = "JVppNotificationCallback" callbacks.append("{0}.{1}.{2}".format(plugin_package, callback_package, camel_case_name + callback_suffix)) callback_path = os.path.join(callback_package, camel_case_name + callback_suffix + ".java") callback_file = open(callback_path, 'w') reply_type = "%s.%s.%s" % (plugin_package, dto_package, camel_case_name_with_suffix) method = "void on{0}({1} reply);".format(camel_case_name_with_suffix, reply_type) callback_file.write( callback_template.substitute(inputfile=inputfile, docs=util.api_message_to_javadoc(func), cls_name=camel_case_name + callback_suffix, callback_method=method, base_package=base_package, plugin_package=plugin_package, callback_package=callback_package, callback_type=callback_type)) callback_file.flush() callback_file.close() callback_file = open(os.path.join(callback_package, "JVpp%sGlobalCallback.java" % plugin_name), 'w') callback_file.write(global_callback_template.substitute(inputfile=inputfile, callbacks=", ".join(callbacks), base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, callback_package=callback_package)) callback_file.flush() callback_file.close()
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_ignored(func['name']) or util.is_control_ping( camel_case_name_with_suffix): continue if util.is_reply(camel_case_name_with_suffix): callbacks.append( jvpp_facade_callback_method_template.substitute( plugin_package=plugin_package, dto_package=dto_package, callback_package=callback_package, callback=util.remove_reply_suffix( camel_case_name_with_suffix) + callback_gen.callback_suffix, callback_dto=camel_case_name_with_suffix)) if util.is_notification(func["name"]): with_notification_suffix = util.add_notification_suffix( camel_case_name_with_suffix) callbacks.append( jvpp_facade_callback_notification_method_template.substitute( plugin_package=plugin_package, dto_package=dto_package, callback_package=callback_package, callback=with_notification_suffix + callback_gen.callback_suffix, callback_dto=with_notification_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, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, dto_package=dto_package, notification_package=notification_package, callback_package=callback_package, methods="".join(callbacks), callback_facade_package=callback_facade_package)) jvpp_file.flush() jvpp_file.close()
def generate_callbacks(func_list, base_package, callback_package, dto_package, inputfile): """ Generates callback interfaces """ print "Generating Callback interfaces" if not os.path.exists(callback_package): raise Exception("%s folder is missing" % callback_package) callbacks = [] for func in func_list: if util.is_notification(func['name']) or util.is_ignored(func['name']): # FIXME handle notifications continue camel_case_name_with_suffix = util.underscore_to_camelcase_upper( func['name']) if not util.is_reply(camel_case_name_with_suffix): continue camel_case_name = util.remove_reply_suffix(camel_case_name_with_suffix) callbacks.append("{0}.{1}.{2}".format( base_package, callback_package, camel_case_name + callback_suffix)) callback_path = os.path.join( callback_package, camel_case_name + callback_suffix + ".java") callback_file = open(callback_path, 'w') reply_type = "%s.%s.%s" % (base_package, dto_package, camel_case_name_with_suffix) method = "void on{0}({1} reply);".format(camel_case_name_with_suffix, reply_type) callback_file.write( callback_template.substitute( inputfile=inputfile, docs=util.api_message_to_javadoc(func), cls_name=camel_case_name + callback_suffix, callback_method=method, base_package=base_package, callback_package=callback_package)) callback_file.flush() callback_file.close() callback_file = open( os.path.join(callback_package, "JVppGlobalCallback.java"), 'w') callback_file.write( global_callback_template.substitute(inputfile=inputfile, callbacks=", ".join(callbacks), base_package=base_package, callback_package=callback_package)) callback_file.flush() callback_file.close()
def generate_callbacks(func_list, base_package, callback_package, dto_package, inputfile): """ Generates callback interfaces """ print "Generating Callback interfaces" if not os.path.exists(callback_package): raise Exception("%s folder is missing" % callback_package) callbacks = [] for func in func_list: if util.is_ignored(func['name']): continue camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name']) if not util.is_reply(camel_case_name_with_suffix) and not util.is_notification(func['name']): continue if util.is_reply(camel_case_name_with_suffix): camel_case_name = util.remove_reply_suffix(camel_case_name_with_suffix) callback_type = "JVppCallback" else: camel_case_name_with_suffix = util.add_notification_suffix(camel_case_name_with_suffix) camel_case_name = camel_case_name_with_suffix callback_type = "JVppNotificationCallback" callbacks.append("{0}.{1}.{2}".format(base_package, callback_package, camel_case_name + callback_suffix)) callback_path = os.path.join(callback_package, camel_case_name + callback_suffix + ".java") callback_file = open(callback_path, 'w') reply_type = "%s.%s.%s" % (base_package, dto_package, camel_case_name_with_suffix) method = "void on{0}({1} reply);".format(camel_case_name_with_suffix, reply_type) callback_file.write( callback_template.substitute(inputfile=inputfile, docs=util.api_message_to_javadoc(func), cls_name=camel_case_name + callback_suffix, callback_method=method, base_package=base_package, callback_package=callback_package, callback_type=callback_type)) callback_file.flush() callback_file.close() callback_file = open(os.path.join(callback_package, "JVppGlobalCallback.java"), 'w') callback_file.write(global_callback_template.substitute(inputfile=inputfile, callbacks=", ".join(callbacks), base_package=base_package, callback_package=callback_package)) callback_file.flush() callback_file.close()
def generate_callback(func_list, base_package, plugin_package, plugin_name, dto_package, callback_package, notification_package, future_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_details(camel_case_name_with_suffix): # Callbacks for detail messages that append replies to a list. camel_case_method_name = util.underscore_to_camelcase(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, callback_dto=camel_case_name_with_suffix, callback_dto_field=camel_case_method_name, callback_dto_reply_dump=camel_case_reply_name + dto_gen.dump_dto_suffix, future_package=future_facade_package)) elif util.is_reply(camel_case_name_with_suffix): request_dto = util.remove_reply_suffix(util.underscore_to_camelcase_upper(func['name'])) callbacks.append(jvpp_facade_callback_method_template.substitute(base_package=base_package, plugin_package=plugin_package, dto_package=dto_package, callback_dto=camel_case_name_with_suffix, request_dto=request_dto)) else: callbacks.append(jvpp_facade_callback_notification_method_template.substitute(plugin_package=plugin_package, dto_package=dto_package, callback_dto=camel_case_name_with_suffix)) jvpp_file = open(os.path.join(future_facade_package, "FutureJVpp%sFacadeCallback.java" % plugin_name), 'w') jvpp_file.write(jvpp_facade_callback_template.substitute(inputfile=inputfile, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, dto_package=dto_package, notification_package=notification_package, callback_package=callback_package, methods="".join(callbacks), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close()
def generate_dump_reply_dto(request_dto_name, base_package, dto_package, camel_case_dto_name, camel_case_method_name, func): base_type = "JVppReplyDump<%s.%s.%s, %s.%s.%s>" % ( base_package, dto_package, util.remove_reply_suffix(camel_case_dto_name) + "Dump", base_package, dto_package, camel_case_dto_name) fields = " public java.util.List<%s> %s = new java.util.ArrayList<>();" % (camel_case_dto_name, camel_case_method_name) cls_name = camel_case_dto_name + dump_dto_suffix # In case of already existing artificial reply dump DTO, just update it # Used for sub-dump dtos if request_dto_name in dump_reply_artificial_dtos.keys(): dump_reply_artificial_dtos[request_dto_name]['fields'] = \ dump_reply_artificial_dtos[request_dto_name]['fields'] + '\n' + fields else: dump_reply_artificial_dtos[request_dto_name] = ({'docs': util.api_message_to_javadoc(func), 'cls_name': cls_name, 'fields': fields, 'methods': "", 'base_package': base_package, 'base_type': base_type, 'dto_package': dto_package, })
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 generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_package, callback_package, notification_package, future_facade_package, inputfile): """ Generates JVpp interface and JNI implementation """ print "Generating JVpp future facade" if not os.path.exists(future_facade_package): os.mkdir(future_facade_package) methods = [] methods_impl = [] callbacks = [] 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): continue if not util.is_reply(camel_case_name_with_suffix ) and not util.is_notification(func['name']): continue camel_case_method_name = util.underscore_to_camelcase(func['name']) if not util.is_notification(func["name"]): camel_case_request_method_name = util.remove_reply_suffix( util.underscore_to_camelcase(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']) callbacks.append( jvpp_facade_details_callback_method_template.substitute( base_package=base_package, plugin_package=plugin_package, dto_package=dto_package, callback_dto=camel_case_name_with_suffix, callback_dto_field=camel_case_method_name, callback_dto_reply_dump=camel_case_reply_name + dto_gen.dump_dto_suffix, future_package=future_facade_package)) methods.append( future_jvpp_method_template.substitute( plugin_package=plugin_package, dto_package=dto_package, method_name=camel_case_request_method_name + util.underscore_to_camelcase_upper(util.dump_suffix), reply_name=camel_case_reply_name + dto_gen.dump_dto_suffix, request_name=util.remove_reply_suffix( camel_case_reply_name) + util.underscore_to_camelcase_upper(util.dump_suffix))) methods_impl.append( future_jvpp_dump_method_impl_template.substitute( plugin_package=plugin_package, dto_package=dto_package, method_name=camel_case_request_method_name + util.underscore_to_camelcase_upper(util.dump_suffix), reply_name=camel_case_reply_name + dto_gen.dump_dto_suffix, 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) methods.append( future_jvpp_method_template.substitute( plugin_package=plugin_package, dto_package=dto_package, method_name=camel_case_request_method_name, reply_name=camel_case_name_with_suffix, request_name=request_name)) methods_impl.append( future_jvpp_method_impl_template.substitute( plugin_package=plugin_package, dto_package=dto_package, method_name=camel_case_request_method_name, reply_name=camel_case_name_with_suffix, request_name=request_name)) callbacks.append( jvpp_facade_callback_method_template.substitute( base_package=base_package, plugin_package=plugin_package, dto_package=dto_package, callback_dto=camel_case_name_with_suffix)) if util.is_notification(func["name"]): callbacks.append( jvpp_facade_callback_notification_method_template.substitute( plugin_package=plugin_package, dto_package=dto_package, callback_dto=util.add_notification_suffix( camel_case_name_with_suffix))) jvpp_file = open( os.path.join(future_facade_package, "FutureJVpp%sFacadeCallback.java" % plugin_name), 'w') jvpp_file.write( jvpp_facade_callback_template.substitute( inputfile=inputfile, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, dto_package=dto_package, notification_package=notification_package, callback_package=callback_package, methods="".join(callbacks), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close() jvpp_file = open( os.path.join(future_facade_package, "FutureJVpp%s.java" % plugin_name), 'w') jvpp_file.write( future_jvpp_template.substitute( inputfile=inputfile, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, notification_package=notification_package, methods="".join(methods), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close() jvpp_file = open( os.path.join(future_facade_package, "FutureJVpp%sFacade.java" % plugin_name), 'w') jvpp_file.write( future_jvpp_facade_template.substitute( inputfile=inputfile, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, dto_package=dto_package, notification_package=notification_package, methods="".join(methods_impl), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close()
def generate_jvpp(func_list, base_package, plugin_package, plugin_name, dto_package, callback_package, notification_package, future_facade_package, inputfile): """ Generates JVpp interface and JNI implementation """ print "Generating JVpp future facade" if not os.path.exists(future_facade_package): os.mkdir(future_facade_package) methods = [] methods_impl = [] # Generate methods for sending messages. 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 # Process replies instead of requests (optimization). if not util.is_reply(camel_case_name_with_suffix): # Do not generate send methods for messages that do not have replies. continue camel_case_request_method_name = util.remove_reply_suffix( util.underscore_to_camelcase(func['name'])) if util.is_details(camel_case_name_with_suffix): camel_case_reply_name = util.underscore_to_camelcase_upper( func['name']) methods.append( future_jvpp_method_template.substitute( plugin_package=plugin_package, dto_package=dto_package, method_name=camel_case_request_method_name + util.underscore_to_camelcase_upper(util.dump_suffix), reply_name=camel_case_reply_name + dto_gen.dump_dto_suffix, request_name=util.remove_reply_suffix( camel_case_reply_name) + util.underscore_to_camelcase_upper(util.dump_suffix))) methods_impl.append( future_jvpp_dump_method_impl_template.substitute( plugin_package=plugin_package, dto_package=dto_package, method_name=camel_case_request_method_name + util.underscore_to_camelcase_upper(util.dump_suffix), reply_name=camel_case_reply_name + dto_gen.dump_dto_suffix, request_name=util.remove_reply_suffix( camel_case_reply_name) + util.underscore_to_camelcase_upper(util.dump_suffix))) else: 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, method_name=camel_case_request_method_name, reply_name=camel_case_name_with_suffix, request_name=request_name)) methods_impl.append( future_jvpp_method_impl_template.substitute( plugin_package=plugin_package, dto_package=dto_package, method_name=camel_case_request_method_name, reply_name=camel_case_name_with_suffix, request_name=request_name)) jvpp_file = open( os.path.join(future_facade_package, "FutureJVpp%s.java" % plugin_name), 'w') jvpp_file.write( future_jvpp_template.substitute( inputfile=inputfile, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, notification_package=notification_package, methods="".join(methods), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close() jvpp_file = open( os.path.join(future_facade_package, "FutureJVpp%sFacade.java" % plugin_name), 'w') jvpp_file.write( future_jvpp_facade_template.substitute( inputfile=inputfile, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, dto_package=dto_package, notification_package=notification_package, methods="".join(methods_impl), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close() generate_callback(func_list, base_package, plugin_package, plugin_name, dto_package, callback_package, notification_package, future_facade_package, inputfile)
def generate_jvpp(func_list, base_package, dto_package, callback_package, notification_package, future_facade_package, inputfile): """ Generates JVpp interface and JNI implementation """ print "Generating JVpp future facade" if not os.path.exists(future_facade_package): raise Exception("%s folder is missing" % future_facade_package) methods = [] methods_impl = [] callbacks = [] for func in func_list: if util.is_ignored(func['name']): continue camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name']) if not util.is_reply(camel_case_name_with_suffix) and not util.is_notification(func['name']): continue camel_case_method_name = util.underscore_to_camelcase(func['name']) if not util.is_notification(func["name"]): camel_case_request_method_name = util.remove_reply_suffix(util.underscore_to_camelcase(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']) callbacks.append(jvpp_facade_details_callback_method_template.substitute(base_package=base_package, dto_package=dto_package, callback_dto=camel_case_name_with_suffix, callback_dto_field=camel_case_method_name, callback_dto_reply_dump=camel_case_reply_name + dto_gen.dump_dto_suffix, future_package=future_facade_package)) methods.append(future_jvpp_method_template.substitute(base_package=base_package, dto_package=dto_package, method_name=camel_case_request_method_name + util.underscore_to_camelcase_upper(util.dump_suffix), reply_name=camel_case_reply_name + dto_gen.dump_dto_suffix, request_name=util.remove_reply_suffix(camel_case_reply_name) + util.underscore_to_camelcase_upper(util.dump_suffix))) methods_impl.append(future_jvpp_method_impl_template.substitute(base_package=base_package, dto_package=dto_package, method_name=camel_case_request_method_name + util.underscore_to_camelcase_upper(util.dump_suffix), reply_name=camel_case_reply_name + dto_gen.dump_dto_suffix, 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) methods.append(future_jvpp_method_template.substitute(base_package=base_package, dto_package=dto_package, method_name=camel_case_request_method_name, reply_name=camel_case_name_with_suffix, request_name=request_name)) methods_impl.append(future_jvpp_method_impl_template.substitute(base_package=base_package, dto_package=dto_package, method_name=camel_case_request_method_name, reply_name=camel_case_name_with_suffix, request_name=request_name)) # Callback handler is a bit special and a different template has to be used if util.is_control_ping(camel_case_name_with_suffix): callbacks.append(jvpp_facade_control_ping_method_template.substitute(base_package=base_package, dto_package=dto_package, callback_dto=camel_case_name_with_suffix, future_package=future_facade_package)) else: callbacks.append(jvpp_facade_callback_method_template.substitute(base_package=base_package, dto_package=dto_package, callback_dto=camel_case_name_with_suffix)) if util.is_notification(func["name"]): callbacks.append(jvpp_facade_callback_notification_method_template.substitute(base_package=base_package, dto_package=dto_package, callback_dto=util.add_notification_suffix(camel_case_name_with_suffix))) jvpp_file = open(os.path.join(future_facade_package, "FutureJVppFacadeCallback.java"), 'w') jvpp_file.write(jvpp_facade_callback_template.substitute(inputfile=inputfile, base_package=base_package, dto_package=dto_package, notification_package=notification_package, callback_package=callback_package, methods="".join(callbacks), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close() jvpp_file = open(os.path.join(future_facade_package, "FutureJVpp.java"), 'w') jvpp_file.write(future_jvpp_template.substitute(inputfile=inputfile, base_package=base_package, methods="".join(methods), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close() jvpp_file = open(os.path.join(future_facade_package, "FutureJVppFacade.java"), 'w') jvpp_file.write(future_jvpp_facade_template.substitute(inputfile=inputfile, base_package=base_package, dto_package=dto_package, methods="".join(methods_impl), future_package=future_facade_package)) jvpp_file.flush() jvpp_file.close()
def generate_callback(func_list, base_package, dto_package, callback_package, notification_package, callback_facade_package, inputfile): callbacks = [] for func in func_list: if util.is_ignored(func['name']): continue camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name']) if util.is_reply(camel_case_name_with_suffix): callbacks.append(jvpp_facade_callback_method_template.substitute(base_package=base_package, dto_package=dto_package, callback_package=callback_package, callback=util.remove_reply_suffix(camel_case_name_with_suffix) + callback_gen.callback_suffix, callback_dto=camel_case_name_with_suffix)) if util.is_notification(func["name"]): with_notification_suffix = util.add_notification_suffix(camel_case_name_with_suffix) callbacks.append(jvpp_facade_callback_notification_method_template.substitute(base_package=base_package, dto_package=dto_package, callback_package=callback_package, callback=with_notification_suffix + callback_gen.callback_suffix, callback_dto=with_notification_suffix)) jvpp_file = open(os.path.join(callback_facade_package, "CallbackJVppFacadeCallback.java"), 'w') jvpp_file.write(jvpp_facade_callback_template.substitute(inputfile=inputfile, base_package=base_package, dto_package=dto_package, notification_package=notification_package, callback_package=callback_package, methods="".join(callbacks), callback_facade_package=callback_facade_package)) jvpp_file.flush() jvpp_file.close()