jaxp/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java
changeset 16953 a44e04deb948
parent 12457 c348e06f0e82
child 25262 1fe892ba017a
equal deleted inserted replaced
16416:bcebd3fdefc9 16953:a44e04deb948
   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 =