equal
deleted
inserted
replaced
102 /** |
102 /** |
103 * Default class name. |
103 * Default class name. |
104 */ |
104 */ |
105 private static final String FALLBACK_CLASS = |
105 private static final String FALLBACK_CLASS = |
106 "com.sun.org.apache.xerces.internal.dom.DOMXSImplementationSourceImpl"; |
106 "com.sun.org.apache.xerces.internal.dom.DOMXSImplementationSourceImpl"; |
|
107 private static final String DEFAULT_PACKAGE = |
|
108 "com.sun.org.apache.xerces.internal.dom"; |
107 /** |
109 /** |
108 * Private constructor. |
110 * Private constructor. |
109 * @param srcs Vector List of DOMImplementationSources |
111 * @param srcs Vector List of DOMImplementationSources |
110 */ |
112 */ |
111 private DOMImplementationRegistry(final Vector srcs) { |
113 private DOMImplementationRegistry(final Vector srcs) { |
166 } |
168 } |
167 if (p != null) { |
169 if (p != null) { |
168 StringTokenizer st = new StringTokenizer(p); |
170 StringTokenizer st = new StringTokenizer(p); |
169 while (st.hasMoreTokens()) { |
171 while (st.hasMoreTokens()) { |
170 String sourceName = st.nextToken(); |
172 String sourceName = st.nextToken(); |
171 // Use context class loader, falling back to Class.forName |
173 // make sure we have access to restricted packages |
172 // if and only if this fails... |
174 boolean internal = false; |
|
175 if (System.getSecurityManager() != null) { |
|
176 if (sourceName != null && sourceName.startsWith(DEFAULT_PACKAGE)) { |
|
177 internal = true; |
|
178 } |
|
179 } |
173 Class sourceClass = null; |
180 Class sourceClass = null; |
174 if (classLoader != null) { |
181 if (classLoader != null && !internal) { |
175 sourceClass = classLoader.loadClass(sourceName); |
182 sourceClass = classLoader.loadClass(sourceName); |
176 } else { |
183 } else { |
177 sourceClass = Class.forName(sourceName); |
184 sourceClass = Class.forName(sourceName); |
178 } |
185 } |
179 DOMImplementationSource source = |
186 DOMImplementationSource source = |