1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.xml.secure;
19
20 import java.util.Objects;
21 import java.util.function.Supplier;
22
23 import javax.xml.transform.Source;
24 import javax.xml.transform.Templates;
25 import javax.xml.transform.URIResolver;
26 import javax.xml.transform.sax.TemplatesHandler;
27
28 import org.xml.sax.Attributes;
29 import org.xml.sax.Locator;
30 import org.xml.sax.SAXException;
31
32
33
34
35
36
37
38
39
40
41
42 final class SecureTemplatesHandler implements TemplatesHandler {
43
44 private final TemplatesHandler delegate;
45
46
47
48
49 private final URIResolver factoryUriResolver;
50
51
52
53
54 private final Supplier<Source> emptySource;
55
56
57
58
59 private final boolean overrideDefaultParser;
60
61
62
63
64
65
66
67
68
69
70
71
72 SecureTemplatesHandler(final TemplatesHandler delegate, final URIResolver factoryUriResolver, final Supplier<Source> emptySource,
73 final boolean overrideDefaultParser) {
74 this.delegate = Objects.requireNonNull(delegate, "delegate");
75 this.factoryUriResolver = factoryUriResolver;
76 this.emptySource = emptySource;
77 this.overrideDefaultParser = overrideDefaultParser;
78 }
79
80 @Override
81 public void characters(final char[] ch, final int start, final int length) throws SAXException {
82 delegate.characters(ch, start, length);
83 }
84
85 @Override
86 public void endDocument() throws SAXException {
87 delegate.endDocument();
88 }
89
90 @Override
91 public void endElement(final String uri, final String localName, final String qName) throws SAXException {
92 delegate.endElement(uri, localName, qName);
93 }
94
95 @Override
96 public void endPrefixMapping(final String prefix) throws SAXException {
97 delegate.endPrefixMapping(prefix);
98 }
99
100 @Override
101 public String getSystemId() {
102 return delegate.getSystemId();
103 }
104
105 @Override
106 public Templates getTemplates() {
107
108 final Templates templates = delegate.getTemplates();
109 return templates == null ? null : new SecureTemplates(templates, factoryUriResolver, emptySource, overrideDefaultParser);
110 }
111
112 @Override
113 public void ignorableWhitespace(final char[] ch, final int start, final int length) throws SAXException {
114 delegate.ignorableWhitespace(ch, start, length);
115 }
116
117 @Override
118 public void processingInstruction(final String target, final String data) throws SAXException {
119 delegate.processingInstruction(target, data);
120 }
121
122 @Override
123 public void setDocumentLocator(final Locator locator) {
124 delegate.setDocumentLocator(locator);
125 }
126
127 @Override
128 public void setSystemId(final String systemID) {
129 delegate.setSystemId(systemID);
130 }
131
132 @Override
133 public void skippedEntity(final String name) throws SAXException {
134 delegate.skippedEntity(name);
135 }
136
137
138 @Override
139 public void startDocument() throws SAXException {
140 delegate.startDocument();
141 }
142
143 @Override
144 public void startElement(final String uri, final String localName, final String qName, final Attributes atts) throws SAXException {
145 delegate.startElement(uri, localName, qName, atts);
146 }
147
148 @Override
149 public void startPrefixMapping(final String prefix, final String uri) throws SAXException {
150 delegate.startPrefixMapping(prefix, uri);
151 }
152 }