EMMA Coverage Report (generated Tue Feb 12 22:23:49 ICT 2008)
[all classes][net.sourceforge.hiveutils.service.impl]

COVERAGE SUMMARY FOR SOURCE FILE [PreferencesManagerImpl.java]

nameclass, %method, %block, %line, %
PreferencesManagerImpl.java100% (1/1)100% (6/6)75%  (138/184)83%  (34.8/42)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class PreferencesManagerImpl100% (1/1)100% (6/6)75%  (138/184)83%  (34.8/42)
registryDidShutdown (): void 100% (1/1)19%  (4/21)33%  (2/6)
write (String): void 100% (1/1)63%  (32/51)79%  (8.7/11)
read (String): Object 100% (1/1)86%  (63/73)94%  (14.1/15)
PreferencesManagerImpl (Log, Map, Map, boolean): void 100% (1/1)100% (20/20)100% (7/7)
load (PreferenceContribution): Object 100% (1/1)100% (10/10)100% (1/1)
store (PreferenceContribution, Object): void 100% (1/1)100% (9/9)100% (2/2)

1//  Copyright 2004-2007 Jean-Francois Poilpret
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14 
15package net.sourceforge.hiveutils.service.impl;
16 
17import java.util.HashMap;
18import java.util.Map;
19 
20import org.apache.commons.logging.Log;
21import org.apache.hivemind.events.RegistryShutdownListener;
22 
23import net.sourceforge.hiveutils.service.PreferencesManager;
24import net.sourceforge.hiveutils.util.PreferencesUtils;
25import net.sourceforge.hiveutils.util.PrefsMapper;
26 
27/**
28 * @author Jean-Francois Poilpret
29 */
30public class PreferencesManagerImpl
31        implements PreferencesManager, RegistryShutdownListener
32{
33        public PreferencesManagerImpl(        Log                                                                        logger, 
34                                                                        Map<String, PreferenceContribution>        prefsDef, 
35                                                                        Map<Class, PrefsMapper>                                mappers, 
36                                                                        boolean                                                                autoWrite)
37        {
38                _logger = logger;
39                _autoWrite = autoWrite;
40                _prefsDef = prefsDef;
41                _mappers = mappers;
42        }
43        
44        public void registryDidShutdown()
45        {
46                if (!_autoWrite)
47                {
48                        return;
49                }
50                // Save all loaded preference beans back to the preferences store
51                for (String pref: _prefs.keySet())
52                {
53                        write(pref);
54                }
55        }
56        
57        public Object        read(String name)
58        {
59                // First check if preference is already read and cached
60                Object pref;
61                synchronized (this)
62                {
63                        pref = _prefs.get(name);
64                }
65                if (pref != null)
66                {
67                        return pref;
68                }
69                // Not read yet, get configuration for this preference
70                PreferenceContribution def = _prefsDef.get(name);
71                if (def == null)
72                {
73                        _logger.warn("read(): '" + name + "' does not exist.");
74                        return null;
75                }
76                // Instantiate this preference from the actual prefs repository (JDK1.4)
77                pref = load(def);
78                synchronized (this)
79                {
80                        if (_prefs.get(name) == null)
81                        {
82                                _prefs.put(name, pref);
83                        }
84                }
85                return pref;
86        }
87        
88        protected Object        load(PreferenceContribution def)
89        {
90                return PreferencesUtils.load(        def.getName(), 
91                                                                                def.getBeanClass(), 
92                                                                                def.getType(),
93                                                                                _mappers);
94        }
95        
96        @SuppressWarnings("unchecked")
97        public void                write(String name)
98        {
99                // First check that preference is already read and cached
100                Object pref;
101                synchronized (this)
102                {
103                        pref = _prefs.get(name);
104                }
105                if (pref == null)
106                {
107                        _logger.warn("write(): '" + name + "' is not in cache.");
108                        return;
109                }
110                PreferenceContribution def = _prefsDef.get(name);
111                store(def, pref);
112                if (def.getEventChannel() != null)
113                {
114                        def.getEventChannel().push(pref);
115                }
116        }
117        
118        protected void        store(PreferenceContribution def, Object pref)
119        {
120                PreferencesUtils.store(        def.getName(), 
121                                                                def.getType(),
122                                                                pref,
123                                                                _mappers);
124        }
125 
126        private final Log                                                                        _logger;
127        private final Map<String, PreferenceContribution>        _prefsDef;
128        private final Map<Class, PrefsMapper>                                _mappers;
129        private final Map<String, Object>                                        _prefs = new HashMap<String, Object>();
130        private final boolean                                                                _autoWrite;
131}

[all classes][net.sourceforge.hiveutils.service.impl]
EMMA 2.0.5312 (C) Vladimir Roubtsov