~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/identitymap.py

  • Committer: John Arbash Meinel
  • Date: 2007-03-14 20:15:52 UTC
  • mto: (2353.4.2 locking)
  • mto: This revision was merged to the branch mainline in revision 2360.
  • Revision ID: john@arbash-meinel.com-20070314201552-bjtfua57456dviep
Update the lock code and test code so that if more than one
lock implementation is available, they will both be tested.

It is quite a bit of overhead, for a case where we are likely to only have 1
real lock implementation per platform, but hey, for now we have 2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
    that is store in the map. Look for find_CLASS and add_CLASS methods.
33
33
    """
34
34
 
 
35
    def add_revision_history(self, revision_history):
 
36
        """Add a revision_history object to the map.
 
37
 
 
38
        There can only be one!
 
39
        """
 
40
        if self._revision_history is not None:
 
41
            raise errors.BzrError("A revision history (%s) is already "
 
42
                                  "identity map" % self._revision_history)
 
43
        self._revision_history = revision_history
 
44
 
35
45
    def add_weave(self, id, weave):
36
46
        """Add weave to the map with a given id."""
37
47
        if self._weave_key(id) in self._map:
39
49
        self._map[self._weave_key(id)] = weave
40
50
        self._reverse_map[weave] = self._weave_key(id)
41
51
 
 
52
    def find_revision_history(self):
 
53
        return self._revision_history
 
54
 
42
55
    def find_weave(self, id):
43
56
        """Return the weave for 'id', or None if it is not present."""
44
57
        return self._map.get(self._weave_key(id), None)
47
60
        super(IdentityMap, self).__init__()
48
61
        self._map = {}
49
62
        self._reverse_map = {}
 
63
        self._revision_history = None
50
64
 
51
65
    def remove_object(self, an_object):
52
66
        """Remove object from map."""
53
67
        if isinstance(an_object, list):
54
 
            raise KeyError('%r not in identity map' % an_object)
 
68
            if self._revision_history is an_object:
 
69
                self._revision_history = None
 
70
            else:
 
71
                raise KeyError('%r not in identity map' % an_object)
55
72
        else:
56
73
            self._map.pop(self._reverse_map[an_object])
57
74
            self._reverse_map.pop(an_object)
70
87
    def add_weave(self, id, weave):
71
88
        """See IdentityMap.add_weave."""
72
89
 
 
90
    def add_revision_history(self, revision_history):
 
91
        """See IdentityMap.add_revision_history."""
 
92
 
73
93
    def find_weave(self, id):
74
94
        """See IdentityMap.find_weave."""
75
95
        return None
 
96
 
 
97
    def find_revision_history(self):
 
98
        """See IdentityMap.find_revision_history."""