Skip to content

Commit 527adb3

Browse files
committed
Add basic support for servlet 4.0
1 parent d48672d commit 527adb3

File tree

5 files changed

+93
-19
lines changed

5 files changed

+93
-19
lines changed

pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<jruby.maven.plugins.version>3.0.5</jruby.maven.plugins.version>
2424
<gem.home>${project.build.directory}/rubygems</gem.home>
2525
<slf4j.version>2.0.17</slf4j.version>
26-
<spring.version>4.3.30.RELEASE</spring.version>
26+
<spring.version>5.3.39</spring.version>
2727
</properties>
2828

2929
<issueManagement>
@@ -99,9 +99,9 @@
9999
<scope>provided</scope>
100100
</dependency>
101101
<dependency>
102-
<groupId>javax.servlet</groupId>
103-
<artifactId>javax.servlet-api</artifactId>
104-
<version>3.0.1</version>
102+
<groupId>jakarta.servlet</groupId>
103+
<artifactId>jakarta.servlet-api</artifactId>
104+
<version>4.0.4</version>
105105
<scope>provided</scope>
106106
</dependency>
107107
<dependency>

src/main/java/org/jruby/rack/servlet/DefaultServletRackContext.java

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -270,57 +270,97 @@ public void declareRoles(String... roleNames) {
270270
context.declareRoles(roleNames);
271271
}
272272

273+
@Override
274+
public String getVirtualServerName() {
275+
return context.getVirtualServerName();
276+
}
277+
278+
@Override
279+
public int getSessionTimeout() {
280+
return context.getSessionTimeout();
281+
}
282+
283+
@Override
284+
public void setSessionTimeout(int sessionTimeout) {
285+
context.setSessionTimeout(sessionTimeout);
286+
}
287+
288+
@Override
289+
public String getRequestCharacterEncoding() {
290+
return context.getRequestCharacterEncoding();
291+
}
292+
293+
@Override
294+
public void setRequestCharacterEncoding(String encoding) {
295+
context.setRequestCharacterEncoding(encoding);
296+
}
297+
298+
@Override
299+
public String getResponseCharacterEncoding() {
300+
return context.getResponseCharacterEncoding();
301+
}
302+
303+
@Override
304+
public void setResponseCharacterEncoding(String encoding) {
305+
context.setResponseCharacterEncoding(encoding);
306+
}
307+
273308
@Override
274309
public <T extends Servlet> T createServlet(Class<T> type) throws ServletException {
275310
return context.createServlet(type);
276311
}
277312

278-
@Override // 3.0 in method signature
313+
@Override
279314
public ServletRegistration.Dynamic addServlet(String servletName, String className) throws IllegalArgumentException, IllegalStateException {
280315
return context.addServlet(servletName, className);
281316
}
282317

283-
@Override // 3.0 in method signature
318+
@Override
284319
public ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet) throws IllegalArgumentException, IllegalStateException {
285320
return context.addServlet(servletName, servlet);
286321
}
287322

288-
@Override // 3.0 in method signature
323+
@Override
289324
public ServletRegistration.Dynamic addServlet(String servletName, Class<? extends Servlet> servletClass) throws IllegalArgumentException, IllegalStateException {
290325
return context.addServlet(servletName, servletClass);
291326
}
292327

293-
@Override // 3.0 in method signature
328+
@Override
329+
public ServletRegistration.Dynamic addJspFile(String servletName, String jspFile) {
330+
return context.addJspFile(servletName, jspFile);
331+
}
332+
333+
@Override
294334
public ServletRegistration getServletRegistration(String servletName) {
295335
return context.getServletRegistration(servletName);
296336
}
297337

298-
@Override // 3.0 in method signature
338+
@Override
299339
public Map<String, ? extends ServletRegistration> getServletRegistrations() {
300340
return context.getServletRegistrations();
301341
}
302342

303-
@Override // 3.0 in method signature
343+
@Override
304344
public <T extends Filter> T createFilter(Class<T> type) throws ServletException {
305345
return context.createFilter(type);
306346
}
307347

308-
@Override // 3.0 in method signature
348+
@Override
309349
public FilterRegistration.Dynamic addFilter(String filterName, String className) throws IllegalArgumentException, IllegalStateException {
310350
return context.addFilter(filterName, className);
311351
}
312352

