< prev index next >
jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/ws/util/xml/XmlUtil.java
Print this page
@@ -24,34 +24,25 @@
*/
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.URI;
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;
@@ -63,11 +54,10 @@
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
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;
@@ -76,10 +66,12 @@
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.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
/**
* @author WS Development Team
@@ -182,11 +174,11 @@
public static Iterator getAllAttributes(Element element) {
return new NamedNodeMapIterator(element.getAttributes());
}
public static List<String> parseTokenList(String tokenList) {
- List<String> result = new ArrayList<String>();
+ List<String> result = new ArrayList<>();
StringTokenizer tokenizer = new StringTokenizer(tokenList, " ");
while (tokenizer.hasMoreTokens()) {
result.add(tokenizer.nextToken());
}
return result;
@@ -245,10 +237,11 @@
}
};
/**
* Creates a new identity transformer.
+ * @return
*/
public static Transformer newTransformer() {
try {
return transformerFactory.get().newTransformer();
} catch (TransformerConfigurationException tex) {
@@ -256,13 +249,21 @@
}
}
/**
* Performs identity transformation.
+ * @param <T>
+ * @param src
+ * @param result
+ * @return
+ * @throws javax.xml.transform.TransformerException
+ * @throws java.io.IOException
+ * @throws org.xml.sax.SAXException
+ * @throws javax.xml.parsers.ParserConfigurationException
*/
- public static <T extends Result>
- T identityTransform(Source src, T result) throws TransformerException, SAXException, ParserConfigurationException, IOException {
+ public static <T extends Result> T identityTransform(Source src, T result)
+ throws TransformerException, SAXException, ParserConfigurationException, IOException {
if (src instanceof StreamSource) {
// work around a bug in JAXP in JDK6u4 and earlier where the namespace processing
// is not turned on by default
StreamSource ssrc = (StreamSource) src;
TransformerHandler th = ((SAXTransformerFactory) transformerFactory.get()).newTransformerHandler();
@@ -284,71 +285,28 @@
is.setPublicId(src.getPublicId());
is.setSystemId(src.getSystemId());
return is;
}
- /*
+ /**
* Gets an EntityResolver using XML catalog
+ *
+ * @param catalogUrl
+ * @return
*/
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;
+ return XmlCatalogUtil.createEntityResolver(catalogUrl);
}
/**
* Gets a default EntityResolver for catalog at META-INF/jaxws-catalog.xml
+ *
+ * @return
*/
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");
+ return XmlCatalogUtil.createDefaultCatalogResolver();
}
- 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 URIs
- URI[] uris = urls.stream()
- .map(u -> URI.create(u.toExternalForm()))
- .toArray(URI[]::new);
-
- //Create CatalogResolver with new JDK9+ API
- return (EntityResolver) CatalogManager.catalogResolver(catalogFeatures, uris);
- }
-
- // 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() {
@@ -389,11 +347,11 @@
public static SAXParserFactory newSAXParserFactory(boolean disableSecurity) {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, !xmlSecurityDisabled(disableSecurity));
- } catch (Exception e) {
+ } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
LOGGER.log(Level.WARNING, "Factory [{0}] doesn't support secure xml processing!", new Object[]{factory.getClass().getName()});
}
return factory;
}
< prev index next >