<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1 +1 @@
-0.8.2
\ No newline at end of file
+0.9.0
\ No newline at end of file</diff>
      <filename>doc/VERSION</filename>
    </modified>
    <modified>
      <diff>@@ -3,23 +3,23 @@
 
 # External Dependencies
 require &quot;rubygems&quot;
-  require 'rack'
-  require 'rack/cache'
-  require 'daemons'
+require 'rack'
+require 'rack/cache'
+require 'daemons'
 
-  # a bunch of handy stuff
-  require 'extensions/io'
-  require 'extensions/symbol' unless Symbol.instance_methods.include? 'to_proc'
-  require 'fileutils'
-  require 'metaid'
-  require 'forwardable'
-  require 'date'
-  require 'benchmark'
-  require 'base64'
-  require 'functor'
-  require 'filebase'
-  require 'filebase/model'
-  require 'english/style'
+# a bunch of handy stuff
+require 'extensions/io'
+require 'extensions/symbol' unless Symbol.instance_methods.include? 'to_proc'
+require 'fileutils'
+require 'metaid'
+require 'forwardable'
+require 'date'
+require 'benchmark'
+require 'base64'
+require 'functor'
+require 'filebase'
+require 'filebase/model'
+require 'english/style'
 
 
 # selected project-specific extensions</diff>
      <filename>lib/waves.rb</filename>
    </modified>
    <modified>
      <diff>@@ -35,11 +35,10 @@ module Waves
             auto_create_class true, :Default
             auto_load true, :directories =&gt; [ :resources ]
             auto_eval :Map do
-              
               handler( Waves::Dispatchers::NotFoundError ) do
+                request.response.content_type = 'text/html'
                 app::Views::Error.new( request ).not_found_404
               end
-
             end
           end
 </diff>
      <filename>lib/waves/foundations/classic.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,16 +4,6 @@ module Waves
     
     module Mixin
       
-      def controller( resource = nil )
-        resource ||= self.class.basename
-        @controller ||= app::Controllers[ resource ].new( @request )
-      end
-      
-      def view( resource = nil )
-        resource ||= self.class.basename
-        @view ||= app::Views[ resource ].new( @request )
-      end
-  
     end
     
   end
@@ -32,7 +22,20 @@ module Waves
     #
     # to find an instance of a given model. Again, the plurality of the controller and
     # model must be the same for this to work.
-    def model; app::Models[ model_name.intern ]; end
+    def model( resource = nil )
+      resource ||= self.class.basename.snake_case
+      app::Models[ resource ]
+    end
+
+    def controller( resource = nil )
+      resource ||= self.class.basename.snake_case
+      @controller ||= app::Controllers[ resource ].new( @request )
+    end
+    
+    def view( resource = nil )
+      resource ||= self.class.basename.snake_case
+      @view ||= app::Views[ resource ].new( @request )
+    end
 
     # MVC Params get automatically destructured with the keys as accessors methods.
     # You can still access the original query by calling request.query</diff>
      <filename>lib/waves/layers/mvc/extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -75,27 +75,35 @@ module Waves
 
           def initialize( request ); @request = request ; end
 
+          # define defaults for all the functors, providing the analog
+          # of &quot;not implemented&quot; behaviors. this avoids complicating
+          # the error handling with having to distinguish between
+          # functor match-related errors and actual application errors
+          
+          # by default, don't do anything in the wrapper methods
+          before {} ; after {} ; always {}
+
+          # if we get here, this is a 404
+          %w( post get put delete head ).each do | method |
+            on( method ) { not_found }
+          end
+          
+          # default handler is just to propagate the exception
+          handler( Exception ) { |e| raise( e ) }
+
           def process
             begin
-              before ;  body = send( request.method ) ; after
-            rescue Waves::Dispatchers::Redirect =&gt; e
-              raise e
+              before ;  rval = send( request.method ) ; after
             rescue =&gt; e
               response.status = ( StatusCodes[ e.class ] || 500 )
-              begin
-                body = handler( e )
-              rescue =&gt; f
-                unless f.is_a? NoMethodError # no handler defined
-                  Waves::Logger.error &quot;Exception in handler for #{e.class}.&quot;
-                  Waves::Logger.debug [ f.message, *f.backtrace ].join(&quot;\n\t&quot;)
-                end
-                raise e # re-raise
-              end
-              Waves::Logger.warn &quot;Handled #{e.class}: #{e.message}&quot;
+              rval = handler( e )
             ensure
               always
             end
-            return body
+            # note: the dispatcher decides what to do with the
+            # return value; all we care about is returning the
+            # value from the appropriate application block
+            return rval
           end
 
           def to( resource )
@@ -103,12 +111,6 @@ module Waves
             when Base
               resource
             when Symbol, String
-              begin
-                Waves.main::Resources[ resource ]
-              rescue NameError =&gt; e
-                Waves::Logger.debug [ e.message, *e.backtrace ].join(&quot;\n\t&quot;)
-                raise Waves::Dispatchers::NotFoundError
-              end
               Waves.main::Resources[ resource ]
             end
             r = traits.waves.resource = resource.new( request )
@@ -121,13 +123,6 @@ module Waves
           # determine how to handle the request
           def deferred? ; false ; end
 
-          before {} ; after {} ; always {}
-          # handler( Waves::Dispatchers::Redirect ) { |e| raise e }
-
-          %w( post get put delete head ).each do | method |
-            on( method ) { not_found }
-          end
-
         end
 
       end</diff>
      <filename>lib/waves/resources/mixin.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ac9bd4eb2ed3a5e507397f400c155e0ece902ecd</id>
    </parent>
  </parents>
  <author>
    <name>Dan Yoder</name>
    <email>dan@zeraweb.com</email>
  </author>
  <url>http://github.com/waves/edge/commit/fbd61d27b31b0d0753ee3d997349b192a4698652</url>
  <id>fbd61d27b31b0d0753ee3d997349b192a4698652</id>
  <committed-date>2009-07-19T17:56:33-07:00</committed-date>
  <authored-date>2009-07-19T17:56:33-07:00</authored-date>
  <message>Streamlined/simplified error handling some more. Moved controller and view classic methods into ResponseMixin and added similar method for accessing a resource.</message>
  <tree>32032d3cf6361f5e49458c39447d5029f3a144bf</tree>
  <committer>
    <name>Dan Yoder</name>
    <email>dan@zeraweb.com</email>
  </committer>
</commit>
