Skip to content

Commit 59107e8

Browse files
committed
#306: add support for jakarta.servlet-api request objects into JsonRpcServer
Both javax and jakarta objects/APIs have similar method signatures and differ only with types. Two new classes were added to adapt to the common interface. Not very last version of jakarta.servlet-api v5.0.0 was added, because project JDK target is Java 8. jakarta.servlet-api v5.0.0 comes from the Jakarta EE 9, which is still compatible with JDK 8. Signed-off-by: cyb3r4nt <[email protected]>
1 parent 08fc462 commit 59107e8

File tree

2 files changed

+83
-2
lines changed

2 files changed

+83
-2
lines changed

build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ dependencies {
9696

9797
servletSupportImplementation 'javax.portlet:portlet-api:3.0.1'
9898
servletSupportImplementation 'javax.servlet:javax.servlet-api:4.0.1'
99+
// TODO: Jakarta EE 9 and jakarta.servlet-api 5.x are still compatible with Java SE 8,
100+
// update jakarta.servlet-api to version 6+ when JDK baseline is increased to 11+
101+
servletSupportImplementation 'jakarta.servlet:jakarta.servlet-api:5.0.0'
99102

100103
implementation "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}"
101104
implementation "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}"

src/main/java/com/googlecode/jsonrpc4j/JsonRpcServer.java

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,27 @@ private static InputStream createInputStream(ResourceRequest request) throws IOE
114114
* @throws IOException on error
115115
*/
116116
public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException {
117-
handleCommon(new JavaxHttpServletRequest(request), new JavaxHttpServletResponse(response));
117+
handleCommon(
118+
new JavaxHttpServletRequest(request),
119+
new JavaxHttpServletResponse(response)
120+
);
121+
}
122+
123+
/**
124+
* Handles a servlet request.
125+
*
126+
* @param request the {@link jakarta.servlet.http.HttpServletRequest}
127+
* @param response the {@link jakarta.servlet.http.HttpServletResponse}
128+
* @throws IOException on error
129+
*/
130+
public void handle(
131+
jakarta.servlet.http.HttpServletRequest request,
132+
jakarta.servlet.http.HttpServletResponse response
133+
) throws IOException {
134+
handleCommon(
135+
new JakartaHttpServletRequest(request),
136+
new JakartaHttpServletResponse(response)
137+
);
118138
}
119139

120140
private void handleCommon(CommonHttpServletRequest request, CommonHttpServletResponse response) throws IOException {
@@ -193,7 +213,36 @@ private JavaxHttpServletRequest(HttpServletRequest request) {
193213
}
194214

195215
@Override
196-
public HttpServletRequest unwrap() {
216+
public Object unwrap() {
217+
return this.request;
218+
}
219+
220+
@Override
221+
public InputStream getInputStream() throws IOException {
222+
return this.request.getInputStream();
223+
}
224+
225+
@Override
226+
public String getMethod() {
227+
return this.request.getMethod();
228+
}
229+
230+
@Override
231+
public String getParameter(String name) {
232+
return this.request.getParameter(name);
233+
}
234+
}
235+
236+
private static class JakartaHttpServletRequest implements CommonHttpServletRequest {
237+
238+
private final jakarta.servlet.http.HttpServletRequest request;
239+
240+
private JakartaHttpServletRequest(jakarta.servlet.http.HttpServletRequest request) {
241+
this.request = request;
242+
}
243+
244+
@Override
245+
public Object unwrap() {
197246
return this.request;
198247
}
199248

@@ -248,4 +297,33 @@ public OutputStream getOutputStream() throws IOException {
248297
return this.response.getOutputStream();
249298
}
250299
}
300+
301+
private static class JakartaHttpServletResponse implements CommonHttpServletResponse {
302+
303+
private final jakarta.servlet.http.HttpServletResponse response;
304+
305+
private JakartaHttpServletResponse(jakarta.servlet.http.HttpServletResponse response) {
306+
this.response = response;
307+
}
308+
309+
@Override
310+
public void setContentType(String type) {
311+
this.response.setContentType(type);
312+
}
313+
314+
@Override
315+
public void setStatus(int sc) {
316+
this.response.setStatus(sc);
317+
}
318+
319+
@Override
320+
public void setContentLength(int len) {
321+
this.response.setContentLength(len);
322+
}
323+
324+
@Override
325+
public OutputStream getOutputStream() throws IOException {
326+
return this.response.getOutputStream();
327+
}
328+
}
251329
}

0 commit comments

Comments
 (0)