/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.vipr.client.impl.jaxb;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import com.emc.vipr.client.exceptions.ViPRException;
public class XmlUtils {
private static SAXParserFactory SAX_FACTORY;
private static DocumentBuilderFactory DOM_FACTORY;
private static TransformerFactory TRANSFORMER_FACTORY;
public static synchronized SAXParserFactory getSAXFactory() {
if (SAX_FACTORY == null) {
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
SAX_FACTORY = factory;
}
return SAX_FACTORY;
}
public static synchronized DocumentBuilderFactory getDOMFactory() {
if (DOM_FACTORY == null) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setExpandEntityReferences(false);
DOM_FACTORY = factory;
}
return DOM_FACTORY;
}
public static synchronized TransformerFactory getTransformerFactory() {
if (TRANSFORMER_FACTORY == null) {
TRANSFORMER_FACTORY = TransformerFactory.newInstance();
}
return TRANSFORMER_FACTORY;
}
public static SAXParser createSAXParser() {
try {
return getSAXFactory().newSAXParser();
} catch (Exception e) {
throw new ViPRException(e);
}
}
public static DocumentBuilder createDocumentBuilder() {
try {
return getDOMFactory().newDocumentBuilder();
} catch (Exception e) {
throw new ViPRException(e);
}
}
public static Transformer createTransformer() {
try {
return getTransformerFactory().newTransformer();
} catch (Exception e) {
throw new ViPRException(e);
}
}
public static Unmarshaller createUnmarshaller(Class<?> itemClass) {
try {
return JAXBContext.newInstance(itemClass).createUnmarshaller();
} catch (Exception e) {
throw new ViPRException(e);
}
}
}