< prev index next >

src/java.xml.ws/share/classes/com/sun/xml/internal/ws/util/xml/XmlUtil.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 24,47 **** */ package com.sun.xml.internal.ws.util.xml; import com.sun.istack.internal.Nullable; - import com.sun.org.apache.xml.internal.resolver.Catalog; - import com.sun.org.apache.xml.internal.resolver.CatalogManager; - import com.sun.org.apache.xml.internal.resolver.tools.CatalogResolver; import com.sun.xml.internal.ws.server.ServerRtException; import com.sun.xml.internal.ws.util.ByteArrayBuffer; ! import org.w3c.dom.Attr; ! import org.w3c.dom.Element; ! import org.w3c.dom.EntityReference; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; ! import org.w3c.dom.Text; ! import org.xml.sax.*; ! import javax.xml.XMLConstants; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import javax.xml.stream.XMLInputFactory; --- 24,56 ---- */ package com.sun.xml.internal.ws.util.xml; import com.sun.istack.internal.Nullable; import com.sun.xml.internal.ws.server.ServerRtException; import com.sun.xml.internal.ws.util.ByteArrayBuffer; ! import java.io.IOException; ! import java.io.InputStream; ! import java.io.OutputStreamWriter; ! import java.io.Writer; ! import java.lang.reflect.Method; ! import java.net.URL; ! import java.security.AccessController; ! import java.security.PrivilegedAction; ! import java.util.ArrayList; ! import java.util.Collections; ! import java.util.Enumeration; ! import java.util.Iterator; ! import java.util.List; ! import java.util.StringTokenizer; ! import java.util.logging.Level; ! import java.util.logging.Logger; ! import java.util.stream.Collectors; import javax.xml.XMLConstants; + import javax.xml.catalog.CatalogFeatures; + import javax.xml.catalog.CatalogFeatures.Feature; + import javax.xml.catalog.CatalogManager; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import javax.xml.stream.XMLInputFactory;
*** 56,79 **** import javax.xml.transform.stream.StreamSource; import javax.xml.validation.SchemaFactory; import javax.xml.ws.WebServiceException; import javax.xml.xpath.XPathFactory; import javax.xml.xpath.XPathFactoryConfigurationException; ! import java.io.IOException; ! import java.io.InputStream; ! import java.io.OutputStreamWriter; ! import java.io.Writer; ! import java.net.URL; ! import java.security.AccessController; ! import java.security.PrivilegedAction; ! import java.util.ArrayList; ! import java.util.Enumeration; ! import java.util.Iterator; ! import java.util.List; ! import java.util.StringTokenizer; ! import java.util.logging.Level; ! import java.util.logging.Logger; /** * @author WS Development Team */ public class XmlUtil { --- 65,86 ---- import javax.xml.transform.stream.StreamSource; import javax.xml.validation.SchemaFactory; import javax.xml.ws.WebServiceException; import javax.xml.xpath.XPathFactory; import javax.xml.xpath.XPathFactoryConfigurationException; ! import org.w3c.dom.Attr; ! import org.w3c.dom.Element; ! import org.w3c.dom.EntityReference; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; ! import org.w3c.dom.Text; ! import org.xml.sax.EntityResolver; ! import org.xml.sax.ErrorHandler; ! import org.xml.sax.InputSource; ! import org.xml.sax.SAXException; ! import org.xml.sax.SAXParseException; ! import org.xml.sax.XMLReader; /** * @author WS Development Team */ public class XmlUtil {
*** 280,358 **** /* * Gets an EntityResolver using XML catalog */ public static EntityResolver createEntityResolver(@Nullable URL catalogUrl) { ! // set up a manager ! CatalogManager manager = new CatalogManager(); ! manager.setIgnoreMissingProperties(true); ! // Using static catalog may result in to sharing of the catalog by multiple apps running in a container ! manager.setUseStaticCatalog(false); ! Catalog catalog = manager.getCatalog(); ! try { if (catalogUrl != null) { ! catalog.parseCatalog(catalogUrl); } ! } catch (IOException e) { throw new ServerRtException("server.rt.err",e); } ! return workaroundCatalogResolver(catalog); } /** * Gets a default EntityResolver for catalog at META-INF/jaxws-catalog.xml */ public static EntityResolver createDefaultCatalogResolver() { ! ! // set up a manager ! CatalogManager manager = new CatalogManager(); ! manager.setIgnoreMissingProperties(true); ! // Using static catalog may result in to sharing of the catalog by multiple apps running in a container ! manager.setUseStaticCatalog(false); ! // parse the catalog ClassLoader cl = Thread.currentThread().getContextClassLoader(); Enumeration<URL> catalogEnum; - Catalog catalog = manager.getCatalog(); - try { if (cl == null) { catalogEnum = ClassLoader.getSystemResources("META-INF/jax-ws-catalog.xml"); } else { catalogEnum = cl.getResources("META-INF/jax-ws-catalog.xml"); } ! ! while(catalogEnum.hasMoreElements()) { ! URL url = catalogEnum.nextElement(); ! catalog.parseCatalog(url); ! } ! } catch (IOException e) { throw new WebServiceException(e); } ! return workaroundCatalogResolver(catalog); } /** ! * Default CatalogResolver implementation is broken as it depends on CatalogManager.getCatalog() which will always create a new one when ! * useStaticCatalog is false. ! * This returns a CatalogResolver that uses the catalog passed as parameter. ! * @param catalog ! * @return CatalogResolver */ ! private static CatalogResolver workaroundCatalogResolver(final Catalog catalog) { ! // set up a manager ! CatalogManager manager = new CatalogManager() { ! @Override ! public Catalog getCatalog() { ! return catalog; } - }; - manager.setIgnoreMissingProperties(true); - // Using static catalog may result in to sharing of the catalog by multiple apps running in a container - manager.setUseStaticCatalog(false); ! return new CatalogResolver(manager); ! } /** * {@link ErrorHandler} that always treat the error as fatal. */ public static final ErrorHandler DRACONIAN_ERROR_HANDLER = new ErrorHandler() { --- 287,353 ---- /* * Gets an EntityResolver using XML catalog */ public static EntityResolver createEntityResolver(@Nullable URL catalogUrl) { ! ArrayList<URL> urlsArray = new ArrayList<URL>(); ! EntityResolver er; if (catalogUrl != null) { ! urlsArray.add(catalogUrl); } ! try { ! er = createCatalogResolver(urlsArray); ! } catch (Exception e) { throw new ServerRtException("server.rt.err",e); } ! return er; } /** * Gets a default EntityResolver for catalog at META-INF/jaxws-catalog.xml */ public static EntityResolver createDefaultCatalogResolver() { ! EntityResolver er; ! try { ! /** ! * Gets a URLs for catalog defined at META-INF/jaxws-catalog.xml ! */ ClassLoader cl = Thread.currentThread().getContextClassLoader(); Enumeration<URL> catalogEnum; if (cl == null) { catalogEnum = ClassLoader.getSystemResources("META-INF/jax-ws-catalog.xml"); } else { catalogEnum = cl.getResources("META-INF/jax-ws-catalog.xml"); } ! er = createCatalogResolver(Collections.list(catalogEnum)); ! } catch (Exception e) { throw new WebServiceException(e); } ! return er; } /** ! * Instantiate catalog resolver using new catalog API (javax.xml.catalog.*) ! * added in JDK9. Usage of new API removes dependency on internal API ! * (com.sun.org.apache.xml.internal) for modular runtime. */ ! private static EntityResolver createCatalogResolver(ArrayList<URL> urls) throws Exception { ! // Prepare array of catalog paths ! String[] paths = urls.stream() ! .map(u -> u.toExternalForm()) ! .toArray(c -> new String[c]); ! ! //Create CatalogResolver with new JDK9+ API ! return (EntityResolver) CatalogManager.catalogResolver(catalogFeatures, paths); } ! // Cache CatalogFeatures instance for future usages. ! // Resolve feature is set to "continue" value for backward compatibility. ! private static CatalogFeatures catalogFeatures = CatalogFeatures.builder() ! .with(Feature.RESOLVE, "continue") ! .build(); /** * {@link ErrorHandler} that always treat the error as fatal. */ public static final ErrorHandler DRACONIAN_ERROR_HANDLER = new ErrorHandler() {
< prev index next >