1:
37:
38: package ;
39:
40: import ;
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49: import ;
50:
51:
57: public class DomDocumentBuilderFactory
58: extends DocumentBuilderFactory
59: {
60:
61: final DOMImplementation impl;
62: final DOMImplementationLS ls;
63: private boolean secureProcessing;
64:
65: public DomDocumentBuilderFactory()
66: {
67: try
68: {
69: DOMImplementationRegistry reg =
70: DOMImplementationRegistry.newInstance();
71: impl = reg.getDOMImplementation("LS 3.0");
72: if (impl == null)
73: {
74: throw new FactoryConfigurationError("no LS implementations found");
75: }
76: ls = (DOMImplementationLS) impl;
77: }
78: catch (Exception e)
79: {
80: throw new FactoryConfigurationError(e);
81: }
82: }
83:
84: public DocumentBuilder newDocumentBuilder()
85: throws ParserConfigurationException
86: {
87: LSParser parser = ls.createLSParser(DOMImplementationLS.MODE_ASYNCHRONOUS,
88: "http://www.w3.org/TR/REC-xml");
89: DOMConfiguration config = parser.getDomConfig();
90: setParameter(config, "namespaces",
91: isNamespaceAware() ? Boolean.TRUE : Boolean.FALSE);
92: setParameter(config, "element-content-whitespace",
93: isIgnoringElementContentWhitespace() ? Boolean.FALSE :
94: Boolean.TRUE);
95: setParameter(config, "comments",
96: isIgnoringComments() ? Boolean.FALSE : Boolean.TRUE);
97: setParameter(config, "expand-entity-references",
98: isExpandEntityReferences() ? Boolean.TRUE : Boolean.FALSE);
99: setParameter(config, "coalescing",
100: isCoalescing() ? Boolean.TRUE : Boolean.FALSE);
101: setParameter(config, "validating",
102: isValidating() ? Boolean.TRUE : Boolean.FALSE);
103: setParameter(config, "xinclude-aware",
104: isXIncludeAware() ? Boolean.TRUE : Boolean.FALSE);
105: return new DomDocumentBuilder(impl, ls, parser);
106: }
107:
108: void setParameter(DOMConfiguration config, String name, Object value)
109: throws ParserConfigurationException
110: {
111: if (!config.canSetParameter(name, value))
112: {
113: throw new ParserConfigurationException(name);
114: }
115: config.setParameter(name, value);
116: }
117:
118: public Object getAttribute(String name)
119: {
120:
121: return null;
122: }
123:
124: public void setAttribute(String name, Object value)
125: {
126:
127: }
128:
129: public void setFeature(String name, boolean value)
130: throws ParserConfigurationException
131: {
132: if (name == null)
133: throw new NullPointerException();
134: if (XMLConstants.FEATURE_SECURE_PROCESSING.equals(name))
135: {
136: secureProcessing = true;
137: return;
138: }
139: throw new ParserConfigurationException(name);
140: }
141:
142: public boolean getFeature(String name)
143: throws ParserConfigurationException
144: {
145: if (XMLConstants.FEATURE_SECURE_PROCESSING.equals(name))
146: return secureProcessing;
147: throw new ParserConfigurationException(name);
148: }
149:
150: }