@@ -55,22 +55,21 @@ public class RestHelloAction extends BaseExtensionRestHandler {
55
55
@ Override
56
56
public List <RouteHandler > routeHandlers () {
57
57
return List .of (
58
- new RouteHandler (GET , "/hello" , this :: handleGetRequest ),
59
- new RouteHandler (POST , "/hello" , this :: handlePostRequest ),
60
- new RouteHandler (PUT , "/hello/{name}" , this :: handlePutRequest ),
61
- new RouteHandler (DELETE , "/goodbye" , this :: handleDeleteRequest )
58
+ new RouteHandler (GET , "/hello" , r -> handleGetRequest ( r ) ),
59
+ new RouteHandler (POST , "/hello" , r -> handlePostRequest ( r ) ),
60
+ new RouteHandler (PUT , "/hello/{name}" , r -> handlePutRequest ( r ) ),
61
+ new RouteHandler (DELETE , "/goodbye" , r -> handleDeleteRequest ( r ) )
62
62
);
63
63
}
64
64
65
- private ExtensionRestResponse handleGetRequest () {
65
+ private ExtensionRestResponse handleGetRequest (ExtensionRestRequest request ) {
66
66
String worldNameWithRandomAdjective = worldAdjectives .isEmpty ()
67
67
? worldName
68
68
: String .join (" " , worldAdjectives .get (rand .nextInt (worldAdjectives .size ())), worldName );
69
- return createResponse ( OK , String .format (GREETING , worldNameWithRandomAdjective ));
69
+ return new ExtensionRestResponse ( request , OK , String .format (GREETING , worldNameWithRandomAdjective ));
70
70
}
71
71
72
- private ExtensionRestResponse handlePostRequest () {
73
- ExtensionRestRequest request = getRequest ();
72
+ private ExtensionRestResponse handlePostRequest (ExtensionRestRequest request ) {
74
73
if (request .hasContent ()) {
75
74
String adjective = "" ;
76
75
XContentType contentType = request .getXContentType ();
@@ -82,11 +81,16 @@ private ExtensionRestResponse handlePostRequest() {
82
81
adjective = request .contentParser (NamedXContentRegistry .EMPTY ).mapStrings ().get ("adjective" );
83
82
} catch (IOException | OpenSearchParseException e ) {
84
83
// Sample plain text response
85
- return createResponse ( BAD_REQUEST , "Unable to parse adjective from JSON" );
84
+ return new ExtensionRestResponse ( request , BAD_REQUEST , "Unable to parse adjective from JSON" );
86
85
}
87
86
} else {
88
87
// Sample text response with content type
89
- return createResponse (NOT_ACCEPTABLE , TEXT_CONTENT_TYPE , "Only text and JSON content types are supported" );
88
+ return new ExtensionRestResponse (
89
+ request ,
90
+ NOT_ACCEPTABLE ,
91
+ TEXT_CONTENT_TYPE ,
92
+ "Only text and JSON content types are supported"
93
+ );
90
94
}
91
95
if (adjective != null && !adjective .isBlank ()) {
92
96
worldAdjectives .add (adjective .trim ());
@@ -96,37 +100,36 @@ private ExtensionRestResponse handlePostRequest() {
96
100
.startObject ()
97
101
.field ("worldAdjectives" , worldAdjectives )
98
102
.endObject ();
99
- return createResponse ( OK , builder );
103
+ return new ExtensionRestResponse ( request , OK , builder );
100
104
} catch (IOException e ) {
101
105
// Sample response for developer error
102
- return unhandledRequest ();
106
+ return unhandledRequest (request );
103
107
}
104
108
}
105
109
byte [] noAdjective = "No adjective included with POST request" .getBytes (StandardCharsets .UTF_8 );
106
110
// Sample binary response with content type
107
- return createResponse ( BAD_REQUEST , TEXT_CONTENT_TYPE , noAdjective );
111
+ return new ExtensionRestResponse ( request , BAD_REQUEST , TEXT_CONTENT_TYPE , noAdjective );
108
112
}
109
113
// Sample bytes reference response with content type
110
114
BytesReference noContent = BytesReference .fromByteBuffer (
111
115
ByteBuffer .wrap ("No content included with POST request" .getBytes (StandardCharsets .UTF_8 ))
112
116
);
113
- return createResponse ( BAD_REQUEST , TEXT_CONTENT_TYPE , noContent );
117
+ return new ExtensionRestResponse ( request , BAD_REQUEST , TEXT_CONTENT_TYPE , noContent );
114
118
}
115
119
116
- private ExtensionRestResponse handlePutRequest () {
117
- ExtensionRestRequest request = getRequest ();
120
+ private ExtensionRestResponse handlePutRequest (ExtensionRestRequest request ) {
118
121
String name = request .param ("name" );
119
122
try {
120
123
worldName = URLDecoder .decode (name , StandardCharsets .UTF_8 );
121
124
} catch (IllegalArgumentException e ) {
122
- return createResponse ( BAD_REQUEST , e .getMessage ());
125
+ return new ExtensionRestResponse ( request , BAD_REQUEST , e .getMessage ());
123
126
}
124
- return createResponse ( OK , "Updated the world's name to " + worldName );
127
+ return new ExtensionRestResponse ( request , OK , "Updated the world's name to " + worldName );
125
128
}
126
129
127
- private ExtensionRestResponse handleDeleteRequest () {
130
+ private ExtensionRestResponse handleDeleteRequest (ExtensionRestRequest request ) {
128
131
this .worldName = DEFAULT_NAME ;
129
132
this .worldAdjectives .clear ();
130
- return createResponse ( OK , "Goodbye, cruel world! Restored default values." );
133
+ return new ExtensionRestResponse ( request , OK , "Goodbye, cruel world! Restored default values." );
131
134
}
132
135
}
0 commit comments