def link()

in src/aaz_dev/swagger/model/schema/operation.py [0:0]


    def link(self, swagger_loader, *traces):
        if self.is_linked():
            return
        super().link(swagger_loader, *traces)

        if self.parameters is not None:
            for idx, param in enumerate(self.parameters):
                if isinstance(param, Linkable):
                    param.link(swagger_loader, *self.traces, 'parameters', idx)

            # replace parameter reference by parameter instance
            for idx in range(len(self.parameters)):
                param = self.parameters[idx]
                while isinstance(param, Reference):
                    param = param.ref_instance
                assert isinstance(param, ParameterBase)
                self.parameters[idx] = param

        # current response

        # verify path is resource id template or not
        resource_id_template = None
        if self.traces[-1] == 'get':
            # path should support get method
            resource_path = self.traces[-2]
            resource_id_template = swagger_resource_path_to_resource_id_template(resource_path)

        for key, response in self.responses.items():
            if resource_id_template and key != "default" and int(key) < 300:
                response.link(
                    swagger_loader, *self.traces, 'responses', key,
                    resource_id_template=resource_id_template
                )
            else:
                response.link(
                    swagger_loader, *self.traces, 'responses', key
                )

        # replace response reference by response instance
        for key in [*self.responses.keys()]:
            resp = self.responses[key]
            while isinstance(resp, Reference):
                if resp.ref_instance is None:
                    raise exceptions.InvalidSwaggerValueError(
                        msg="Reference not exist",
                        key=[],
                        value=resp.ref
                    )
                resp = resp.ref_instance
            assert isinstance(resp, Response)
            self.responses[key] = resp

        if self.x_ms_odata is not None:
            self.x_ms_odata_instance, instance_traces = swagger_loader.load_ref(
                self.x_ms_odata, *self.traces, 'x_ms_odata')
            if isinstance(self.x_ms_odata_instance, Linkable):
                self.x_ms_odata_instance.link(swagger_loader, *instance_traces)

        if self.x_ms_long_running_operation_options is not None and \
                self.x_ms_long_running_operation_options.final_state_schema is not None:
            # `final-state-schema` to `$ref`
            self.x_ms_lro_final_state_schema = ReferenceSchema()
            self.x_ms_lro_final_state_schema.ref = self.x_ms_long_running_operation_options.final_state_schema
            self.x_ms_lro_final_state_schema.link(
                swagger_loader,
                *self.traces, "x_ms_long_running_operation_options", "final_state_schema"
            )

        if self.x_ms_examples is not None:
            for key, example in self.x_ms_examples.items():
                try:
                    example.link(swagger_loader, *self.traces, "x_ms_examples", key)
                except Exception as e:
                    logger.error(f"Link example failed: {e}: {key}.")