# File lib/cgikit/handler.rb, line 192
    def handle_request( request )
      super
      context = @application.create_context(request)
      context.request_handler_key = @application.component_request_handler_key

      transaction(context.component, context) do
        @application.take_values_from_request(request, context)
      end

      result = nil
      context.delete_all
      transaction(context.component, context) do
        result = @application.invoke_action(request, context)
      end

      if Response === result then
        context.response = result
      else
        if (Component === result) and (context.component != result) then
          result.awake_from_restoration(context)
          context.component = result
        else
          result = context.component.root
        end
        context.delete_all
        transaction(result, context) do
          @application.append_to_response(context.response, context)
        end
        context.response.component = result
      end

      @application.save_session(context)
      context.response
    end