Coverage Report - org.seasar.teeda.core.config.faces.assembler.impl.DefaultManagedBeanAssembler
 
Classes in this File Line Coverage Branch Coverage Complexity
DefaultManagedBeanAssembler
96%
26/27
88%
7/8
1.429
 
 1  
 /*
 2  
  * Copyright 2004-2011 the Seasar Foundation and the Others.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 13  
  * either express or implied. See the License for the specific language
 14  
  * governing permissions and limitations under the License.
 15  
  */
 16  
 package org.seasar.teeda.core.config.faces.assembler.impl;
 17  
 
 18  
 import java.util.Iterator;
 19  
 import java.util.Map;
 20  
 
 21  
 import org.seasar.framework.container.ComponentDef;
 22  
 import org.seasar.framework.container.impl.ComponentDefImpl;
 23  
 import org.seasar.framework.util.ClassUtil;
 24  
 import org.seasar.teeda.core.config.faces.assembler.ManagedBeanAssembler;
 25  
 import org.seasar.teeda.core.config.faces.element.ManagedBeanElement;
 26  
 import org.seasar.teeda.core.exception.ManagedBeanDuplicateRegisterException;
 27  
 import org.seasar.teeda.core.managedbean.ManagedBeanFactory;
 28  
 import org.seasar.teeda.core.scope.Scope;
 29  
 import org.seasar.teeda.core.scope.ScopeManager;
 30  
 import org.seasar.teeda.core.util.DIContainerUtil;
 31  
 import org.seasar.teeda.core.util.IteratorUtil;
 32  
 
 33  
 /**
 34  
  * @author shot
 35  
  */
 36  
 public class DefaultManagedBeanAssembler extends ManagedBeanAssembler {
 37  
 
 38  
     private ManagedBeanFactory managedBeanFactory;
 39  
 
 40  
     private ScopeManager scopeManager;
 41  
 
 42  
     public DefaultManagedBeanAssembler(Map managedBeans) {
 43  2
         super(managedBeans);
 44  2
     }
 45  
 
 46  
     protected void setupBeforeAssemble() {
 47  2
         managedBeanFactory = (ManagedBeanFactory) DIContainerUtil
 48  2
                 .getComponent(ManagedBeanFactory.class);
 49  2
         scopeManager = (ScopeManager) DIContainerUtil
 50  
                 .getComponent(ScopeManager.class);
 51  2
     }
 52  
 
 53  
     public void assemble() {
 54  2
         for (Iterator itr = IteratorUtil.getEntryIterator(getManagedBeans()); itr
 55  4
                 .hasNext();) {
 56  2
             Map.Entry entry = (Map.Entry) itr.next();
 57  2
             ManagedBeanElement element = (ManagedBeanElement) entry.getValue();
 58  2
             String mbName = (String) entry.getKey();
 59  2
             String mbClassName = element.getManagedBeanClass();
 60  2
             String mbScope = element.getManagedBeanScope();
 61  
 
 62  2
             assertNotRegisteredYet(mbName);
 63  
 
 64  2
             Scope scope = getScopeManager().getScope(mbScope);
 65  2
             Class clazz = ClassUtil.forName(mbClassName);
 66  2
             ComponentDef cDef = new ComponentDefImpl(clazz, mbName);
 67  2
             registerManagedBean(cDef, scope);
 68  
         }
 69  2
     }
 70  
 
 71  
     protected void registerManagedBean(ComponentDef componentDef, Scope scope) {
 72  2
         getManagedBeanFactory().registerManagedBean(componentDef, scope);
 73  2
     }
 74  
 
 75  
     protected ManagedBeanFactory getManagedBeanFactory() {
 76  2
         return this.managedBeanFactory;
 77  
     }
 78  
 
 79  
     protected ScopeManager getScopeManager() {
 80  2
         return this.scopeManager;
 81  
     }
 82  
 
 83  
     private void assertNotRegisteredYet(String managedBeanName) {
 84  2
         Object managedBean = managedBeanFactory.getManagedBean(managedBeanName);
 85  2
         if (managedBean != null) {
 86  0
             throw new ManagedBeanDuplicateRegisterException(managedBeanName);
 87  
         }
 88  2
     }
 89  
 
 90  
 }