View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */ 
17  package org.apache.commons.betwixt.io.read;
18  
19  /**  
20    * A Chain of bean creators.
21    *
22    * @author Robert Burrell Donkin
23    * @since 0.5
24    */
25  public abstract class BeanCreationChain {
26  
27      
28  //-------------------------------------------------------- Class Methods
29  
30      /** 
31       * Creates the default <code>BeanCreationChain</code> used when reading beans.
32       * @return a <code>BeanCreationList</code> with the default creators loader in order, not null
33       */
34      public static final BeanCreationChain createDefaultChain() {
35          // this delegates to the list but this is the canonical version
36          // the implementation may change later
37          return BeanCreationList.createStandardChain();
38      }
39      
40  //-------------------------------------------------------- Instance Methods
41  
42      /** 
43        * Create a bean for the given mapping in the given context.
44        *
45        * @param elementMapping specifies the mapping between the type and element.
46        * <strong>Note</strong> it is recommended that classes do not store a permenant
47        * reference to this object since these objects may later be reused.
48        * Not null
49        * @param context the context in which this creation happens, not null
50        * @return the bean, possibly null
51        */
52      public abstract Object create(ElementMapping elementMapping, ReadContext context);
53      
54  }