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

      @application.synchronize do
        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
      end

      @application.save_session(context)
      context.response
    end