package Ġcom . mik em ol enda . request log Ċ Ċ import Ġcom . google . appengine . api . datastore . Datastore Service Factory Ċ import Ġcom . google . appengine . api . datastore . Entity Ċ import Ġcom . google . appengine . api . datastore . Query Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . web . bind . annotation .* Ċ Ċ @ RestController Ċ @ RequestMapping ("/") Ċ class ĠRequest Log Controller Ġ{ ĊĊĠĠĠ Ġval Ġdatastore Ġ= ĠData store Service Factory . getData store Service () ĊĊĠĠĠ Ġ@ RequestMapping ( value Ġ= Ġ["/ test "], Ġmethod Ġ= Ġ[ Request Method . GET ], Ġproduces Ġ= Ġ[ MediaType . APPLICATION _ JSON _ VALUE ]) ĊĠĠĠ Ġfun ĠgetDefault (@ RequestParam ( value Ġ= Ġ" name ", Ġrequired Ġ= Ġfalse ) Ġname : ĠString ?): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" Hello Ġ${ name Ġ?: Ġ" World "} " ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Entity Ġ= ĠEntity (" Request ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Entity . setProperty (" endpoint ", Ġ"/ test ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Entity . setProperty (" method ", Ġ" GET ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Entity . setProperty (" message ", Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatastore . put ( request Entity ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( n pe : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn pe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponse ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ( value Ġ= Ġ["/ test "], Ġmethod Ġ= Ġ[ Request Method . POST ], Ġproduces Ġ= Ġ[ MediaType . APPLICATION _ JSON _ VALUE ]) ĊĠĠĠ Ġfun Ġpost Default (@ RequestBody ( required Ġ= Ġfalse ) Ġrequest : ĠRequest ?): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠResponse (" Hello Ġ${ request ?. name Ġ?: Ġ" World "} ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ("/ requests ") ĊĠĠĠ Ġfun Ġget Requests (): ĠList < Request Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠQuery (" Request ") ĊĠĠĠĠĠĠĠ Ġval Ġprepared Query Ġ= Ġdatastore . prepare ( query ) ĊĠĠĠĠĠĠĠ Ġval Ġrequests Ġ= Ġprepared Query . as Iterable (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint Ġ= Ġit . getProperty (" endpoint "). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġit . getProperty (" method "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. toList () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrequests ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ data Ġclass ĠRequest ( val Ġname : ĠString ?) Ċ data Ġclass ĠResponse ( val Ġmessage : ĠString ) Ċ data Ġclass ĠRequest Data ( val Ġendpoint : ĠString , Ġval Ġmethod : ĠString )