Interface GroovyContext

  • All Superinterfaces:
    Context, Registry

    public interface GroovyContext
    extends Context
    Subclass of Context that adds Groovy friendly variants of methods.
    • Method Detail

      • from

        static GroovyContext from​(Context ctx)
        Creates a Groovy context from a context.
        Parameters:
        ctx - the actual context
        Returns:
        a Groovy context
      • byMethod

        void byMethod​(@DelegatesTo(value=GroovyByMethodSpec.class,strategy=1)
                      Closure<?> closure)
               throws Exception
        Groovy friendly overload of Context.byMethod(Action).
         import ratpack.groovy.test.handling.GroovyRequestFixture
         import static ratpack.groovy.Groovy.groovyHandler
        
         def handler = groovyHandler {
           byMethod {
             def message = "hello!"
             get {
               render "$message from GET request"
             }
             post {
               render "$message from POST request"
             }
           }
         }
        
         def result = GroovyRequestFixture.handle(handler) {
           method "get"
         }
        
         assert result.rendered(CharSequence) == "hello! from GET request"
        
         result = GroovyRequestFixture.handle(handler) {
           method "post"
         }
        
         assert result.rendered(CharSequence) == "hello! from POST request"
         
        Parameters:
        closure - defines the action to take for different HTTP methods
        Throws:
        Exception - any thrown by the closure
      • byContent

        void byContent​(@DelegatesTo(value=GroovyByContentSpec.class,strategy=1)
                       Closure<?> closure)
                throws Exception
        Groovy friendly overload of Context.byContent(Action).
        
         import ratpack.groovy.test.handling.GroovyRequestFixture
         import static ratpack.groovy.Groovy.groovyHandler
        
         def handler = groovyHandler {
           byContent {
             def message = "hello!"
             json {
               render "{\"msg\": \"$message\"}"
             }
             html {
               render "<p>$message</p>"
             }
           }
         }
        
         def result = GroovyRequestFixture.handle(handler) {
           header("Accept", "application/json");
         }
        
         assert result.rendered(CharSequence) == "{\"msg\": \"hello!\"}"
         assert result.headers.get("content-type") == "application/json"
        
         result = GroovyRequestFixture.handle(handler) {
           header("Accept", "text/plain; q=1.0, text/html; q=0.8, application/json; q=0.7");
         }
        
         assert result.rendered(CharSequence) == "<p>hello!</p>";
         assert result.headers.get("content-type") == "text/html;charset=UTF-8";
         
        Parameters:
        closure - defines the action to take for the different content types
        Throws:
        Exception - any thrown by the closure