1 /* 2 * Copyright 2010 Capgemini 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * 15 */ 16 package org.xmlfield.core.internal; 17 18 /** 19 * Genric xml field factory. 20 * 21 * @author Guillaume Mary <guillaume.mary@capgemini.com> 22 */ 23 public abstract class XmlFieldFactory { 24 /** 25 * <p> 26 * Get a new factory instance managed by the <code>XmlFieldFactoryFinder</code>. 27 * 28 * @return Instance of an xml field factory. 29 * 30 * @throws RuntimeException 31 * When there is a failure in creating an <code>XmlFieldSelectorFactory</code> 32 */ 33 protected static final <T> T newInstance(Class<T> factoryClass) { 34 ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 35 36 if (classLoader == null) { 37 // use the current class loader 38 classLoader = XmlFieldFactory.class.getClassLoader(); 39 } 40 41 T xmlFieldFactory = new XmlFieldFactoryFinder(classLoader).newFactory(factoryClass); 42 43 return xmlFieldFactory; 44 } 45 }