abstract class AbstractJsonController[+A] extends MessagesBaseController
Abstract Controller designed to process actions that expect an input model and computes an output model.
The controller handles the json serialization and deserialization as well as the error responses and http status codes.
A common way for using this class is like:
class MyController @Inject() (components: MyJsonControllerComponents) extends MyJsonController(components) { ... }
Where MyJsonControllerComponents is a custom implementation for JsonControllerComponents and MyJsonController is the custom implementation for AbstractJsonController.
- A
the value type for an authenticated request, like User or UserId.
- Alphabetic
- By Inheritance
- AbstractJsonController
- MessagesBaseController
- BaseControllerHelpers
- ControllerHelpers
- RequestImplicits
- Rendering
- RequestExtractors
- AcceptExtractors
- ContentTypes
- HeaderNames
- Status
- HttpProtocol
- Results
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
AbstractJsonController(components: JsonControllerComponents[A])
- components
the components used by the logic of this JsonController.
Type Members
-
class
Status extends Result
- Definition Classes
- Results
Abstract Value Members
-
abstract
def
onServerError(error: ServerError, errorId: ErrorId): Unit
Override this and decide what to do in case of server errors.
Override this and decide what to do in case of server errors.
For example, log the error with the id, handle metrics, etc.
- error
the error that occurred.
- errorId
the unique identifier for the error.
- Attributes
- protected
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
val
ACCEPT: String
- Definition Classes
- HeaderNames
-
val
ACCEPTED: Int
- Definition Classes
- Status
-
val
ACCEPT_CHARSET: String
- Definition Classes
- HeaderNames
-
val
ACCEPT_ENCODING: String
- Definition Classes
- HeaderNames
-
val
ACCEPT_LANGUAGE: String
- Definition Classes
- HeaderNames
-
val
ACCEPT_RANGES: String
- Definition Classes
- HeaderNames
-
val
ACCESS_CONTROL_ALLOW_CREDENTIALS: String
- Definition Classes
- HeaderNames
-
val
ACCESS_CONTROL_ALLOW_HEADERS: String
- Definition Classes
- HeaderNames
-
val
ACCESS_CONTROL_ALLOW_METHODS: String
- Definition Classes
- HeaderNames
-
val
ACCESS_CONTROL_ALLOW_ORIGIN: String
- Definition Classes
- HeaderNames
-
val
ACCESS_CONTROL_EXPOSE_HEADERS: String
- Definition Classes
- HeaderNames
-
val
ACCESS_CONTROL_MAX_AGE: String
- Definition Classes
- HeaderNames
-
val
ACCESS_CONTROL_REQUEST_HEADERS: String
- Definition Classes
- HeaderNames
-
val
ACCESS_CONTROL_REQUEST_METHOD: String
- Definition Classes
- HeaderNames
-
val
AGE: String
- Definition Classes
- HeaderNames
-
val
ALLOW: String
- Definition Classes
- HeaderNames
-
val
AUTHORIZATION: String
- Definition Classes
- HeaderNames
-
val
Accepted: Status
- Definition Classes
- Results
-
def
Action: ActionBuilder[MessagesRequest, AnyContent]
- Definition Classes
- MessagesBaseController
-
val
BAD_GATEWAY: Int
- Definition Classes
- Status
-
val
BAD_REQUEST: Int
- Definition Classes
- Status
-
val
BINARY: String
- Definition Classes
- ContentTypes
-
val
BadGateway: Status
- Definition Classes
- Results
-
val
BadRequest: Status
- Definition Classes
- Results
-
val
CACHE_CONTROL: String
- Definition Classes
- HeaderNames
-
val
CACHE_MANIFEST: String
- Definition Classes
- ContentTypes
-
val
CHUNKED: String
- Definition Classes
- HttpProtocol
-
val
CONFLICT: Int
- Definition Classes
- Status
-
val
CONNECTION: String
- Definition Classes
- HeaderNames
-
val
CONTENT_DISPOSITION: String
- Definition Classes
- HeaderNames
-
val
CONTENT_ENCODING: String
- Definition Classes
- HeaderNames
-
val
CONTENT_LANGUAGE: String
- Definition Classes
- HeaderNames
-
val
CONTENT_LENGTH: String
- Definition Classes
- HeaderNames
-
val
CONTENT_LOCATION: String
- Definition Classes
- HeaderNames
-
val
CONTENT_MD5: String
- Definition Classes
- HeaderNames
-
val
CONTENT_RANGE: String
- Definition Classes
- HeaderNames
-
val
CONTENT_TRANSFER_ENCODING: String
- Definition Classes
- HeaderNames
-
val
CONTENT_TYPE: String
- Definition Classes
- HeaderNames
-
val
CONTINUE: Int
- Definition Classes
- Status
-
val
COOKIE: String
- Definition Classes
- HeaderNames
-
val
CREATED: Int
- Definition Classes
- Status
-
def
CSS(implicit codec: Codec): String
- Definition Classes
- ContentTypes
-
val
Conflict: Status
- Definition Classes
- Results
-
val
Continue: Result
- Definition Classes
- Results
-
val
Created: Status
- Definition Classes
- Results
-
val
DATE: String
- Definition Classes
- HeaderNames
-
val
ETAG: String
- Definition Classes
- HeaderNames
-
def
EVENT_STREAM(implicit codec: Codec): String
- Definition Classes
- ContentTypes
-
val
EXPECT: String
- Definition Classes
- HeaderNames
-
val
EXPECTATION_FAILED: Int
- Definition Classes
- Status
-
val
EXPIRES: String
- Definition Classes
- HeaderNames
-
val
EntityTooLarge: Status
- Definition Classes
- Results
-
val
ExpectationFailed: Status
- Definition Classes
- Results
-
val
FAILED_DEPENDENCY: Int
- Definition Classes
- Status
-
val
FORBIDDEN: Int
- Definition Classes
- Status
-
val
FORM: String
- Definition Classes
- ContentTypes
-
val
FORWARDED: String
- Definition Classes
- HeaderNames
-
val
FOUND: Int
- Definition Classes
- Status
-
val
FROM: String
- Definition Classes
- HeaderNames
-
val
FailedDependency: Status
- Definition Classes
- Results
-
val
Forbidden: Status
- Definition Classes
- Results
-
def
Found(url: String): Result
- Definition Classes
- Results
-
val
GATEWAY_TIMEOUT: Int
- Definition Classes
- Status
-
val
GONE: Int
- Definition Classes
- Status
-
val
GatewayTimeout: Status
- Definition Classes
- Results
-
val
Gone: Status
- Definition Classes
- Results
-
val
HOST: String
- Definition Classes
- HeaderNames
-
def
HTML(implicit codec: Codec): String
- Definition Classes
- ContentTypes
-
val
HTTP_1_0: String
- Definition Classes
- HttpProtocol
-
val
HTTP_1_1: String
- Definition Classes
- HttpProtocol
-
val
HTTP_VERSION_NOT_SUPPORTED: Int
- Definition Classes
- Status
-
val
HttpVersionNotSupported: Status
- Definition Classes
- Results
-
val
IF_MATCH: String
- Definition Classes
- HeaderNames
-
val
IF_MODIFIED_SINCE: String
- Definition Classes
- HeaderNames
-
val
IF_NONE_MATCH: String
- Definition Classes
- HeaderNames
-
val
IF_RANGE: String
- Definition Classes
- HeaderNames
-
val
IF_UNMODIFIED_SINCE: String
- Definition Classes
- HeaderNames
-
val
IM_A_TEAPOT: Int
- Definition Classes
- Status
-
val
INSUFFICIENT_STORAGE: Int
- Definition Classes
- Status
-
val
INTERNAL_SERVER_ERROR: Int
- Definition Classes
- Status
-
val
ImATeapot: Status
- Definition Classes
- Results
-
val
InsufficientStorage: Status
- Definition Classes
- Results
-
val
InternalServerError: Status
- Definition Classes
- Results
-
def
JAVASCRIPT(implicit codec: Codec): String
- Definition Classes
- ContentTypes
-
val
JSON: String
- Definition Classes
- ContentTypes
-
val
LAST_MODIFIED: String
- Definition Classes
- HeaderNames
-
val
LENGTH_REQUIRED: Int
- Definition Classes
- Status
-
val
LINK: String
- Definition Classes
- HeaderNames
-
val
LOCATION: String
- Definition Classes
- HeaderNames
-
val
LOCKED: Int
- Definition Classes
- Status
-
val
Locked: Status
- Definition Classes
- Results
-
val
MAX_FORWARDS: String
- Definition Classes
- HeaderNames
-
val
METHOD_NOT_ALLOWED: Int
- Definition Classes
- Status
-
val
MOVED_PERMANENTLY: Int
- Definition Classes
- Status
-
val
MULTIPLE_CHOICES: Int
- Definition Classes
- Status
-
val
MULTI_STATUS: Int
- Definition Classes
- Status
-
val
MethodNotAllowed: Status
- Definition Classes
- Results
-
def
MovedPermanently(url: String): Result
- Definition Classes
- Results
-
val
MultiStatus: Status
- Definition Classes
- Results
-
val
NON_AUTHORITATIVE_INFORMATION: Int
- Definition Classes
- Status
-
val
NOT_ACCEPTABLE: Int
- Definition Classes
- Status
-
val
NOT_FOUND: Int
- Definition Classes
- Status
-
val
NOT_IMPLEMENTED: Int
- Definition Classes
- Status
-
val
NOT_MODIFIED: Int
- Definition Classes
- Status
-
val
NO_CONTENT: Int
- Definition Classes
- Status
-
val
NoContent: Result
- Definition Classes
- Results
-
val
NonAuthoritativeInformation: Status
- Definition Classes
- Results
-
val
NotAcceptable: Status
- Definition Classes
- Results
-
val
NotFound: Status
- Definition Classes
- Results
-
val
NotImplemented: Status
- Definition Classes
- Results
-
val
NotModified: Result
- Definition Classes
- Results
-
val
OK: Int
- Definition Classes
- Status
-
val
ORIGIN: String
- Definition Classes
- HeaderNames
-
val
Ok: Status
- Definition Classes
- Results
-
val
PARTIAL_CONTENT: Int
- Definition Classes
- Status
-
val
PAYMENT_REQUIRED: Int
- Definition Classes
- Status
-
val
PERMANENT_REDIRECT: Int
- Definition Classes
- Status
-
val
PRAGMA: String
- Definition Classes
- HeaderNames
-
val
PRECONDITION_FAILED: Int
- Definition Classes
- Status
-
val
PROXY_AUTHENTICATE: String
- Definition Classes
- HeaderNames
-
val
PROXY_AUTHENTICATION_REQUIRED: Int
- Definition Classes
- Status
-
val
PROXY_AUTHORIZATION: String
- Definition Classes
- HeaderNames
-
val
PartialContent: Status
- Definition Classes
- Results
-
val
PaymentRequired: Status
- Definition Classes
- Results
-
def
PermanentRedirect(url: String): Result
- Definition Classes
- Results
-
val
PreconditionFailed: Status
- Definition Classes
- Results
-
val
RANGE: String
- Definition Classes
- HeaderNames
-
val
REFERER: String
- Definition Classes
- HeaderNames
-
val
REQUESTED_RANGE_NOT_SATISFIABLE: Int
- Definition Classes
- Status
-
val
REQUEST_ENTITY_TOO_LARGE: Int
- Definition Classes
- Status
-
val
REQUEST_TIMEOUT: Int
- Definition Classes
- Status
-
val
REQUEST_URI_TOO_LONG: Int
- Definition Classes
- Status
-
val
RESET_CONTENT: Int
- Definition Classes
- Status
-
val
RETRY_AFTER: String
- Definition Classes
- HeaderNames
-
def
Redirect(call: Call, status: Int): Result
- Definition Classes
- Results
-
def
Redirect(call: Call): Result
- Definition Classes
- Results
-
def
Redirect(url: String, queryString: Map[String, Seq[String]], status: Int): Result
- Definition Classes
- Results
-
def
Redirect(url: String, status: Int): Result
- Definition Classes
- Results
-
val
RequestTimeout: Status
- Definition Classes
- Results
-
val
ResetContent: Result
- Definition Classes
- Results
-
val
SEE_OTHER: Int
- Definition Classes
- Status
-
val
SERVER: String
- Definition Classes
- HeaderNames
-
val
SERVICE_UNAVAILABLE: Int
- Definition Classes
- Status
-
val
SET_COOKIE: String
- Definition Classes
- HeaderNames
-
val
SET_COOKIE2: String
- Definition Classes
- HeaderNames
-
val
STRICT_TRANSPORT_SECURITY: String
- Definition Classes
- HeaderNames
-
val
SWITCHING_PROTOCOLS: Int
- Definition Classes
- Status
-
def
SeeOther(url: String): Result
- Definition Classes
- Results
-
val
ServiceUnavailable: Status
- Definition Classes
- Results
-
def
Status(code: Int): Status
- Definition Classes
- Results
-
val
SwitchingProtocols: Result
- Definition Classes
- Results
-
val
TE: String
- Definition Classes
- HeaderNames
-
val
TEMPORARY_REDIRECT: Int
- Definition Classes
- Status
-
def
TEXT(implicit codec: Codec): String
- Definition Classes
- ContentTypes
-
lazy val
TODO: Action[AnyContent]
- Definition Classes
- ControllerHelpers
-
val
TOO_MANY_REQUESTS: Int
- Definition Classes
- Status
-
val
TRAILER: String
- Definition Classes
- HeaderNames
-
val
TRANSFER_ENCODING: String
- Definition Classes
- HeaderNames
-
def
TemporaryRedirect(url: String): Result
- Definition Classes
- Results
-
val
TooManyRequests: Status
- Definition Classes
- Results
-
val
UNAUTHORIZED: Int
- Definition Classes
- Status
-
val
UNPROCESSABLE_ENTITY: Int
- Definition Classes
- Status
-
val
UNSUPPORTED_MEDIA_TYPE: Int
- Definition Classes
- Status
-
val
UPGRADE: String
- Definition Classes
- HeaderNames
-
val
UPGRADE_REQUIRED: Int
- Definition Classes
- Status
-
val
USER_AGENT: String
- Definition Classes
- HeaderNames
-
val
USE_PROXY: Int
- Definition Classes
- Status
-
val
Unauthorized: Status
- Definition Classes
- Results
-
val
UnprocessableEntity: Status
- Definition Classes
- Results
-
val
UnsupportedMediaType: Status
- Definition Classes
- Results
-
val
UriTooLong: Status
- Definition Classes
- Results
-
val
VARY: String
- Definition Classes
- HeaderNames
-
val
VIA: String
- Definition Classes
- HeaderNames
-
val
WARNING: String
- Definition Classes
- HeaderNames
-
val
WWW_AUTHENTICATE: String
- Definition Classes
- HeaderNames
-
def
XHTML(implicit codec: Codec): String
- Definition Classes
- ContentTypes
-
def
XML(implicit codec: Codec): String
- Definition Classes
- ContentTypes
-
val
X_FORWARDED_FOR: String
- Definition Classes
- HeaderNames
-
val
X_FORWARDED_HOST: String
- Definition Classes
- HeaderNames
-
val
X_FORWARDED_PORT: String
- Definition Classes
- HeaderNames
-
val
X_FORWARDED_PROTO: String
- Definition Classes
- HeaderNames
-
val
X_REQUESTED_WITH: String
- Definition Classes
- HeaderNames
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
authenticatedNoInput[M](block: (AuthenticatedContext[A]) ⇒ FutureApplicationResult[M])(implicit tjs: Writes[M]): Action[JsValue]
Sets Ok as the default successStatus.
Sets Ok as the default successStatus.
Note: The request will be authenticated using your custom AbstractAuthenticatorService.
Example:
def whoAmI() = authenticatedNoInput { context: AuthenticatedContext[UserId] => ... }
Where UserId is what your custom AbstractAuthenticatorService returns on authenticated requests.
-
def
authenticatedNoInput[M](successStatus: Status)(block: (AuthenticatedContext[A]) ⇒ FutureApplicationResult[M])(implicit tjs: Writes[M]): Action[JsValue]
Execute an asynchronous action that doesn't need an input model and returns the model M on success.
Execute an asynchronous action that doesn't need an input model and returns the model M on success.
Note: The request will be authenticated using your custom AbstractAuthenticatorService.
Example:
def whoAmI() = authenticatedNoInput { context: AuthenticatedContext[UserId] => ... }
Where UserId is what your custom AbstractAuthenticatorService returns on authenticated requests.
- M
the output model type
- successStatus
the http status for a successful response
- block
the block to execute
- tjs
the serializer for M
-
def
authenticatedWithInput[R, M](block: (AuthenticatedContextWithModel[A, R]) ⇒ FutureApplicationResult[M])(implicit arg0: Reads[R], tjs: Writes[M]): Action[JsValue]
Sets Ok as the default successStatus.
Sets Ok as the default successStatus.
Note: The request will be authenticated using your custom AbstractAuthenticatorService.
Example:
def setPreferences = authenticatedWithInput { context: AuthenticatedContextWithModel[UserId, SetUserPreferencesModel] => ... }
Where UserId is what your custom AbstractAuthenticatorService returns on authenticated requests, also, there is an implicit deserializer for the SetUserPreferencesModel class.
-
def
authenticatedWithInput[R, M](successStatus: Status)(block: (AuthenticatedContextWithModel[A, R]) ⇒ FutureApplicationResult[M])(implicit arg0: Reads[R], tjs: Writes[M]): Action[JsValue]
Execute an asynchronous action that receives the model R and produces the model M on success, the http status in case of a successful result will be taken from successStatus param.
Execute an asynchronous action that receives the model R and produces the model M on success, the http status in case of a successful result will be taken from successStatus param.
Note: The request will be authenticated using your custom AbstractAuthenticatorService.
Example:
def setPreferences = authenticatedWithInput(Ok) { context: AuthenticatedContextWithModel[UserId, SetUserPreferencesModel] => ... }
Where UserId is what your custom AbstractAuthenticatorService returns on authenticated requests, also, there is an implicit deserializer for the SetUserPreferencesModel class.
- R
the input model type
- M
the output model type
- successStatus
the http status for a successful response
- block
the block to execute
- tjs
the serializer for M
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
val
controllerComponents: MessagesControllerComponents
- Attributes
- protected
- Definition Classes
- AbstractJsonController → MessagesBaseController → BaseControllerHelpers
-
def
defaultExecutionContext: ExecutionContext
- Definition Classes
- BaseControllerHelpers
-
implicit
val
ec: ExecutionContext
- Attributes
- protected
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
implicit
def
fileMimeTypes: FileMimeTypes
- Definition Classes
- BaseControllerHelpers
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
implicit
def
messagesApi: MessagesApi
- Definition Classes
- BaseControllerHelpers
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
parse: PlayBodyParsers
- Definition Classes
- BaseControllerHelpers
-
def
publicNoInput[M](block: (PublicContext) ⇒ FutureApplicationResult[M])(implicit tjs: Writes[M]): Action[JsValue]
Sets a default successStatus.
Sets a default successStatus.
Example:
def verifyEmail(token: String) = publicNoInput(Created) { context: PublicContext => ... }
In case of a successful result, the HTTP status Created (201) will be returned.
-
def
publicNoInput[M](successStatus: Status)(block: (PublicContext) ⇒ FutureApplicationResult[M])(implicit tjs: Writes[M]): Action[JsValue]
Execute an asynchronous action that doesn't need an input model and returns the model M on success.
Execute an asynchronous action that doesn't need an input model and returns the model M on success.
Note: The request will not be authenticated.
Example:
def verifyEmail(token: String) = publicNoInput { context: PublicContext => ... }
In case of a successful result, the HTTP status Ok (200) will be returned.
- M
the output model type
- successStatus
the http status for a successful response
- block
the block to execute
- tjs
the serializer for M
-
def
publicWithInput[R, M](block: (PublicContextWithModel[R]) ⇒ FutureApplicationResult[M])(implicit arg0: Reads[R], tjs: Writes[M]): Action[JsValue]
Sets Ok as the default successStatus.
Sets Ok as the default successStatus.
Example:
def login = publicWithInput { context: PublicContextWithModel[LoginModel] => ... }
Where there is an implicit deserializer for the LoginModel class, in case of a successful result, the HTTP status Ok (200) will be returned.
-
def
publicWithInput[R, M](successStatus: Status)(block: (PublicContextWithModel[R]) ⇒ FutureApplicationResult[M])(implicit arg0: Reads[R], tjs: Writes[M]): Action[JsValue]
Execute an asynchronous action that receives the model R and returns the model M on success.
Execute an asynchronous action that receives the model R and returns the model M on success.
The model R is wrapped in a RequestContext.
Note: The request will not be authenticated.
Example:
def createUser = publicWithInput(Created) { context: PublicContextWithModel[CreateUserModel] => ... }
Where there is an implicit deserializer for the CreateUserModel class, in case of a successful result, the HTTP status Created (201) will be returned.
- R
the input model type
- M
the output model type
- successStatus
the http status for a successful response
- block
the block to execute
- tjs
the serializer for M
-
implicit
def
request2flash(implicit request: RequestHeader): Flash
- Definition Classes
- RequestImplicits
-
implicit
def
request2session(implicit request: RequestHeader): Session
- Definition Classes
- RequestImplicits
-
implicit
def
supportedLangs: Langs
- Definition Classes
- BaseControllerHelpers
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
withCharset(mimeType: String)(implicit codec: Codec): String
- Definition Classes
- ContentTypes