XMLUtils.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.utils.xml;
import javax.xml.XMLConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.validation.SchemaFactory;
import javax.xml.xpath.XPathFactory;
/**
* XMLUtils
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class XMLUtils extends AbstractXMLUtils {
protected XMLUtils() {}
private static XMLUtils xmlUtils = null;
private static synchronized void init(){
if(XMLUtils.xmlUtils==null){
XMLUtils.xmlUtils = new XMLUtils();
}
}
public static XMLUtils getInstance(){
if(XMLUtils.xmlUtils==null){
// spotbugs warning 'SING_SINGLETON_GETTER_NOT_SYNCHRONIZED'
synchronized (XMLUtils.class) {
XMLUtils.init();
}
}
return XMLUtils.xmlUtils;
}
// XERCES
@Override
protected DocumentBuilderFactory newDocumentBuilderFactory() throws XMLException{
try{
// force xerces impl
/**System.setProperty("javax.xml.parsers.DocumentBuilderFactory", org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.class.getName());
return DocumentBuilderFactory.newInstance();*/
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.class.getName(),this.getClass().getClassLoader());
if(DISABLE_DTDs) {
documentBuilderFactory.setFeature(getFeatures_disallow_doctype_decl(), true);
}
return documentBuilderFactory;
}catch(Exception e){
throw new XMLException(e.getMessage(),e);
}
}
@Override
protected DatatypeFactory newDatatypeFactory() throws XMLException{
try{
// force xerces impl
/**System.setProperty("javax.xml.datatype.DatatypeFactory", org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl.class.getName());
return DatatypeFactory.newInstance();*/
return DatatypeFactory.newInstance(org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl.class.getName(), this.getClass().getClassLoader());
}catch(Exception e){
throw new XMLException(e.getMessage(),e);
}
}
@Override
protected javax.xml.parsers.SAXParserFactory newSAXParserFactory() throws XMLException{
try{
// force xerces impl
/**System.setProperty("javax.xml.parsers.SAXParserFactory", org.apache.xerces.jaxp.SAXParserFactoryImpl.class.getName());
return javax.xml.parsers.SAXParserFactory.newInstance();*/
javax.xml.parsers.SAXParserFactory saxParserFactory = javax.xml.parsers.SAXParserFactory.newInstance(org.apache.xerces.jaxp.SAXParserFactoryImpl.class.getName(), this.getClass().getClassLoader());
if(DISABLE_DTDs) {
saxParserFactory.setFeature(getFeatures_disallow_doctype_decl(), true);
}
return saxParserFactory;
}catch(Exception e){
throw new XMLException(e.getMessage(),e);
}
}
/**
@Override
protected javax.xml.stream.XMLEventFactory newXMLEventFactory() throws XMLException{
try{
// force xerces impl
// System.setProperty("javax.xml.stream.XMLEventFactory", org.apache.xerces.stax.XMLEventFactoryImpl.class.getName());
// return javax.xml.stream.XMLEventFactory.newFactory();
return javax.xml.stream.XMLEventFactory.newFactory(org.apache.xerces.stax.XMLEventFactoryImpl.class.getName(), this.getClass().getClassLoader());
}catch(Exception e){
throw new XMLException(e.getMessage(),e);
}
}
*/
@Override
protected SchemaFactory newSchemaFactory() throws XMLException{
try{
// force xerces impl
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI,
org.apache.xerces.jaxp.validation.XMLSchemaFactory.class.getName(), this.getClass().getClassLoader());
if(DISABLE_DTDs) {
schemaFactory.setFeature(getFeatures_disallow_doctype_decl(), true);
}
return schemaFactory;
}catch(Exception e){
throw new XMLException(e.getMessage(),e);
}
}
// XALAN
@Override
protected TransformerFactory newTransformerFactory() throws XMLException{
try{
// force xalan impl
/**System.setProperty("javax.xml.transform.TransformerFactory", org.apache.xalan.processor.TransformerFactoryImpl.class.getName());
return TransformerFactory.newInstance();*/
TransformerFactory transformerFactory = TransformerFactory.newInstance(org.apache.xalan.processor.TransformerFactoryImpl.class.getName(), this.getClass().getClassLoader());
/**if(DISABLE_DTDs) {
transformerFactory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD, "");
transformerFactory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
}*/
return transformerFactory;
}catch(Exception e){
throw new XMLException(e.getMessage(),e);
}
}
@Override
protected XPathFactory newXPathFactory() throws XMLException{
try{
/**return XPathFactory.newInstance();*/
// force xalan impl
return XPathFactory.newInstance(XPathFactory.DEFAULT_OBJECT_MODEL_URI,
org.apache.xpath.jaxp.XPathFactoryImpl.class.getName(), this.getClass().getClassLoader());
}catch(Exception e){
throw new XMLException(e.getMessage(),e);
}
}
}