def __init__(self, c_name, version_enum_map): self.c_name = c_name self.name = "OF" + java_type.name_c_to_caps_camel("_".join( c_name.split("_")[1:])) # Port_features has constants that start with digits self.name_prefix = "PF_" if self.name == "OFPortFeatures" else "" self.version_enums = version_enum_map entry_name_version_value_map = OrderedDefaultDict( lambda: OrderedDict()) for version, ir_enum in version_enum_map.items(): for ir_entry in ir_enum.entries: entry_name_version_value_map[ ir_entry.name][version] = ir_entry.value self.entries = [ JavaEnumEntry(self, name, version_value_map) for (name, version_value_map) in entry_name_version_value_map.items() ] self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ] self.package = "org.projectfloodlight.openflow.protocol" self.metadata = model.enum_metadata_map[self.name]
def __init__(self, java_class): self.java_class = java_class first_data_file_name = "of{version}/{name}.data".format( version=java_class.version.dotless_version, name=java_class.c_name[3:]) glob_file_name = "of{version}/{name}__*.data".format( version=java_class.version.dotless_version, name=java_class.c_name[3:]) test_class_name = self.java_class.name + "Test" self.test_units = [] if test_data.exists(first_data_file_name): self.test_units.append( JavaUnitTest(java_class, first_data_file_name, test_class_name)) i = 1 for f in test_data.glob(glob_file_name): m = re.match(".*__(.*).data", f) if m: suffix = java_type.name_c_to_caps_camel(m.group(1)) else: suffix = str(i) i += 1 test_class_name = self.java_class.name + suffix + "Test" self.test_units.append(JavaUnitTest(java_class, f, test_class_name))
def __init__(self, c_name, version_enum_map): self.c_name = c_name if c_name == "of_stats_types": self.name = "OFStatsType" else: self.name = "OF" + java_type.name_c_to_caps_camel("_".join(c_name.split("_")[1:])) # Port_features has constants that start with digits self.name_prefix = "PF_" if self.name == "OFPortFeatures" else "" self.version_enums = version_enum_map entry_name_version_value_map = OrderedDefaultDict(lambda: OrderedDict()) for version, ir_enum in version_enum_map.items(): for ir_entry in ir_enum.entries: entry_name_version_value_map[ir_entry.name][version] = ir_entry.value self.entries = [ JavaEnumEntry(self, name, version_value_map) for (name, version_value_map) in entry_name_version_value_map.items() ] self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ] self.package = "org.projectfloodlight.openflow.protocol" self.metadata = model.enum_metadata_map[self.name]
def __init__(self, c_name, stable, version_enum_map): self.c_name = c_name self.stable = stable self.name = "OF" + java_type.name_c_to_caps_camel("_".join( c_name.split("_")[1:])) # Port_features has constants that start with digits self.name_prefix = "PF_" if self.name == "OFPortFeatures" else "" self.version_enums = version_enum_map entry_name_version_value_map = OrderedDefaultDict( lambda: OrderedDict()) for version, ir_enum in version_enum_map.items(): for ir_entry in ir_enum.entries: entry_name_version_value_map[ ir_entry.name][version] = ir_entry.value self.entries = [ JavaEnumEntry(self, name, version_value_map) for (name, version_value_map) in entry_name_version_value_map.items() ] self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ] self.package = "org.projectfloodlight.openflow.protocol" static_metadata = model.enum_metadata_map[self.name] if self.stable: # need this to look up wire_type, which does not matter any_version = version_enum_map.keys()[0] # if this is a 'stable' enum, i.e., its value won't change, add # a "Metadata" (virtual) field "StableValue" to it that returns # its wirevalue. stable_value = JavaModel.OFEnumPropertyMetadata( "StableValue", self.wire_type(any_version), value=lambda entry: entry.stable_value) self.metadata = JavaModel.OFEnumMetadata( properties=static_metadata.properties + (stable_value, ), to_string=static_metadata.to_string) else: self.metadata = static_metadata
def __init__(self, c_name, version_map): """" @param c_name: loxi style name (e.g., of_flow_add) @param version_map map of { JavaOFVersion: OFClass (from loxi_ir) } """ self.c_name = c_name self.version_map = version_map # name: the Java Type name, e.g., OFFlowAdd self.name = java_type.name_c_to_caps_camel(c_name) if c_name != "of_header" else "OFMessage" # variable_name name to use for variables of this type. i.e., flowAdd self.variable_name = self.name[2].lower() + self.name[3:] self.title_name = self.variable_name[0].upper() + self.variable_name[1:] # name for use in constants: FLOW_ADD self.constant_name = c_name.upper().replace("OF_", "") pck_suffix, parent_interface, self.type_annotation = self.class_info() self.package = "org.projectfloodlight.openflow.protocol.%s" % pck_suffix if pck_suffix else "org.projectfloodlight.openflow.protocol" if self.name != parent_interface: self.parent_interface = parent_interface else: self.parent_interface = None
def __init__(self, java_class): self.java_class = java_class first_data_file_name = "of{version}/{name}.data".format(version=java_class.version.dotless_version, name=java_class.c_name[3:]) glob_file_name = "of{version}/{name}__*.data".format(version=java_class.version.dotless_version, name=java_class.c_name[3:]) test_class_name = self.java_class.name + "Test" self.test_units = [] if test_data.exists(first_data_file_name): self.test_units.append(JavaUnitTest(java_class, first_data_file_name, test_class_name)) i = 1 for f in test_data.glob(glob_file_name): m = re.match(".*__(.*).data", f) if m: suffix = java_type.name_c_to_caps_camel(m.group(1)) else: suffix = str(i) i += 1 test_class_name = self.java_class.name + suffix + "Test" self.test_units.append(JavaUnitTest(java_class, f, test_class_name))
def __init__(self, c_name, stable, version_enum_map): self.c_name = c_name self.stable = stable self.name = "OF" + java_type.name_c_to_caps_camel("_".join(c_name.split("_")[1:])) # Port_features has constants that start with digits self.name_prefix = "PF_" if self.name == "OFPortFeatures" else "" self.version_enums = version_enum_map entry_name_version_value_map = OrderedDefaultDict(lambda: OrderedDict()) for version, ir_enum in version_enum_map.items(): for ir_entry in ir_enum.entries: entry_name_version_value_map[ir_entry.name][version] = ir_entry.value self.entries = [ JavaEnumEntry(self, name, version_value_map) for (name, version_value_map) in entry_name_version_value_map.items() ] self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ] self.package = "org.projectfloodlight.openflow.protocol" static_metadata = model.enum_metadata_map[self.name] if self.stable: # need this to look up wire_type, which does not matter any_version = version_enum_map.keys()[0] # if this is a 'stable' enum, i.e., its value won't change, add # a "Metadata" (virtual) field "StableValue" to it that returns # its wirevalue. stable_value = JavaModel.OFEnumPropertyMetadata("StableValue", self.wire_type(any_version), value = lambda entry: entry.stable_value) self.metadata = JavaModel.OFEnumMetadata( properties=static_metadata.properties + (stable_value, ), to_string=static_metadata.to_string ) else: self.metadata = static_metadata
def java_class_name(c_name): return java_type.name_c_to_caps_camel(c_name) if c_name != "of_header" else "OFMessage"
def java_class_name(c_name): return java_type.name_c_to_caps_camel( c_name) if c_name != "of_header" else "OFMessage"