~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/xml_serializer.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-01-03 18:09:01 UTC
  • mfrom: (3159.1.1 trunk)
  • Revision ID: pqm@pqm.ubuntu.com-20080103180901-w987y1ftqoh02qbm
(vila) Fix #179368 by keeping the current range hint on
        ShortReadvErrors

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
# importing this module is fairly slow because it has to load several
23
23
# ElementTree bits
24
24
 
 
25
from bzrlib import registry
25
26
from bzrlib.trace import mutter, warning
26
27
 
27
28
try:
50
51
 
51
52
class Serializer(object):
52
53
    """Abstract object serialize/deserialize"""
 
54
 
53
55
    def write_inventory(self, inv, f):
54
56
        """Write inventory to a file"""
55
 
        elt = self._pack_inventory(inv)
56
 
        self._write_element(elt, f)
 
57
        raise NotImplementedError(self.write_inventory)
57
58
 
58
59
    def write_inventory_to_string(self, inv):
59
 
        return tostring(self._pack_inventory(inv)) + '\n'
60
 
 
61
 
    def read_inventory_from_string(self, xml_string):
 
60
        raise NotImplementedError(self.write_inventory_to_string)
 
61
 
 
62
    def read_inventory_from_string(self, xml_string, revision_id=None):
 
63
        """Read xml_string into an inventory object.
 
64
 
 
65
        :param xml_string: The xml to read.
 
66
        :param revision_id: If not-None, the expected revision id of the
 
67
            inventory. Some serialisers use this to set the results' root
 
68
            revision.
 
69
        """
62
70
        try:
63
 
            return self._unpack_inventory(fromstring(xml_string))
 
71
            return self._unpack_inventory(fromstring(xml_string), revision_id)
64
72
        except ParseError, e:
65
73
            raise errors.UnexpectedInventoryFormat(e)
66
74
 
67
 
    def read_inventory(self, f):
 
75
    def read_inventory(self, f, revision_id=None):
68
76
        try:
69
 
            return self._unpack_inventory(self._read_element(f))
 
77
            return self._unpack_inventory(self._read_element(f),
 
78
                revision_id=None)
70
79
        except ParseError, e:
71
80
            raise errors.UnexpectedInventoryFormat(e)
72
81
 
155
164
        elementtree.ElementTree._raise_serialization_error(text)
156
165
 
157
166
elementtree.ElementTree._escape_cdata = _escape_cdata
 
167
 
 
168
 
 
169
class SerializerRegistry(registry.Registry):
 
170
    """Registry for serializer objects"""
 
171
 
 
172
 
 
173
format_registry = SerializerRegistry()
 
174
format_registry.register_lazy('4', 'bzrlib.xml4', 'serializer_v4')
 
175
format_registry.register_lazy('5', 'bzrlib.xml5', 'serializer_v5')
 
176
format_registry.register_lazy('6', 'bzrlib.xml6', 'serializer_v6')
 
177
format_registry.register_lazy('7', 'bzrlib.xml7', 'serializer_v7')