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  
18  package org.apache.commons.proxy.provider;
19  
20  import org.apache.commons.proxy.ObjectProvider;
21  import org.apache.commons.proxy.exception.ObjectProviderException;
22  
23  /**
24   * Uses <code>Class.newInstance()</code> to instantiate an object.
25   *
26   * @author James Carman
27   * @since 1.0
28   */
29  public class BeanProvider implements ObjectProvider
30  {
31  //----------------------------------------------------------------------------------------------------------------------
32  // Fields
33  //----------------------------------------------------------------------------------------------------------------------
34  
35      private Class beanClass;
36  
37  //----------------------------------------------------------------------------------------------------------------------
38  // Constructors
39  //----------------------------------------------------------------------------------------------------------------------
40  
41      public BeanProvider()
42      {
43      }
44  
45      /**
46       * Constructs a provider which instantiates objects of the specified bean class.
47       * @param beanClass the bean class
48       */
49      public BeanProvider( Class beanClass )
50      {
51          this.beanClass = beanClass;
52      }
53  
54  //----------------------------------------------------------------------------------------------------------------------
55  // ObjectProvider Implementation
56  //----------------------------------------------------------------------------------------------------------------------
57  
58      public Object getObject()
59      {
60          try
61          {
62              if( beanClass == null )
63              {
64                  throw new ObjectProviderException( "No bean class provided." );
65              }
66              return beanClass.newInstance();
67          }
68          catch( InstantiationException e )
69          {
70              throw new ObjectProviderException( "Class " + beanClass.getName() + " is not concrete.", e );
71          }
72          catch( IllegalAccessException e )
73          {
74              throw new ObjectProviderException( "Constructor for class " + beanClass.getName() + " is not accessible.",
75                                                 e );
76          }
77      }
78  
79  //----------------------------------------------------------------------------------------------------------------------
80  // Getter/Setter Methods
81  //----------------------------------------------------------------------------------------------------------------------
82  
83      public void setBeanClass( Class beanClass )
84      {
85          this.beanClass = beanClass;
86      }
87  }
88