Skip to content

Undo JDK6 hack #311

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 0 additions & 92 deletions src/main/java/org/owasp/html/AutoCloseableHtmlStreamRenderer.java

This file was deleted.

3 changes: 1 addition & 2 deletions src/main/java/org/owasp/html/HtmlElementTables.java
Original file line number Diff line number Diff line change
Expand Up @@ -722,8 +722,7 @@ public enum TextContentModelBit {
static final Comparator<int[]> COMPARE_BY_ZEROTH =
new Comparator<int[]>() {
public int compare(int[] a, int[] b) {
// Integer.compare is @since JDK 7
return a[0] - b[0];
return Integer.compare(a[0], b[0]);
}
};

Expand Down
13 changes: 5 additions & 8 deletions src/main/java/org/owasp/html/HtmlStreamEventReceiverWrapper.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
package org.owasp.html;

import java.io.Closeable;
import java.io.IOException;
import java.util.List;

/**
* An event receiver that delegates to an underlying receiver and which may
* be overridden to do additional work.
*/
public abstract class HtmlStreamEventReceiverWrapper
implements HtmlStreamEventReceiver,
// Not AutoCloseable for JDK 6 compatibility but will close AutoCloseable
// underlying streams when closed.
Closeable {
implements HtmlStreamEventReceiver, AutoCloseable {

protected final HtmlStreamEventReceiver underlying;

Expand Down Expand Up @@ -43,7 +38,9 @@ public void text(String text) {
this.underlying.text(text);
}

public void close() throws IOException {
AutoCloseableHtmlStreamRenderer.closeIfAnyCloseable(underlying);
public void close() throws Exception {
if (underlying instanceof AutoCloseable) {
((AutoCloseable) underlying).close();
}
}
}
25 changes: 22 additions & 3 deletions src/main/java/org/owasp/html/HtmlStreamRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ public static HtmlStreamRenderer create(
if (output instanceof Closeable) {
return new CloseableHtmlStreamRenderer(
output, ioExHandler, badHtmlHandler);
} else if (AutoCloseableHtmlStreamRenderer.isAutoCloseable(output)) {
return AutoCloseableHtmlStreamRenderer.createAutoCloseableHtmlStreamRenderer(
} else if (output instanceof AutoCloseable) {
return new AutoCloseableHtmlStreamRenderer(
output, ioExHandler, badHtmlHandler);
} else {
return new HtmlStreamRenderer(output, ioExHandler, badHtmlHandler);
Expand All @@ -96,7 +96,7 @@ public static HtmlStreamRenderer create(
return create(output, Handler.PROPAGATE, badHtmlHandler);
}

protected HtmlStreamRenderer(
private HtmlStreamRenderer(
Appendable output, Handler<? super IOException> ioExHandler,
Handler<? super String> badHtmlHandler) {
this.output = output;
Expand Down Expand Up @@ -424,6 +424,25 @@ public void close() throws IOException {
}
}

static class AutoCloseableHtmlStreamRenderer extends HtmlStreamRenderer
implements AutoCloseable {
private final AutoCloseable closeable;

@SuppressWarnings("synthetic-access")
AutoCloseableHtmlStreamRenderer(
@WillCloseWhenClosed
Appendable output, Handler<? super IOException> errorHandler,
Handler<? super String> badHtmlHandler) {
super(output, errorHandler, badHtmlHandler);
this.closeable = (AutoCloseable) output;
}

public void close() throws Exception {
if (isDocumentOpen()) { closeDocument(); }
closeable.close();
}
}

private static final long TAG_ENDS = 0L
| (1L << '\t')
| (1L << '\n')
Expand Down

This file was deleted.

2 changes: 1 addition & 1 deletion src/test/java/org/owasp/html/PolicyFactoryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ public Appendable append(char c) throws IOException {

};

HtmlStreamEventReceiver receiver = new HtmlStreamRenderer(
HtmlStreamEventReceiver receiver = HtmlStreamRenderer.create(
throwingOut, ioHandler, badHtmlHandler);
HtmlSanitizer.Policy policy = factory.apply(
receiver, listener, context);
Expand Down