1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j.xml;
19
20 import org.apache.log4j.helpers.LogLog;
21 import org.xml.sax.EntityResolver;
22 import org.xml.sax.InputSource;
23
24 import java.io.InputStream;
25 import java.io.ByteArrayInputStream;
26
27 /***
28 * An {@link EntityResolver} specifically designed to return
29 * <code>log4j.dtd</code> which is embedded within the log4j jar
30 * file.
31 *
32 * @author Paul Austin
33 * */
34 public class Log4jEntityResolver implements EntityResolver {
35
36 public InputSource resolveEntity (String publicId, String systemId) {
37 if (systemId.endsWith("log4j.dtd")) {
38 Class clazz = getClass();
39 InputStream in = clazz.getResourceAsStream("/org/apache/log4j/xml/log4j.dtd");
40 if (in == null) {
41 LogLog.warn("Could not find [log4j.dtd] using [" + clazz.getClassLoader()
42 + "] class loader, parsed without DTD.");
43 in = new ByteArrayInputStream(new byte[0]);
44 }
45 return new InputSource(in);
46 } else {
47 return null;
48 }
49 }
50 }