def _populate_message_attributes(self, c_message):
     if self.properties:
         c_message.properties = self.properties.get_properties_obj()
     if self.application_properties:
         if not isinstance(self.application_properties, dict):
             raise TypeError("Application properties must be a dictionary.")
         amqp_props = utils.data_factory(self.application_properties, encoding=self._encoding)
         c_message.application_properties = amqp_props
     if self.annotations:
         if not isinstance(self.annotations, dict):
             raise TypeError("Message annotations must be a dictionary.")
         ann_props = c_uamqp.create_message_annotations(
             utils.data_factory(self.annotations, encoding=self._encoding))
         c_message.message_annotations = ann_props
     if self.delivery_annotations:
         if not isinstance(self.delivery_annotations, dict):
             raise TypeError("Delivery annotations must be a dictionary.")
         delivery_ann_props = c_uamqp.create_delivery_annotations(
             utils.data_factory(self.delivery_annotations, encoding=self._encoding))
         c_message.delivery_annotations = delivery_ann_props
     if self.header:
         c_message.header = self.header.get_header_obj()
     if self.footer:
         if not isinstance(self.footer, dict):
             raise TypeError("Footer must be a dictionary.")
         footer = c_uamqp.create_footer(
             utils.data_factory(self.footer, encoding=self._encoding))
         c_message.footer = footer
 def footer(self, value):
     if value and not isinstance(value, dict):
         raise TypeError("Footer must be a dictionary")
     footer_props = c_uamqp.create_footer(
         utils.data_factory(value, encoding=self._encoding))
     self._message.footer = footer_props
     self._footer = value