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.io.IOException;
21 import java.util.Objects;
22
23 import org.xml.sax.ContentHandler;
24 import org.xml.sax.DTDHandler;
25 import org.xml.sax.EntityResolver;
26 import org.xml.sax.ErrorHandler;
27 import org.xml.sax.InputSource;
28 import org.xml.sax.SAXException;
29 import org.xml.sax.SAXNotRecognizedException;
30 import org.xml.sax.SAXNotSupportedException;
31 import org.xml.sax.XMLReader;
32
33
34
35
36
37
38
39
40
41
42
43 class SecureXMLReader implements XMLReader {
44
45 private final XMLReader delegate;
46
47 private final FallbackIgnoreEntityResolver2 floor;
48
49
50
51
52
53
54
55 SecureXMLReader(final XMLReader delegate) {
56 this.delegate = Objects.requireNonNull(delegate, "delegate");
57 this.floor = new FallbackIgnoreEntityResolver2(null);
58 delegate.setEntityResolver(floor);
59 }
60
61 @Override
62 public ContentHandler getContentHandler() {
63 return delegate.getContentHandler();
64 }
65
66
67
68
69
70
71 XMLReader getDelegate() {
72 return delegate;
73 }
74
75 @Override
76 public DTDHandler getDTDHandler() {
77 return delegate.getDTDHandler();
78 }
79
80 @Override
81 public EntityResolver getEntityResolver() {
82 return floor.getDelegate();
83 }
84
85 @Override
86 public ErrorHandler getErrorHandler() {
87 return delegate.getErrorHandler();
88 }
89
90 @Override
91 public boolean getFeature(final String name) throws SAXNotRecognizedException, SAXNotSupportedException {
92 return delegate.getFeature(name);
93 }
94
95 @Override
96 public Object getProperty(final String name) throws SAXNotRecognizedException, SAXNotSupportedException {
97 return delegate.getProperty(name);
98 }
99
100 @Override
101 public void parse(final InputSource input) throws IOException, SAXException {
102 delegate.parse(input);
103 }
104
105 @Override
106 public void parse(final String systemId) throws IOException, SAXException {
107 delegate.parse(systemId);
108 }
109
110
111
112
113 void restoreFloor() {
114 floor.setDelegate(null);
115 delegate.setEntityResolver(floor);
116 }
117
118 @Override
119 public void setContentHandler(final ContentHandler handler) {
120 delegate.setContentHandler(handler);
121 }
122
123 @Override
124 public void setDTDHandler(final DTDHandler handler) {
125 delegate.setDTDHandler(handler);
126 }
127
128 @Override
129 public void setEntityResolver(final EntityResolver resolver) {
130 floor.setDelegate(resolver);
131 }
132
133 @Override
134 public void setErrorHandler(final ErrorHandler handler) {
135 delegate.setErrorHandler(handler);
136 }
137
138 @Override
139 public void setFeature(final String name, final boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
140 delegate.setFeature(name, value);
141 }
142
143 @Override
144 public void setProperty(final String name, final Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
145 delegate.setProperty(name, value);
146 }
147
148 }