<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Examples/as3/SimpleStore/src/app/controllers/ApplicationController.as</filename>
    </added>
    <added>
      <filename>Examples/as3/SimpleStore/src/app/views/layouts/ApplicationLayout.as</filename>
    </added>
    <added>
      <filename>Examples/as3/SimpleStore/src/app/views/products/Index.as</filename>
    </added>
    <added>
      <filename>Examples/as3/SimpleStore/test/SimpleStoreRunner.as</filename>
    </added>
    <added>
      <filename>Examples/as3/SimpleStore/test/SimpleStoreXMLRunner.as</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff></diff>
      <filename>ActionPack/bin/Waybeams.swc</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,7 @@ flashplayer :debug =&gt; debug_output
 
 haxe swc_output do |t|
   t.swf_version = 9
-  t.input       = project_name
+  t.input       = &quot;actionpack.#{project_name}&quot;
   t.source_path &lt;&lt; 'src'
 end
 </diff>
      <filename>ActionPack/rakefile.rb</filename>
    </modified>
    <modified>
      <diff>@@ -81,6 +81,7 @@ class AbstractEnvironment implements IEnvironment {
         }
         
         var newLayout = getLayoutInstance(options);
+        trace(&quot;&gt;&gt; layout instantiation succeeded with: &quot; + newLayout);
         if(newLayout != null) {
             updateCurrentLayout(newLayout);
         }
