# File lib/cgikit/ajax/handler.rb, line 18
    def handle_request( request )
      super

      reset_form_values(request)
      context = @application.create_context(request)

      @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
        elsif result.nil? or Array === result or Hash === result then
          context.response.content = XMLSerializer.serialize(result)
        elsif ::String === result then
          context.response.content = 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.headers['Content-Type'] = 'text/xml'
      context.response
    end