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 final class SecureTemplatesHandler implements TemplatesHandler {
41
42 private final TemplatesHandler delegate;
43
44
45
46
47 private final URIResolver uriResolver;
48
49
50
51
52 private final Supplier<Source> emptySource;
53
54
55
56
57 private final boolean overrideDefaultParser;
58
59
60
61
62
63
64
65
66
67
68 SecureTemplatesHandler(final TemplatesHandler delegate, final URIResolver uriResolver, final Supplier<Source> emptySource,
69 final boolean overrideDefaultParser) {
70 this.delegate = Objects.requireNonNull(delegate, "delegate");
71 this.uriResolver = uriResolver;
72 this.emptySource = emptySource;
73 this.overrideDefaultParser = overrideDefaultParser;
74 }
75
76 @Override
77 public void characters(final char[] ch, final int start, final int length) throws SAXException {
78 delegate.characters(ch, start, length);
79 }
80
81 @Override
82 public void endDocument() throws SAXException {
83 delegate.endDocument();
84 }
85
86 @Override
87 public void endElement(final String uri, final String localName, final String qName) throws SAXException {
88 delegate.endElement(uri, localName, qName);
89 }
90
91 @Override
92 public void endPrefixMapping(final String prefix) throws SAXException {
93 delegate.endPrefixMapping(prefix);
94 }
95
96 @Override
97 public String getSystemId() {
98 return delegate.getSystemId();
99 }
100
101 @Override
102 public Templates getTemplates() {
103
104 final Templates templates = delegate.getTemplates();
105 return templates == null ? null : new SecureTemplates(templates, uriResolver, emptySource, overrideDefaultParser);
106 }
107
108 @Override
109 public void ignorableWhitespace(final char[] ch, final int start, final int length) throws SAXException {
110 delegate.ignorableWhitespace(ch, start, length);
111 }
112
113 @Override
114 public void processingInstruction(final String target, final String data) throws SAXException {
115 delegate.processingInstruction(target, data);
116 }
117
118 @Override
119 public void setDocumentLocator(final Locator locator) {
120 delegate.setDocumentLocator(locator);
121 }
122
123 @Override
124 public void setSystemId(final String systemID) {
125 delegate.setSystemId(systemID);
126 }
127
128 @Override
129 public void skippedEntity(final String name) throws SAXException {
130 delegate.skippedEntity(name);
131 }
132
133
134 @Override
135 public void startDocument() throws SAXException {
136 delegate.startDocument();
137 }
138
139 @Override
140 public void startElement(final String uri, final String localName, final String qName, final Attributes atts) throws SAXException {
141 delegate.startElement(uri, localName, qName, atts);
142 }
143
144 @Override
145 public void startPrefixMapping(final String prefix, final String uri) throws SAXException {
146 delegate.startPrefixMapping(prefix, uri);
147 }
148 }