Skip to content

Instantly share code, notes, and snippets.

@danveloper
Created July 2, 2015 16:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danveloper/6ed3caaf0f4b192f99bd to your computer and use it in GitHub Desktop.
Save danveloper/6ed3caaf0f4b192f99bd to your computer and use it in GitHub Desktop.
Ratpack Context Registry Interop
import static ratpack.groovy.Groovy.ratpack
class PageModel {
Integer page
Integer pageSize
Integer evaluatedPageSize
}
ratpack {
bindings {
module(JacksonModule)
bind(PersistenceService, DefaultPersistenceService)
}
handlers {
all { PersistenceService persistenceService ->
Integer page = request.queryParams.page as Integer ?: 1
Integer pageSize = request.queryParams.pageSize as Integer ?: persistenceServiceConfig.maxResultSizePerPage
Integer evaluatedPageSize = pageSize <= persistenceServiceConfig.maxResultSizePerPage ? pageSize : persistenceServiceConfig.maxResultSizePerPage
context.next(new PageModel(page: page, pageSize: pageSize, evaluatedPageSize: evaluatedPageSize))
}
all { PersistenceService persistenceService ->
byMethod {
get { PageModel pageModel ->
persistenceService.getPeople(pageModel.page, pageModel.evaluatedPageSize).toList().subscribe() { List<Person> people ->
render json(people)
}
}
post {
def form = parse(Form)
persistenceService
.insertPerson(form)
.subscribe { Person person ->
redirect "/person/${person.id}"
}
}
}
}
get("in/:postalCode") { PersistenceService persistenceService, PageModel pageModel ->
String postalCode = pathTokens.postalCode
persistenceService.getPeopleInPostalCode(postalCode, pageModel.page, pageModel.evaluatedPageSize).toList().subscribe() { List<Person> people ->
render json(people)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment