Skip to content

Commit 0939ae1

Browse files
committed
Follow-up to [927d280]: make registerSystemIdFilename() more friendly to modules.
1 parent ec24f77 commit 0939ae1

File tree

1 file changed

+138
-95
lines changed

1 file changed

+138
-95
lines changed

src/io/sf/carte/doc/xml/dtd/DefaultEntityResolver.java

Lines changed: 138 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -97,73 +97,136 @@ public DefaultEntityResolver() {
9797
*/
9898
public DefaultEntityResolver(boolean enableWhitelist) {
9999
super();
100-
systemIdToFilename.put("https://www.w3.org/TR/html5/entities.dtd", "w3c/xhtml5.ent");
101-
systemIdToFilename.put("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd", "w3c/xhtml1-strict.dtd");
100+
systemIdToFilename.put("https://www.w3.org/TR/html5/entities.dtd",
101+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml5.ent");
102+
systemIdToFilename.put("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd",
103+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml1-strict.dtd");
102104
systemIdToFilename.put("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd",
103-
"w3c/xhtml1-transitional.dtd");
104-
systemIdToFilename.put("http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd", "w3c/xhtml11.dtd");
105-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml11.dtd", "w3c/xhtml11.dtd");
106-
systemIdToFilename.put("http://www.w3.org/TR/xhtml11/DTD/xhtml-lat1.ent", "w3c/xhtml-lat1.ent");
107-
systemIdToFilename.put("http://www.w3.org/TR/xhtml11/DTD/xhtml-symbol.ent", "w3c/xhtml-symbol.ent");
108-
systemIdToFilename.put("http://www.w3.org/TR/xhtml11/DTD/xhtml-special.ent", "w3c/xhtml-special.ent");
105+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml1-transitional.dtd");
106+
systemIdToFilename.put("http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd",
107+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml11.dtd");
108+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml11.dtd",
109+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml11.dtd");
110+
systemIdToFilename.put("http://www.w3.org/TR/xhtml11/DTD/xhtml-lat1.ent",
111+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-lat1.ent");
112+
systemIdToFilename.put("http://www.w3.org/TR/xhtml11/DTD/xhtml-symbol.ent",
113+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-symbol.ent");
114+
systemIdToFilename.put("http://www.w3.org/TR/xhtml11/DTD/xhtml-special.ent",
115+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-special.ent");
109116
// XHTML 1.1 modules
110-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inlstyle-1.mod", "w3c/xhtml-inlstyle-1.mod");
111-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml11-model-1.mod", "w3c/xhtml-11-model-1.mod");
112-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-datatypes-1.mod", "w3c/xhtml-datatypes-1.mod");
113-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-framework-1.mod", "w3c/xhtml-framework-1.mod");
114-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-text-1.mod", "w3c/xhtml-text-1.mod");
115-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-hypertext-1.mod", "w3c/xhtml-hypertext-1.mod");
116-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-list-1.mod", "w3c/xhtml-list-1.mod");
117-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-edit-1.mod", "w3c/xhtml-edit-1.mod");
118-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-bdo-1.mod", "w3c/xhtml-bdo-1.mod");
119-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-ruby-1.mod", "w3c/xhtml-ruby-1.mod");
120-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-pres-1.mod", "w3c/xhtml-pres-1.mod");
121-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-link-1.mod", "w3c/xhtml-link-1.mod");
122-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-meta-1.mod", "w3c/xhtml-meta-1.mod");
123-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-base-1.mod", "w3c/xhtml-base-1.mod");
124-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-script-1.mod", "w3c/xhtml-script-1.mod");
125-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-style-1.mod", "w3c/xhtml-style-1.mod");
126-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-image-1.mod", "w3c/xhtml-image-1.mod");
127-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-csismap-1.mod", "w3c/xhtml-csismap-1.mod");
128-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-ssismap-1.mod", "w3c/xhtml-ssismap-1.mod");
129-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-param-1.mod", "w3c/xhtml-param-1.mod");
130-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-object-1.mod", "w3c/xhtml-object-1.mod");
131-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-table-1.mod", "w3c/xhtml-table-1.mod");
132-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-form-1.mod", "w3c/xhtml-form-1.mod");
133-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-legacy-1.mod", "w3c/xhtml-legacy-1.mod");
134-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-struct-1.mod", "w3c/xhtml-struct-1.mod");
117+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inlstyle-1.mod",
118+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-inlstyle-1.mod");
119+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml11-model-1.mod",
120+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-11-model-1.mod");
121+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-datatypes-1.mod",
122+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-datatypes-1.mod");
123+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-framework-1.mod",
124+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-framework-1.mod");
125+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-text-1.mod",
126+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-text-1.mod");
127+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-hypertext-1.mod",
128+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-hypertext-1.mod");
129+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-list-1.mod",
130+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-list-1.mod");
131+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-edit-1.mod",
132+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-edit-1.mod");
133+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-bdo-1.mod",
134+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-bdo-1.mod");
135+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-ruby-1.mod",
136+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-ruby-1.mod");
137+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-pres-1.mod",
138+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-pres-1.mod");
139+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-link-1.mod",
140+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-link-1.mod");
141+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-meta-1.mod",
142+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-meta-1.mod");
143+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-base-1.mod",
144+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-base-1.mod");
145+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-script-1.mod",
146+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-script-1.mod");
147+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-style-1.mod",
148+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-style-1.mod");
149+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-image-1.mod",
150+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-image-1.mod");
151+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-csismap-1.mod",
152+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-csismap-1.mod");
153+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-ssismap-1.mod",
154+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-ssismap-1.mod");
155+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-param-1.mod",
156+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-param-1.mod");
157+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-object-1.mod",
158+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-object-1.mod");
159+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-table-1.mod",
160+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-table-1.mod");
161+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-form-1.mod",
162+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-form-1.mod");
163+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-legacy-1.mod",
164+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-legacy-1.mod");
165+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-struct-1.mod",
166+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-struct-1.mod");
135167
// Other common DTDs
136-
systemIdToFilename.put("http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd", "w3c/xhtml1-frameset.dtd");
137-
systemIdToFilename.put("http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd", "w3c/xhtml-basic11.dtd");
138-
systemIdToFilename.put("http://www.w3.org/TR/html4/strict.dtd", "w3c/html4-strict.dtd");
139-
systemIdToFilename.put("http://www.w3.org/TR/html4/loose.dtd", "w3c/html4-loose.dtd");
140-
systemIdToFilename.put("http://www.w3.org/TR/html4/frameset.dtd", "w3c/html4-frameset.dtd");
141-
systemIdToFilename.put("http://www.w3.org/Math/DTD/mathml2/mathml2.dtd", "w3c/mathml2.dtd");
142-
systemIdToFilename.put("http://www.w3.org/Math/DTD/mathml1/mathml.dtd", "w3c/mathml.dtd");
143-
systemIdToFilename.put("http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd", "w3c/xhtml-math-svg.dtd");
144-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inlstruct-1.mod", "w3c/xhtml-inlstruct-1.dtd");
145-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inlphras-1.mod", "w3c/xhtml-inlphras-1.dtd");
146-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-blkstruct-1.mod", "w3c/xhtml-blkstruct-1.mod");
147-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-blkphras-1.mod", "w3c/xhtml-blkphras-1.mod");
148-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-applet-1.mod", "w3c/xhtml-applet-1.dtd");
149-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-blkpres-1.mod", "w3c/xhtml-blkpres-1.mod");
150-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-basic-form-1.mod", "w3c/xhtml-basic-form-1.mod");
151-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-basic-table-1.mod", "w3c/xhtml-basic-table-1.mod");
152-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-frames-1.mod", "w3c/xhtml-frames-1.mod");
153-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-target-1.mod", "w3c/xhtml-target-1.mod");
154-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-iframe-1.mod", "w3c/xhtml-iframe-1.mod");
155-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-events-1.mod", "w3c/xhtml-events-1.mod");
156-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-nameident-1.mod", "w3c/xhtml-nameident-1.mod");
157-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-legacy-redecl-1.mod", "w3c/xhtml-legacy-redecl-1.mod");
158-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inlpres-1.mod", "w3c/xhtml-inlpres-1.mod");
159-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-arch-1.mod", "w3c/xhtml-arch-1.mod");
160-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-notations-1.mod", "w3c/xhtml-notations-1.mod");
161-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-qname-1.mod", "w3c/xhtml-qname-1.mod");
162-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-attribs-1.mod", "w3c/xhtml-attribs-1.mod");
163-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-charent-1.mod", "w3c/xhtml-charent-1.mod");
164-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-basic11-model-1.mod", "w3c/xhtml-basic11-model-1.mod");
165-
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inputmode-1.mod", "w3c/xhtml-inputmode-1.mod");
166-
systemIdToFilename.put("http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd", "w3c/svg11.dtd");
168+
systemIdToFilename.put("http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd",
169+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml1-frameset.dtd");
170+
systemIdToFilename.put("http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd",
171+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-basic11.dtd");
172+
systemIdToFilename.put("http://www.w3.org/TR/html4/strict.dtd",
173+
"/io/sf/carte/doc/xml/dtd/w3c/html4-strict.dtd");
174+
systemIdToFilename.put("http://www.w3.org/TR/html4/loose.dtd",
175+
"/io/sf/carte/doc/xml/dtd/w3c/html4-loose.dtd");
176+
systemIdToFilename.put("http://www.w3.org/TR/html4/frameset.dtd",
177+
"/io/sf/carte/doc/xml/dtd/w3c/html4-frameset.dtd");
178+
systemIdToFilename.put("http://www.w3.org/Math/DTD/mathml2/mathml2.dtd",
179+
"/io/sf/carte/doc/xml/dtd/w3c/mathml2.dtd");
180+
systemIdToFilename.put("http://www.w3.org/Math/DTD/mathml1/mathml.dtd",
181+
"/io/sf/carte/doc/xml/dtd/w3c/mathml.dtd");
182+
systemIdToFilename.put("http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd",
183+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-math-svg.dtd");
184+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inlstruct-1.mod",
185+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-inlstruct-1.dtd");
186+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inlphras-1.mod",
187+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-inlphras-1.dtd");
188+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-blkstruct-1.mod",
189+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-blkstruct-1.mod");
190+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-blkphras-1.mod",
191+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-blkphras-1.mod");
192+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-applet-1.mod",
193+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-applet-1.dtd");
194+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-blkpres-1.mod",
195+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-blkpres-1.mod");
196+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-basic-form-1.mod",
197+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-basic-form-1.mod");
198+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-basic-table-1.mod",
199+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-basic-table-1.mod");
200+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-frames-1.mod",
201+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-frames-1.mod");
202+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-target-1.mod",
203+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-target-1.mod");
204+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-iframe-1.mod",
205+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-iframe-1.mod");
206+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-events-1.mod",
207+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-events-1.mod");
208+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-nameident-1.mod",
209+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-nameident-1.mod");
210+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-legacy-redecl-1.mod",
211+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-legacy-redecl-1.mod");
212+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inlpres-1.mod",
213+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-inlpres-1.mod");
214+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-arch-1.mod",
215+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-arch-1.mod");
216+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-notations-1.mod",
217+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-notations-1.mod");
218+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-qname-1.mod",
219+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-qname-1.mod");
220+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-attribs-1.mod",
221+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-attribs-1.mod");
222+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-charent-1.mod",
223+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-charent-1.mod");
224+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-basic11-model-1.mod",
225+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-basic11-model-1.mod");
226+
systemIdToFilename.put("http://www.w3.org/MarkUp/DTD/xhtml-inputmode-1.mod",
227+
"/io/sf/carte/doc/xml/dtd/w3c/xhtml-inputmode-1.mod");
228+
systemIdToFilename.put("http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd",
229+
"/io/sf/carte/doc/xml/dtd/w3c/svg11.dtd");
167230
//
168231
systemIdToPublicId.put("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd", "-//W3C//DTD XHTML 1.0 Strict//EN");
169232
systemIdToPublicId.put("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd",
@@ -221,18 +284,18 @@ public InputSource getExternalSubset(String name, String baseURI) throws SAXExce
221284
* Register an internal classpath filename to retrieve a DTD {@code SystemId}.
222285
*
223286
* @param systemId the {@code SystemId}.
224-
* @param filename the internal filename.
287+
* @param filename the internal filename. Must point to a resource with
288+
* {@code UTF-8} encoding.
225289
* @return {@code true} if the new {@code SystemId} was successfully registered,
226290
* {@code false} if it was already registered.
227291
* @throws IllegalArgumentException if the {@code filename} is considered
228-
* invalid by
229-
* {@link #isInvalidInternalPath(String)}.
292+
* invalid by {@link #isInvalidPath(String)}.
230293
*/
231294
protected boolean registerSystemIdFilename(String systemId, String filename) {
232295
if (filename == null || systemId == null) {
233296
throw new NullPointerException("Null SystemId or filename.");
234297
}
235-
if (isInvalidInternalPath(filename)) {
298+
if (isInvalidPath(filename)) {
236299
throw new IllegalArgumentException("Bad DTD filename.");
237300
}
238301
String ret;
@@ -242,21 +305,6 @@ protected boolean registerSystemIdFilename(String systemId, String filename) {
242305
return ret == null;
243306
}
244307

245-
/**
246-
* Determine if the given pathname is an invalid internal path.
247-
* <p>
248-
* The pathname must contain {@code /dtd/} and be a valid path according to
249-
* {@link #isInvalidPath(String)}.
250-
* </p>
251-
*
252-
* @param pathname the classpath pathname to check. It is assumed to be
253-
* non-{@code null}.
254-
* @return {@code true} if the pathname is invalid.
255-
*/
256-
protected boolean isInvalidInternalPath(String pathname) {
257-
return isInvalidPath(pathname) || !pathname.contains("/dtd/");
258-
}
259-
260308
@Override
261309
public final InputSource resolveEntity(String name, String publicId, String baseURI, String systemId)
262310
throws SAXException, IOException {
@@ -456,24 +504,19 @@ public void setClassLoader(ClassLoader loader) {
456504
}
457505

458506
private Reader loadDTDfromClasspath(final String dtdFilename) {
459-
final String resPath;
460-
if (dtdFilename.charAt(0) != '/') {
461-
// relative
462-
String pkgPath = DefaultEntityResolver.class.getPackage().getName().replace('.', '/');
463-
StringBuilder buf = new StringBuilder(pkgPath.length() + dtdFilename.length() + 2);
464-
buf.append('/').append(pkgPath).append('/').append(dtdFilename);
465-
resPath = buf.toString();
466-
} else {
467-
resPath = dtdFilename;
468-
}
469507
InputStream is = java.security.AccessController.doPrivileged(new java.security.PrivilegedAction<InputStream>() {
470508
@Override
471509
public InputStream run() {
510+
InputStream is;
472511
if (loader != null) {
473-
return loader.getResourceAsStream(resPath);
512+
is = loader.getResourceAsStream(dtdFilename);
474513
} else {
475-
return this.getClass().getResourceAsStream(resPath);
514+
is = DefaultEntityResolver.class.getResourceAsStream(dtdFilename);
515+
}
516+
if (is == null) {
517+
is = ClassLoader.getSystemResourceAsStream(dtdFilename);
476518
}
519+
return is;
477520
}
478521
});
479522
Reader re = null;

0 commit comments

Comments
 (0)