Skip to content

Commit ccaaa6c

Browse files
committed
Make work with Java 9
Signed-off-by: Sven Strickroth <email@cs-ware.de>
1 parent 032d11b commit ccaaa6c

File tree

7 files changed

+44
-15
lines changed

7 files changed

+44
-15
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.owasp.html;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collection;
5+
import java.util.Collections;
6+
import java.util.HashMap;
7+
import java.util.HashSet;
8+
import java.util.List;
9+
import java.util.Map;
10+
import java.util.Set;
11+
12+
/**
13+
* Internal helper for common Collection creation/copy methods
14+
*/
15+
final class CollectionsHelper {
16+
public static <E> List<E> copyToUnmodifiableList(Collection<? extends E> list) {
17+
final ArrayList<E> newList = new ArrayList<>(list.size());
18+
newList.addAll(list);
19+
return Collections.unmodifiableList(newList);
20+
}
21+
22+
public static <E> Set<E> copyToUnmodifiableSet(Collection<? extends E> set) {
23+
return Collections.unmodifiableSet(new HashSet<E>(set));
24+
}
25+
26+
public static <K, V> Map<K, V> copyToUnmodifiableMap(Map<? extends K, ? extends V> map) {
27+
return Collections.unmodifiableMap(new HashMap<>(map));
28+
}
29+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ public Property(
6969
int bits, Set<String> literals,
7070
Map<String, String> fnKeys) {
7171
this.bits = bits;
72-
this.literals = Set.copyOf(literals);
73-
this.fnKeys = Map.copyOf(fnKeys);
72+
this.literals = CollectionsHelper.copyToUnmodifiableSet(literals);
73+
this.fnKeys = CollectionsHelper.copyToUnmodifiableMap(fnKeys);
7474
}
7575

7676
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ final class ElementAndAttributePolicies {
5454
HtmlTagSkipType htmlTagSkipType) {
5555
this.elementName = elementName;
5656
this.elPolicy = elPolicy;
57-
this.attrPolicies = Map.copyOf(attrPolicies);
57+
this.attrPolicies = CollectionsHelper.copyToUnmodifiableMap(attrPolicies);
5858
this.htmlTagSkipType = htmlTagSkipType;
5959
}
6060

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ class ElementAndAttributePolicyBasedSanitizerPolicy
6363
Map<String, ElementAndAttributePolicies> elAndAttrPolicies,
6464
Set<String> allowedTextContainers) {
6565
this.out = out;
66-
this.elAndAttrPolicies = Map.copyOf(elAndAttrPolicies);
67-
this.allowedTextContainers = Set.copyOf(allowedTextContainers);
66+
this.elAndAttrPolicies = CollectionsHelper.copyToUnmodifiableMap(elAndAttrPolicies);
67+
this.allowedTextContainers = CollectionsHelper.copyToUnmodifiableSet(allowedTextContainers);
6868
}
6969

7070
static final Set<String> SKIPPABLE_ELEMENT_CONTENT

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ public static final class HtmlElementNames {
401401

402402
/** */
403403
public HtmlElementNames(List<String> canonNames) {
404-
this.canonNames = List.copyOf(canonNames);
404+
this.canonNames = CollectionsHelper.copyToUnmodifiableList(canonNames);
405405
}
406406

407407
/** */

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ public PolicyFactory toFactory() {
698698

699699
return new PolicyFactory(
700700
compiled.compiledPolicies, Collections.unmodifiableSet(textContainerSetBuilder),
701-
Map.copyOf(compiled.globalAttrPolicies),
701+
CollectionsHelper.copyToUnmodifiableMap(compiled.globalAttrPolicies),
702702
preprocessor, postprocessor);
703703
}
704704

@@ -740,7 +740,7 @@ private CompiledState compilePolicies() {
740740
Map<String, AttributePolicy> globalAttrPolicies
741741
= new LinkedHashMap<>(this.globalAttrPolicies);
742742
@SuppressWarnings("hiding")
743-
Set<String> allowedProtocols = Set.copyOf(this.allowedProtocols);
743+
Set<String> allowedProtocols = CollectionsHelper.copyToUnmodifiableSet(this.allowedProtocols);
744744

745745
// Implement requireRelsOnLinks & skip...
746746
{
@@ -874,7 +874,7 @@ public final class AttributeBuilder {
874874
private AttributePolicy policy = AttributePolicy.IDENTITY_ATTRIBUTE_POLICY;
875875

876876
AttributeBuilder(List<? extends String> attributeNames) {
877-
this.attributeNames = List.copyOf(attributeNames);
877+
this.attributeNames = CollectionsHelper.copyToUnmodifiableList(attributeNames);
878878
}
879879

880880
/**
@@ -939,7 +939,7 @@ public AttributeBuilder matching(
939939
*/
940940
public AttributeBuilder matching(
941941
final boolean ignoreCase, Set<? extends String> allowedValues) {
942-
final Set<String> allowed = Set.copyOf(allowedValues);
942+
final Set<String> allowed = CollectionsHelper.copyToUnmodifiableSet(allowedValues);
943943
return matching(new AttributePolicy() {
944944
public @Nullable String apply(
945945
String elementName, String attributeName, String uncanonValue) {
@@ -1007,13 +1007,13 @@ static RelsOnLinksPolicy create(
10071007
RelsOnLinksPolicy(
10081008
Set<? extends String> extra,
10091009
Set<? extends String> skip) {
1010-
this.extra = Set.copyOf(extra);
1011-
this.skip = Set.copyOf(skip);
1010+
this.extra = CollectionsHelper.copyToUnmodifiableSet(extra);
1011+
this.skip = CollectionsHelper.copyToUnmodifiableSet(skip);
10121012
Set<String> targetOnly = new HashSet<>();
10131013
targetOnly.addAll(DEFAULT_RELS_ON_TARGETTED_LINKS);
10141014
targetOnly.removeAll(extra);
10151015
targetOnly.removeAll(skip);
1016-
this.whenTargetPresent = List.copyOf(targetOnly);
1016+
this.whenTargetPresent = CollectionsHelper.copyToUnmodifiableList(targetOnly);
10171017
}
10181018

10191019
private static int indexOfAttributeValue(

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828

2929
package org.owasp.html;
3030

31-
import java.io.File;
3231
import java.io.StringReader;
3332
import java.nio.charset.StandardCharsets;
3433
import java.nio.file.Files;
34+
import java.nio.file.Paths;
3535
import java.util.List;
3636
import java.util.ListIterator;
3737

@@ -58,7 +58,7 @@ public class Benchmark {
5858
* specifies a benchmark to run and unspecified ones are not run.
5959
*/
6060
public static void main(String[] args) throws Exception {
61-
String html = new String(Files.readAllBytes(new File(args[0]).toPath()), StandardCharsets.UTF_8);
61+
String html = new String(Files.readAllBytes(Paths.get(args[0])), StandardCharsets.UTF_8);
6262

6363
boolean timeLibhtmlparser = true;
6464
boolean timeSanitize = true;

0 commit comments

Comments
 (0)