@@ -126,17 +127,27 @@ class AbstractEnvironment implements IEnvironment {
     private function getViewFullClassName(route:ActionRoute):String {
         var packageName = getViewPackageForController(route.controller);
         var actionClassName = StringHelper.capitalize(route.action);
+        trace(&quot;&gt;&gt; VIEW NAME IS: &quot; + [packageName, actionClassName].join('.'));
         return [packageName, actionClassName].join('.');
     }
     
     private function getViewPackageForController(controller:Class&lt;Dynamic&gt;):String {
-        return 'fixtures.complete.app.views.products';
+        var parts = Type.getClassName(controller).split('.');
+        var className = parts.pop();
+        trace(&quot;&gt;&gt; CLASSNAME: &quot; + className);
+        var regex = ~/Controller$/;
+        className = regex.replace(className, '');
+        className = StringHelper.toUnderscore(className);
+        return [viewsPackage, className].join('.');
     }
     
     private function getLayoutInstance(?options:Dynamic):ILayout {
         var layoutFullClassName = getLayoutFullClassName(options);
+        trace(&quot;&gt;&gt; LAYOUT FULL CLASS NAME: &quot; + layoutFullClassName);
         var layoutClass = Type.resolveClass(layoutFullClassName);
+        trace(&quot;&gt;&gt; layout class: &quot; + layoutClass);
         if(Type.getClass(currentLayout) == layoutClass) {
+            trace(&quot;&gt;&gt; returning current layout matched!&quot;);
             return currentLayout;
         }
         return instantiateView(layoutClass, options);
@@ -156,7 +167,7 @@ class AbstractEnvironment implements IEnvironment {
     
     private function configureView(view:Dynamic) {
         // TODO: Apply controller params to view/layout instance:
-        // Options.applyTo(view, this);
+        //Options.applyTo(view, this);
     }
     
     private function getLayoutFullClassName(?options:Dynamic):String {
@@ -228,7 +239,11 @@ class AbstractEnvironment implements IEnvironment {
     }
     
     private function getApplicationPackageNameParts():Array&lt;String&gt; {
-        return getApplicationPackageName().split('.');
+        var packageName = getApplicationPackageName();
+        if(packageName == '') {
+            return new Array();
+        }
+        return packageName.split('.');
     }
     
     private function getApplicationPackageName():String {
@@ -239,6 +254,9 @@ class AbstractEnvironment implements IEnvironment {
         parts.pop();
         parts.pop();
         parts.pop();
+        if(parts.length == 0) {
+            return packageName = '';
+        }
         return packageName = parts.join('.');
     }
 }</diff>
      <filename>ActionPack/src/actionpack/AbstractEnvironment.hx</filename>
    </modified>
    <modified>
      <diff>@@ -246,14 +246,13 @@ class ActionRoute implements Dynamic {
         return false;
     }
     
-    private function getControllerFromPathPart(part:String, ?packageName:String):Class&lt;IController&gt; {
-        if(packageName == null) {
-            packageName = 'app.controllers';
-        }
+    private function getControllerFromPathPart(part:String, packageName:String):Class&lt;IController&gt; {
         var className:String = StringHelper.toCamelCase(part) + 'Controller';
         var packageParts = packageName.split('.');
         packageParts.push(className);
-        var clazz = Type.resolveClass(packageParts.join('.'));
+
+        var fullClassName = packageParts.join('.');
+        var clazz = Type.resolveClass(fullClassName);
         return cast clazz;
     }
 }
\ No newline at end of file</diff>
      <filename>ActionPack/src/actionpack/ActionRoute.hx</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@ class ActionRoutes {
 
     public var controllersPackage:String;
     
-    private var routes:Array&lt;ActionRoute&gt;;
+    var routes:Array&lt;ActionRoute&gt;;
 
     public function new(?options:Dynamic) {
         controllersPackage = AbstractEnvironment.DEFAULT_CONTROLLERS_PACKAGE;</diff>
      <filename>ActionPack/src/actionpack/ActionRoutes.hx</filename>
    </modified>
    <modified>
      <diff>@@ -9,8 +9,10 @@ class FlashEnvironment extends AbstractEnvironment {
     
     override function updateCurrentLayout(layout:ILayout):ILayout {
         if(currentLayout != null) {
+            trace(&quot;&gt;&gt; removing current layout from context: &quot; + context);
             context.removeChild(currentLayout);
         }
+        trace(&quot;&gt;&gt; update current layout with: &quot; + context);
         context.addChild(cast(layout, DisplayObject));
         return super.updateCurrentLayout(layout);
     }
@@ -20,7 +22,9 @@ class FlashEnvironment extends AbstractEnvironment {
             layout.getViewContainer().removeChild(currentView);
         }
         
-        return currentView = layout.getViewContainer().addChild(view);
+        trace(&quot;&gt;&gt; attaching current view with: &quot; + layout + &quot; and: &quot; + view);
+        layout.getViewContainer().addChild(view);
+        return currentView = view;
     }
 
     </diff>
      <filename>ActionPack/src/actionpack/FlashEnvironment.hx</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,8 @@
 package actionpack;
 
 import actionpack.errors.ActionPackError;
+import actionpack.ActionController;
+import actionpack.FlashEnvironment;
 
 class Waybeams {
     
@@ -11,21 +13,27 @@ class Waybeams {
     public var environmentsPackage:String;
     
     public static function boot(?options:Dynamic):IEnvironment {
-        return new Waybeams(options).initialize();
+        return new Waybeams(options).initialize(options);
     }
     
-    function new(?options:Dynamic) {
+    static function main() {
+        boot();
+    }
+    
+    private function new(?options:Dynamic) {
         environment = DEFAULT_ENVIRONMENT;
         environmentsPackage = DEFAULT_ENVIRONMENTS_PACKAGE;
         Options.applyTo(this, options);
     }
     
-    public function initialize() {
+    public function initialize(?options:Dynamic) {
         var className = environmentsPackage + '.' + StringHelper.toCamelCase(environment);
         var clazz:Class&lt;Dynamic&gt; = Type.resolveClass(className);
         if(clazz == null) {
             throw new ActionPackError('Could not find class related to environment at: &quot;' + className + '&quot;. Did you mean to send in a basePackage?');
         }
-        return Type.createInstance(clazz, []);
+        var env = Type.createInstance(clazz, []);
+        Options.applyTo(env, options);
+        return env;
     }
 }</diff>
      <filename>ActionPack/src/actionpack/Waybeams.hx</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 require 'sprout'
 # Optionally load gems from a server other than rubyforge:
 # set_sources 'http://gems.projectsprouts.org'
-sprout 'as3'
+sprout 'as3', '&gt;= 1.0.27'
 
 ############################################
 # Configure your Project Model
@@ -22,21 +22,28 @@ project_model :model do |m|
   # m.test_dir              = 'test'
   # m.doc_dir               = 'doc'
   # m.asset_dir             = 'assets'
-  # m.compiler_gem_name     = 'sprout-flex4sdk-tool'
-  # m.compiler_gem_version  = '&gt;= 4.0.0'
+  m.compiler_gem_name     = 'sprout-flex4sdk-tool'
+  m.compiler_gem_version  = '&gt;= 4.1.0'
   # m.source_path           &lt;&lt; &quot;#{m.lib_dir}/somelib&quot;
   m.library_path            &lt;&lt; '../../../ActionPack/bin/Waybeams.swc'
   # m.libraries             &lt;&lt; :corelib
 end
 
 desc 'Compile and debug the application'
-debug :debug
+debug :debug do |t|
+  t.include_path &lt;&lt; 'src'
+end
 
 desc 'Compile run the test harness'
-unit :test
+unit :test do |t|
+  t.input = 'test/SimpleStoreRunner.as'
+  t.include_path &lt;&lt; 'src'
+end
 
 desc 'Compile the optimized deployment'
-deploy :deploy
+deploy :deploy do |t|
+  t.include_path &lt;&lt; 'src'
+end
 
 desc 'Create documentation'
 document :doc</diff>
      <filename>Examples/as3/SimpleStore/rakefile.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,15 +1,28 @@
 package {
+    import actionpack.Waybeams;
+    import actionpack.IEnvironment;
+
     import flash.Boot;
     import flash.display.DisplayObject;
     import flash.display.MovieClip;
     import flash.display.Sprite;
-    import skins.SimpleStoreSkin;
     
     public class SimpleStore extends Sprite {
 
         public function SimpleStore() {
-            addChild(new Boot(new MovieClip()));
-            addChild(new SimpleStoreSkin.ProjectSprouts() as DisplayObject);
+            var haxeBoot:MovieClip = new MovieClip();
+            addChild(haxeBoot);
+            var boot:Boot = new Boot(haxeBoot);
+            
+            var waybeamsBoot:MovieClip = new MovieClip();
+            addChild(waybeamsBoot);
+            var environment:* = actionpack.Waybeams.boot({context: waybeamsBoot});
+
+            trace(&quot;&gt;&gt; created environment: &quot; + environment);
+            trace(&quot;&gt;&gt; getting products/index&quot;);
+
+            environment.get('/products/index');
+
             trace(&quot;SimpleStore instantiated!&quot;);
         }
     }</diff>
      <filename>Examples/as3/SimpleStore/src/SimpleStore.as</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,10 @@
 package app.controllers {
     
-    public class ProductsController {
+    public class ProductsController extends ApplicationController {
+        
+        public function ProductsController(options:*=null) {
+            super(options);
+        }
         
         public function index():void {
         }</diff>
      <filename>Examples/as3/SimpleStore/src/app/controllers/ProductsController.as</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 package config {
     
-    public class Environment {
+    import actionpack.FlashEnvironment;
+    
+    public class Environment extends FlashEnvironment {
         
-        public function Environment() {
-        } 
     }
 }</diff>
      <filename>Examples/as3/SimpleStore/src/config/Environment.as</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,22 @@
 package config {
     
     import actionpack.ActionRoutes;
+    import app.controllers.ProductsController;
     
     public class Routes extends ActionRoutes {
         
-        public function Routes() {
+        public function Routes(options:Object=null) {
+            super(options);
+        }
+        
+        override public function initialize():void {
+            super.initialize();
+            // TODO: Routes aren't finding controllers in the right place...
+            /*connect('/products/:action', {controller: ProductsController});*/
+
             connect('/:controller/:action/:id');
             connect('/:controller/:action');
+            trace(&quot;&gt;&gt; INITIALIZING ROUTES WITH: &quot; + routes.length);
         }
     }
 }</diff>
      <filename>Examples/as3/SimpleStore/src/config/Routes.as</filename>
    </modified>
    <modified>
      <diff>@@ -0,0 +1,7 @@
+package config.environments {
+    
+    import config.Environment;
+    
+    public class Development extends Environment {
+    }
+}</diff>
      <filename>Examples/as3/SimpleStore/src/config/environments/Development.as</filename>
    </modified>
    <modified>
      <diff>@@ -0,0 +1,7 @@
+package config.environments {
+    
+    import config.Environment;
+    
+    public class Production extends Environment {
+    }
+}</diff>
      <filename>Examples/as3/SimpleStore/src/config/environments/Production.as</filename>
    </modified>
    <modified>
      <diff>@@ -0,0 +1,7 @@
+package config.environments {
+    
+    import config.Environment;
+    
+    public class Test extends Environment {
+    }
+}</diff>
      <filename>Examples/as3/SimpleStore/src/config/environments/Test.as</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>ActionPack/src/Waybeams.hx</filename>
    </removed>
    <removed>
      <filename>Examples/as3/SimpleStore/src/SimpleStoreRunner.as</filename>
    </removed>
    <removed>
      <filename>Examples/as3/SimpleStore/src/SimpleStoreXMLRunner.as</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>b84db680ce43cd99af2189aa5cd485be31286572</id>
    </parent>
  </parents>
  <author>
    <name>Luke Bayes</name>
    <email>lbayes@patternpark.com</email>
  </author>
  <url>http://github.com/lukebayes/waybeams/commit/5893298153005c399b517f48a6fd803bd07ba621</url>
  <id>5893298153005c399b517f48a6fd803bd07ba621</id>
  <committed-date>2009-07-04T14:59:36-07:00</committed-date>
  <authored-date>2009-07-04T14:59:36-07:00</authored-date>
  <message>Worked through end to end integration with AS3 example application</message>
  <tree>4dcc25bae5c68cb4bac569e861fd732a20f259b2</tree>
  <committer>
    <name>Luke Bayes</name>
    <email>lbayes@patternpark.com</email>
  </committer>
</commit>
