1 """Contains L{DelegateCollection}, an implementation that passes the buck to a
2 L{CollectionReader} and L{CollectionWriter}"""
3
4 from Collection import Collection
5 from grassyknoll.lib.meta import FactoryMixin
6
7 __all__=['DelegateCollection', 'CollectionReader', 'CollectionWriter']
8
10 """A L{Collection} implementation that passes the buck.
11
12 The reader and writer instances should not be shared with other objects.
13
14 @ivar writer_factory: the writer factory
15 @ivar writer_factory: callable
16
17 @ivar reader_factory: the reader factory
18 @type reader_factory: callable
19 """
20
21 - def __init__(self, writer_factory, reader_factory):
22
23 self.writer = writer_factory()
24 for name in ('create', 'delete'):
25 setattr(self, name, getattr(self.writer, name))
26
27 self.reader = reader_factory()
28 for name in ['list', 'retrieve'] + [n for n in dir(self.reader) if n.endswith('Query')]:
29 setattr(self, name, getattr(self.reader, name))
30
34
36 """A reader for a L{Collection}. See its docs."""
38 raise NotImplementedError
39
41 raise NotImplementedError
42
45
47 """A writer for a L{Collection} See its docs."""
49 raise NotImplementedError
50
52 raise NotImplementedError
53
56