Esempio n. 1
0
    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]
Esempio n. 2
0
    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))
Esempio n. 3
0
    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]
Esempio n. 4
0
    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
Esempio n. 5
0
    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
Esempio n. 6
0
    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))
Esempio n. 7
0
    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
Esempio n. 8
0
def java_class_name(c_name):
    return java_type.name_c_to_caps_camel(c_name) if c_name != "of_header" else "OFMessage"
Esempio n. 9
0
def java_class_name(c_name):
    return java_type.name_c_to_caps_camel(
        c_name) if c_name != "of_header" else "OFMessage"