Coverage Report - org.seasar.uruma.context.impl.ApplicationContextImpl
 
Classes in this File Line Coverage Branch Coverage Complexity
ApplicationContextImpl
73%
16/22
62%
5/8
0
 
 1  
 /*
 2  
  * Copyright 2004-2008 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.uruma.context.impl;
 17  
 
 18  
 import java.util.ArrayList;
 19  
 import java.util.Collection;
 20  
 import java.util.Collections;
 21  
 import java.util.HashMap;
 22  
 import java.util.List;
 23  
 import java.util.Map;
 24  
 
 25  
 import org.seasar.uruma.context.ApplicationContext;
 26  
 import org.seasar.uruma.context.ContextFactory;
 27  
 import org.seasar.uruma.context.WindowContext;
 28  
 import org.seasar.uruma.exception.DuplicateComponentIdException;
 29  
 import org.seasar.uruma.util.AssertionUtil;
 30  
 
 31  
 /**
 32  
  * {@link ApplicationContext} の実装クラスです。<br />
 33  
  * 
 34  
  * @author y-komori
 35  
  */
 36  
 public class ApplicationContextImpl implements ApplicationContext {
 37  128
     private List<WindowContext> windowContextList = new ArrayList<WindowContext>();
 38  
 
 39  128
     private Map<String, Object> valueMap = new HashMap<String, Object>();
 40  
 
 41  
     /**
 42  
      * {@link ApplicationContextImpl} を構築します。<br />
 43  
      * 本クラスのインスタンスを生成するには、{@link ContextFactory#createApplicationContext()}
 44  
      * メソッドを利用してください。<br />
 45  
      */
 46  
     public ApplicationContextImpl() {
 47  128
         super();
 48  128
     }
 49  
 
 50  
     /*
 51  
      * @see org.seasar.uruma.context.ApplicationContext#getWindowContext(java.lang.String)
 52  
      */
 53  
     public WindowContext getWindowContext(final String windowName) {
 54  224
         for (WindowContext context : windowContextList) {
 55  112
             if (context.getName().equals(windowName)) {
 56  112
                 return context;
 57  
             }
 58  
         }
 59  112
         return null;
 60  
     }
 61  
 
 62  
     /*
 63  
      * @see org.seasar.uruma.context.ApplicationContext#getWindowContexts()
 64  
      */
 65  
     public Collection<WindowContext> getWindowContexts() {
 66  0
         return Collections.unmodifiableCollection(windowContextList);
 67  
     }
 68  
 
 69  
     /**
 70  
      * {@link WindowContext} オブジェクトを追加します。<br />
 71  
      * 
 72  
      * @param context
 73  
      *            追加する {@link WindowContext} オブジェクト
 74  
      * @throws DuplicateComponentIdException
 75  
      *             ウィンドウ名称が既に登録されている場合
 76  
      */
 77  
     public void addWindowContext(final WindowContext context) {
 78  112
         AssertionUtil.assertNotNull("context", context);
 79  
 
 80  112
         if (getWindowContext(context.getName()) == null) {
 81  112
             windowContextList.add(context);
 82  
         } else {
 83  0
             throw new DuplicateComponentIdException(context.getName());
 84  
         }
 85  112
     }
 86  
 
 87  
     /**
 88  
      * {@link WindowContext} を削除します。<br />
 89  
      * 
 90  
      * @param windowName
 91  
      *            ウィンドウ名称
 92  
      */
 93  
     public void disposeWindowContext(final String windowName) {
 94  112
         WindowContext context = getWindowContext(windowName);
 95  112
         if (context != null) {
 96  112
             windowContextList.remove(context);
 97  
         }
 98  112
     }
 99  
 
 100  
     /*
 101  
      * @see org.seasar.uruma.context.ApplicationContext#getValue(java.lang.String)
 102  
      */
 103  
     public Object getValue(final String name) {
 104  0
         return valueMap.get(name);
 105  
     }
 106  
 
 107  
     /*
 108  
      * @see org.seasar.uruma.context.ApplicationContext#setValue(java.lang.String,
 109  
      *      java.lang.Object)
 110  
      */
 111  
     public void setValue(final String name, final Object value) {
 112  0
         AssertionUtil.assertNotEmpty("name", name);
 113  0
         valueMap.put(name, value);
 114  0
     }
 115  
 }