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.api;
17  
18  import java.util.Map;
19  
20  import org.xmlfield.core.internal.XmlFieldFactory;
21  
22  /**
23   * <p>
24   * An <code>XmlFieldNodeParserFactory</code> instance can be used to create
25   * {@link XmlFieldNodeParser} objects.
26   * </p>
27   * 
28   * <p>
29   * Thread safety :
30   * <ul>
31   * <li>Factories implementation <b>must</b> be thread-safe. They will be created
32   * once and reused by XmlField for every thread.</li>
33   * <li>Objects returned by factory should be considered <b>not thread safe</b>.
34   * Default behavior is to return a new object every time. However, if these
35   * objects are know to be thread safe, the factory can always return the same
36   * object for better performances.</li>
37   * </ul>
38   * </p>
39   * <p>
40   * See {@link #newInstance()} for lookup mechanism.
41   * </p>
42   * 
43   * @author Guillaume Mary <guillaume.mary@capgemini.com>
44   */
45  public abstract class XmlFieldNodeParserFactory extends XmlFieldFactory {
46  	/**
47  	 * <p>
48  	 * Get a new <code>XmlFieldNodeParserFactory</code> instance.
49  	 * 
50  	 * @return Instance of an <code>XmlFieldNodeParserFactory</code>.
51  	 * 
52  	 * @throws RuntimeException
53  	 *             When there is a failure in creating an
54  	 *             <code>XmlFieldNodeParserFactory</code>
55  	 */
56  	public static final XmlFieldNodeParserFactory newInstance() {
57  		return newInstance(XmlFieldNodeParserFactory.class);
58  	}
59  
60  	/**
61  	 * <p>
62  	 * Return a new <code>XmlFieldNodeParser</code> using the underlying object
63  	 * model determined when the <code>XmlFieldParserFactory</code> was
64  	 * instantiated.
65  	 * </p>
66  	 * 
67  	 * @return New instance of an <code>XmlFieldParser</code>.
68  	 */
69  	public abstract XmlFieldNodeParser newParser(
70  			Map<String, String> configuration);
71  }