Skip to content

Commit fd49c87

Browse files
committed
Undo AutoClosable hack introduced for JDK6 compatibility
This basically reverts commit f7e0924 (and commit 74c6dd0). Signed-off-by: Sven Strickroth <[email protected]>
1 parent 91c5fdc commit fd49c87

File tree

5 files changed

+28
-189
lines changed

5 files changed

+28
-189
lines changed

src/main/java/org/owasp/html/AutoCloseableHtmlStreamRenderer.java

Lines changed: 0 additions & 92 deletions
This file was deleted.

src/main/java/org/owasp/html/HtmlStreamEventReceiverWrapper.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
11
package org.owasp.html;
22

3-
import java.io.Closeable;
4-
import java.io.IOException;
53
import java.util.List;
64

75
/**
86
* An event receiver that delegates to an underlying receiver and which may
97
* be overridden to do additional work.
108
*/
119
public abstract class HtmlStreamEventReceiverWrapper
12-
implements HtmlStreamEventReceiver,
13-
// Not AutoCloseable for JDK 6 compatibility but will close AutoCloseable
14-
// underlying streams when closed.
15-
Closeable {
10+
implements HtmlStreamEventReceiver, AutoCloseable {
1611

1712
protected final HtmlStreamEventReceiver underlying;
1813

@@ -43,7 +38,9 @@ public void text(String text) {
4338
this.underlying.text(text);
4439
}
4540

46-
public void close() throws IOException {
47-
AutoCloseableHtmlStreamRenderer.closeIfAnyCloseable(underlying);
41+
public void close() throws Exception {
42+
if (underlying instanceof AutoCloseable) {
43+
((AutoCloseable) underlying).close();
44+
}
4845
}
4946
}

src/main/java/org/owasp/html/HtmlStreamRenderer.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ public static HtmlStreamRenderer create(
7474
if (output instanceof Closeable) {
7575
return new CloseableHtmlStreamRenderer(
7676
output, ioExHandler, badHtmlHandler);
77-
} else if (AutoCloseableHtmlStreamRenderer.isAutoCloseable(output)) {
78-
return AutoCloseableHtmlStreamRenderer.createAutoCloseableHtmlStreamRenderer(
77+
} else if (output instanceof AutoCloseable) {
78+
return new AutoCloseableHtmlStreamRenderer(
7979
output, ioExHandler, badHtmlHandler);
8080
} else {
8181
return new HtmlStreamRenderer(output, ioExHandler, badHtmlHandler);
@@ -96,7 +96,7 @@ public static HtmlStreamRenderer create(
9696
return create(output, Handler.PROPAGATE, badHtmlHandler);
9797
}
9898

99-
protected HtmlStreamRenderer(
99+
private HtmlStreamRenderer(
100100
Appendable output, Handler<? super IOException> ioExHandler,
101101
Handler<? super String> badHtmlHandler) {
102102
this.output = output;
@@ -424,6 +424,25 @@ public void close() throws IOException {
424424
}
425425
}
426426

427+
static class AutoCloseableHtmlStreamRenderer extends HtmlStreamRenderer
428+
implements AutoCloseable {
429+
private final AutoCloseable closeable;
430+
431+
@SuppressWarnings("synthetic-access")
432+
AutoCloseableHtmlStreamRenderer(
433+
@WillCloseWhenClosed
434+
Appendable output, Handler<? super IOException> errorHandler,
435+
Handler<? super String> badHtmlHandler) {
436+
super(output, errorHandler, badHtmlHandler);
437+
this.closeable = (AutoCloseable) output;
438+
}
439+
440+
public void close() throws Exception {
441+
if (isDocumentOpen()) { closeDocument(); }
442+
closeable.close();
443+
}
444+
}
445+
427446
private static final long TAG_ENDS = 0L
428447
| (1L << '\t')
429448
| (1L << '\n')

src/test/java/org/owasp/html/AutoCloseableHtmlStreamRendererTest.java

Lines changed: 0 additions & 85 deletions
This file was deleted.

src/test/java/org/owasp/html/PolicyFactoryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public Appendable append(char c) throws IOException {
186186

187187
};
188188

189-
HtmlStreamEventReceiver receiver = new HtmlStreamRenderer(
189+
HtmlStreamEventReceiver receiver = HtmlStreamRenderer.create(
190190
throwingOut, ioHandler, badHtmlHandler);
191191
HtmlSanitizer.Policy policy = factory.apply(
192192
receiver, listener, context);

0 commit comments

Comments
 (0)