View Javadoc

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  }