X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fsrc%2Forg%2Fwamblee%2Fgeneral%2FSpringBeanFactory.java;h=91ac1c3f28fbb85e49bc6c9979572092266e0508;hb=53f6ff39d6e9f16d2a2d2fe7958013bad4c89172;hp=eda621102c2dbfccbc950b5bcc523b4358d11059;hpb=af357388ac6e7d3247b71d21922912b8786bd23f;p=utils diff --git a/support/src/org/wamblee/general/SpringBeanFactory.java b/support/src/org/wamblee/general/SpringBeanFactory.java index eda62110..91ac1c3f 100644 --- a/support/src/org/wamblee/general/SpringBeanFactory.java +++ b/support/src/org/wamblee/general/SpringBeanFactory.java @@ -12,7 +12,7 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.wamblee.general; import org.springframework.beans.BeansException; @@ -21,46 +21,59 @@ import org.springframework.beans.factory.access.BeanFactoryReference; import org.springframework.context.access.ContextSingletonBeanFactoryLocator; /** - * Bean factory which uses Spring. + * Bean factory which uses Spring. This bean factory cannot be configured + * directly in the {@link org.wamblee.general.BeanKernel} because it does not + * provide a default no-arg constructor. Therefore, it must be delegated to or + * it must tbe subclassed to provide a default constructor. */ public class SpringBeanFactory implements BeanFactory { - - private String _factoryName; - + + private BeanFactoryReference _factoryReference; + /** - * Constructs the bean factory. - * @param aFactoryName Spring bean factory to use. + * Constructs the bean factory. + * + * @param aSelector + * Selector to find the appropriate bean ref context. + * @param aFactoryName + * Spring bean factory to use. */ - public SpringBeanFactory(String aFactoryName) { - _factoryName = aFactoryName; + public SpringBeanFactory(String aSelector, String aFactoryName) { + BeanFactoryLocator locator = ContextSingletonBeanFactoryLocator + .getInstance(aSelector); + _factoryReference = locator.useBeanFactory(aFactoryName); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.wamblee.general.BeanFactory#find(java.lang.String) */ public Object find(String aId) { - return find(aId, Object.class); + return find(aId, Object.class); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.wamblee.general.BeanFactory#find(java.lang.Class) */ public T find(Class aClass) { return find(aClass.getName(), aClass); } - /* (non-Javadoc) - * @see org.wamblee.general.BeanFactory#find(java.lang.String, java.lang.Class) + /* + * (non-Javadoc) + * + * @see org.wamblee.general.BeanFactory#find(java.lang.String, + * java.lang.Class) */ public T find(String aId, Class aClass) { - BeanFactoryLocator locator = ContextSingletonBeanFactoryLocator.getInstance(); - BeanFactoryReference beanFactory = locator.useBeanFactory(_factoryName); - try { - Object obj = beanFactory.getFactory().getBean(aId, aClass); - assert obj != null; - return aClass.cast(obj); - } catch (BeansException e) { + Object obj = _factoryReference.getFactory().getBean(aId, aClass); + assert obj != null; + return aClass.cast(obj); + } catch (BeansException e) { throw new BeanFactoryException(e.getMessage(), e); } }