Changeset 1232
- Timestamp:
- 04/17/07 23:08:21 (2 years ago)
- Files:
-
- gaphor/trunk/gaphor/application.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/trunk/gaphor/application.py
r1229 r1232 24 24 25 25 def __init__(self): 26 self.services = { 27 'element_factory': gaphor.UML.ElementFactory() 28 } 29 30 # def __getattr__(self, key): 31 # return self.services[key] 26 self._uninitialized_services = {} 32 27 33 28 def init(self): … … 35 30 Initialize the application. 36 31 """ 37 #import gaphor.adapters38 #import gaphor.actions39 32 self.load_services() 40 33 … … 46 39 Service should provide an interface gaphor.interfaces.IService. 47 40 """ 48 services = []49 41 for ep in pkg_resources.iter_entry_points('gaphor.services'): 50 42 #print ep, dir(ep) … … 54 46 raise 'MisConfigurationException', 'Entry point %s doesn''t provide IService' % ep.name 55 47 srv = cls() 56 se rvices.append((ep.name, srv))48 self._uninitialized_services[ep.name] = srv 57 49 58 for name, srv in services: 59 log.debug('initializing service.%s' % name) 50 # HACK: implicitly add UML.ElementFactory for now. 51 from gaphor import UML 52 self._uninitialized_services['element_factory'] = resource(UML.ElementFactory) 53 # /HACK 54 55 while self._uninitialized_services: 56 self.init_service(self._uninitialized_services.iterkeys().next()) 57 58 def init_service(self, name): 59 """ 60 Initialize a not yet initialized service. 61 62 Raises ComponentLookupError if the service has nor been found 63 """ 64 try: 65 srv = self._uninitialized_services.pop(name) 66 except KeyError: 67 raise component.ComponentLookupError(IService, name) 68 else: 69 log.info('initializing service service.%s' % name) 70 # TODO: do init() before provideUtility! 60 71 component.provideUtility(srv, IService, name) 61 72 srv.init(self) 73 return srv 62 74 63 75 distribution = property(lambda s: pkg_resources.get_distribution('gaphor'), … … 65 77 66 78 def get_service(self, name): 67 return component.getUtility(IService, name) 79 try: 80 return component.getUtility(IService, name) 81 except component.ComponentLookupError: 82 return self.init_service(name) 68 83 69 84 def run(self):
