Changeset 2207

Show
Ignore:
Timestamp:
02/09/08 05:21:59 (3 months ago)
Author:
arj..@yirdis.nl
Message:

Fixed bug where items remained in the elementfactory after a shutdown()

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphor/trunk/gaphor/UML/element.py

    r2193 r2207  
    8787        # Uses a mutex to make sure it is not called recursively 
    8888        if self.__in_unlink.testandset(): 
    89             component.handle(ElementDeleteEvent(self._factory, self)) 
    9089            try: 
    9190                for prop in self.umlproperties(): 
    9291                    prop.unlink(self) 
     92                component.handle(ElementDeleteEvent(self._factory, self)) 
    9393            finally: 
    9494                self.__in_unlink.unlock() 
  • gaphor/trunk/gaphor/UML/elementfactory.py

    r2197 r2207  
    1111                                  IFlushFactoryEvent, IModelFactoryEvent, \ 
    1212                                  IElementChangeEvent 
    13 from gaphor.UML.event import ElementCreateEvent, ElementDeleteEvent,
     13from gaphor.UML.event import ElementCreateEvent,
    1414                             FlushFactoryEvent, ModelFactoryEvent 
    1515from gaphor.UML.element import Element 
     
    6060 
    6161    def shutdown(self): 
     62        self.flush() 
    6263        self._app.unregister_handler(self._element_deleted) 
    63         self.flush() 
    6464 
    6565    def create(self, type): 
     
    165165 
    166166            for key, value in self._elements.items(): 
    167                 #print 'ElementFactory: unlinking', value 
    168                 #print 'references:', gc.get_referrers(value) 
    169167                value.unlink() 
    170168        finally: 
     
    190188        self._app.handle(ModelFactoryEvent(self)) 
    191189 
    192     @component.adapter(ElementDeleteEvent) 
     190    @component.adapter(IElementDeleteEvent) 
    193191    def _element_deleted(self, event): 
    194192        """ 
  • gaphor/trunk/gaphor/UML/tests/test_elementfactory.py

    r2193 r2207  
    3030        self.factory = ElementFactory() 
    3131        self.factory.init(Application) 
    32  
     32             
    3333    def tearDown(self): 
    3434        self.factory.shutdown() 
     
    4646 
    4747        p = ef.create(Parameter) 
    48         wp = weakref.ref(p) 
    4948        assert len(ef.values()) == 1 
    5049 
  • gaphor/trunk/gaphor/application.py

    r2197 r2207  
    3535    def __init__(self): 
    3636        self._uninitialized_services = {} 
    37         self._init_components() 
     37        self.init_components() 
    3838        self._event_filter = None 
    3939 
     
    4545        self.init_all_services() 
    4646 
    47     def _init_components(self): 
     47    def init_components(self): 
    4848        """ 
    4949        Initialize application level component registry. 
     
    5252        module. 
    5353        """ 
     54        #self._components = component.getGlobalSiteManager() 
     55        #return 
     56 
    5457        self._components = component.registry.Components(name='app', 
    5558                               bases=(component.getGlobalSiteManager(),)) 
     
    7679        """ 
    7780        for ep in pkg_resources.iter_entry_points('gaphor.services'): 
    78             #print ep, dir(ep) 
    7981            log.debug('found entry point service.%s' % ep.name) 
    8082            cls = ep.load() 
     
    126128 
    127129        # Re-initialize components registry 
    128         self._init_components() 
     130        self.init_components() 
    129131 
    130132    # Wrap zope.component's Components methods 
     
    185187        return filtered 
    186188 
    187     def handle(self, *objects): 
     189    def handle(self, *events): 
    188190        """ 
    189191        Send event notifications to registered handlers. 
    190192        """ 
    191         objects = self._filter(objects) 
     193        objects = self._filter(events) 
    192194        if objects: 
    193             self._components.handle(*objects) 
     195            self._components.handle(*events) 
    194196 
    195197 
  • gaphor/trunk/tests/test_association_undo.py

    r2158 r2207  
    2626    def testAssociationUndo(self): 
    2727        factory = Application.get_service('element_factory') 
     28        undo_manager = Application.get_service('undo_manager') 
    2829 
    2930        diagram = factory.create(UML.Diagram) 
     
    8384        #assert len(y_cons) == 0, y_cons 
    8485 
    85         undo_manager = Application.get_service('undo_manager') 
    86  
    8786        assert undo_manager.can_undo() 
    8887