Skip to content

Commit

Permalink
More destroy
Browse files Browse the repository at this point in the history
  • Loading branch information
darscan committed May 26, 2014
1 parent ee082f9 commit 0c4f3d9
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 1 deletion.
17 changes: 17 additions & 0 deletions src/robotlegs/bender/framework/impl/ConfigManager.as
Expand Up @@ -42,6 +42,8 @@ package robotlegs.bender.framework.impl

private var _initialized:Boolean;

private var _context:IContext;

/*============================================================================*/
/* Constructor */
/*============================================================================*/
Expand All @@ -51,6 +53,7 @@ package robotlegs.bender.framework.impl
*/
public function ConfigManager(context:IContext)
{
_context = context;
_injector = context.injector;
_logger = context.getLogger(this);
addConfigHandler(new ClassMatcher(), handleClass);
Expand Down Expand Up @@ -89,6 +92,20 @@ package robotlegs.bender.framework.impl
_objectProcessor.addObjectHandler(matcher, handler);
}

/**
* Destroy
*/
public function destroy():void
{
_context.removeEventListener(LifecycleEvent.INITIALIZE, initialize);
_objectProcessor.removeAllHandlers();
_queue.length = 0;
for (var config:Object in _configs)
{
delete _configs[config];
}
}

/*============================================================================*/
/* Private Functions */
/*============================================================================*/
Expand Down
5 changes: 4 additions & 1 deletion src/robotlegs/bender/framework/impl/Context.as
Expand Up @@ -455,10 +455,13 @@ package robotlegs.bender.framework.impl

private function afterDestroyingCallback():void
{
_extensionInstaller.destroy();
_configManager.destroy();
_pin.releaseAll();
_injector.teardown();
removeChildren();
_logger.info("Destroy complete");
_logManager.removeAllTargets();
}

private function onChildDestroy(event:LifecycleEvent):void
Expand All @@ -472,7 +475,7 @@ package robotlegs.bender.framework.impl
{
removeChild(child);
}
_children.splice(0);
_children.length = 0;
}
}
}
11 changes: 11 additions & 0 deletions src/robotlegs/bender/framework/impl/ExtensionInstaller.as
Expand Up @@ -66,5 +66,16 @@ package robotlegs.bender.framework.impl
extension.extend(_context);
}
}

/**
* Destroy
*/
public function destroy():void
{
for (var extensionClass:Object in _classes)
{
delete _classes[extensionClass];
}
}
}
}
5 changes: 5 additions & 0 deletions src/robotlegs/bender/framework/impl/LogManager.as
Expand Up @@ -89,5 +89,10 @@ package robotlegs.bender.framework.impl
target.log(source, level, timestamp, message, params);
}
}

public function removeAllTargets():void
{
_targets.length = 0;
}
}
}
8 changes: 8 additions & 0 deletions src/robotlegs/bender/framework/impl/ObjectProcessor.as
Expand Up @@ -48,6 +48,14 @@ package robotlegs.bender.framework.impl
handler.handle(object);
}
}

/**
* Removes all handlers
*/
public function removeAllHandlers():void
{
_handlers.length = 0;
}
}
}

Expand Down
11 changes: 11 additions & 0 deletions test/robotlegs/bender/framework/impl/ConfigManagerTest.as
Expand Up @@ -8,6 +8,7 @@
package robotlegs.bender.framework.impl
{
import org.flexunit.assertThat;
import org.flexunit.asserts.fail;
import org.hamcrest.collection.array;
import org.hamcrest.object.equalTo;
import org.hamcrest.object.instanceOf;
Expand Down Expand Up @@ -195,6 +196,16 @@ package robotlegs.bender.framework.impl
context.initialize();
assertThat(actual, array(['listener1', 'listener2', 'config']));
}

[Test]
public function destroy():void
{
configManager.addConfigHandler(instanceOfType(String), function(config:Object):void {
fail("Handler should not fire after call to destroy");
});
configManager.destroy();
configManager.addConfig("string");
}
}
}

Expand Down
11 changes: 11 additions & 0 deletions test/robotlegs/bender/framework/impl/ObjectProcessorTest.as
Expand Up @@ -8,6 +8,7 @@
package robotlegs.bender.framework.impl
{
import org.flexunit.assertThat;
import org.flexunit.asserts.fail;
import org.hamcrest.collection.array;
import org.hamcrest.core.not;
import org.hamcrest.object.equalTo;
Expand Down Expand Up @@ -85,5 +86,15 @@ package robotlegs.bender.framework.impl
objectProcessor.processObject("string");
assertThat(actual, array(expected));
}

[Test]
public function removeAllHandlers():void
{
objectProcessor.addObjectHandler(instanceOfType(String), function(object:Object):void {
fail("Handler should not fire after call to removeAllHandlers");
});
objectProcessor.removeAllHandlers();
objectProcessor.processObject("string");
}
}
}

0 comments on commit 0c4f3d9

Please sign in to comment.