< 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 >