001/* 002 GRANITE DATA SERVICES 003 Copyright (C) 2011 GRANITE DATA SERVICES S.A.S. 004 005 This file is part of Granite Data Services. 006 007 Granite Data Services is free software; you can redistribute it and/or modify 008 it under the terms of the GNU Library General Public License as published by 009 the Free Software Foundation; either version 2 of the License, or (at your 010 option) any later version. 011 012 Granite Data Services is distributed in the hope that it will be useful, but 013 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 014 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License 015 for more details. 016 017 You should have received a copy of the GNU Library General Public License 018 along with this library; if not, see <http://www.gnu.org/licenses/>. 019*/ 020 021package org.granite.util; 022 023 024/** 025 * @author Franck WOLFF 026 */ 027public class XMLUtilFactory { 028 029 private static XMLUtil xmlUtil = null; 030 private static Class<? extends XMLUtil> xmlUtilClass = null; 031 032 public static XMLUtil getXMLUtil() { 033 if (xmlUtil == null) 034 xmlUtil = buildXMLUtil(); 035 return xmlUtil; 036 } 037 038 public static void setXMLUtilClass(Class<? extends XMLUtil> clazz) { 039 xmlUtilClass = clazz; 040 } 041 042 @SuppressWarnings("unchecked") 043 private static XMLUtil buildXMLUtil() { 044 try { 045 if (xmlUtilClass == null) 046 xmlUtilClass = (Class<? extends XMLUtil>)Thread.currentThread().getContextClassLoader().loadClass("org.granite.util.StdXMLUtil"); 047 return xmlUtilClass.newInstance(); 048 } 049 catch (Exception e) { 050 throw new RuntimeException("Could not build XML util", e); 051 } 052 } 053}