313-
@Override // 3.0 in method signature
353+
@Override
314354
public FilterRegistration.Dynamic addFilter(String filterName, Filter filter) throws IllegalArgumentException, IllegalStateException {
315355
return context.addFilter(filterName, filter);
316356
}
317357

318-
@Override // 3.0 in method signature
358+
@Override
319359
public FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) throws IllegalArgumentException, IllegalStateException {
320360
return context.addFilter(filterName, filterClass);
321361
}
322362

323-
@Override // 3.0 in method signature
363+
@Override
324364
public FilterRegistration getFilterRegistration(String filterName) {
325365
return context.getFilterRegistration(filterName);
326366
}
@@ -350,7 +390,7 @@ public <T extends EventListener> T createListener(Class<T> listenerClass) throws
350390
return context.createListener(listenerClass);
351391
}
352392

353-
@Override // 3.0 in method signature
393+
@Override
354394
public SessionCookieConfig getSessionCookieConfig() {
355395
return context.getSessionCookieConfig();
356396
}
@@ -370,7 +410,7 @@ public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
370410
return context.getEffectiveSessionTrackingModes();
371411
}
372412

373-
@Override // 3.0 in method signature
413+
@Override
374414
public JspConfigDescriptor getJspConfigDescriptor() {
375415
return context.getJspConfigDescriptor();
376416
}

src/main/java/org/jruby/rack/servlet/ResponseCapture.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Set;
2020

2121
import javax.servlet.ServletOutputStream;
22+
import javax.servlet.WriteListener;
2223
import javax.servlet.http.HttpServletRequest;
2324
import javax.servlet.http.HttpServletResponse;
2425
import javax.servlet.http.HttpServletResponseWrapper;
@@ -166,7 +167,16 @@ public ServletOutputStream getOutputStream() throws IOException {
166167
// backwards compatibility with isError() :
167168
return new ServletOutputStream() {
168169
@Override
169-
public void write(int b) throws IOException {
170+
public boolean isReady() {
171+
return false;
172+
}
173+
174+
@Override
175+
public void setWriteListener(WriteListener writeListener) {
176+
}
177+
178+
@Override
179+
public void write(int b) {
170180
// swallow output, because we're going to discard it
171181
}
172182
};

src/main/java/org/jruby/rack/servlet/RewindableInputStream.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.io.RandomAccessFile;
1414
import java.nio.ByteBuffer;
1515

16+
import javax.servlet.ReadListener;
1617
import javax.servlet.ServletInputStream;
1718

1819
/**
@@ -401,5 +402,18 @@ public int getCurrentBufferSize() {
401402
public int getMaximumBufferSize() {
402403
return bufferMax;
403404
}
404-
405+
406+
@Override
407+
public boolean isFinished() {
408+
return buffer != null;
409+
}
410+
411+
@Override
412+
public boolean isReady() {
413+
return buffer != null;
414+
}
415+
416+
@Override // 4.0 in method signature
417+
public void setReadListener(ReadListener readListener) {
418+
}
405419
}

src/main/java/org/jruby/rack/servlet/ServletRackIncludedResponse.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import javax.servlet.ServletOutputStream;
1818
import javax.servlet.ServletResponse;
19+
import javax.servlet.WriteListener;
1920
import javax.servlet.http.HttpServletResponse;
2021
import javax.servlet.http.HttpServletResponseWrapper;
2122

@@ -158,7 +159,7 @@ private void initializeOutputStream() {
158159
*/
159160
private static class ByteArrayServletOutputStream extends ServletOutputStream {
160161

161-
private final static String LINE_SEPARATOR = System.getProperty("line.separator");
162+
private final static String LINE_SEPARATOR = System.lineSeparator();
162163
private final DataOutputStream dataOutputStream;
163164
private final String charSet;
164165

@@ -226,6 +227,15 @@ public void println(double d) throws IOException {
226227
println();
227228
}
228229

230+
@Override
231+
public boolean isReady() {
232+
return false;
233+
}
234+
235+
@Override // 4.0 in method signature
236+
public void setWriteListener(WriteListener writeListener) {
237+
}
238+
229239
@Override
230240
public void println(float f) throws IOException {
231241
print(f);

0 commit comments

Comments
 (0)