EMMA Coverage Report (generated Tue May 16 15:34:38 CDT 2006)
[all classes][com.mysql.management.util]

COVERAGE SUMMARY FOR SOURCE FILE [DefaultsMap.java]

nameclass, %method, %block, %line, %
DefaultsMap.java100% (1/1)100% (15/15)100% (231/231)100% (50/50)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class DefaultsMap100% (1/1)100% (15/15)100% (231/231)100% (50/50)
DefaultsMap (): void 100% (1/1)100% (18/18)100% (5/5)
clear (): void 100% (1/1)100% (7/7)100% (3/3)
containsKey (Object): boolean 100% (1/1)100% (5/5)100% (1/1)
containsValue (Object): boolean 100% (1/1)100% (27/27)100% (8/8)
entrySet (): Set 100% (1/1)100% (27/27)100% (5/5)
get (Object): Object 100% (1/1)100% (15/15)100% (3/3)
getChanged (): Map 100% (1/1)100% (6/6)100% (1/1)
getDefault (Object): Object 100% (1/1)100% (5/5)100% (1/1)
isEmpty (): boolean 100% (1/1)100% (8/8)100% (1/1)
keySet (): Set 100% (1/1)100% (4/4)100% (1/1)
put (Object, Object): Object 100% (1/1)100% (44/44)100% (8/8)
putAll (Map): void 100% (1/1)100% (20/20)100% (4/4)
remove (Object): Object 100% (1/1)100% (17/17)100% (4/4)
size (): int 100% (1/1)100% (4/4)100% (1/1)
values (): Collection 100% (1/1)100% (24/24)100% (4/4)

1/*
2 Copyright (C) 2004 MySQL AB
3 
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License version 2 as 
6 published by the Free Software Foundation.
7 
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 GNU General Public License for more details.
12 
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16 
17 */
18package com.mysql.management.util;
19 
20import java.util.ArrayList;
21import java.util.Collection;
22import java.util.HashMap;
23import java.util.Iterator;
24import java.util.LinkedHashMap;
25import java.util.LinkedHashSet;
26import java.util.List;
27import java.util.Map;
28import java.util.Set;
29 
30/**
31 * Map which retains the first value a key is set to as a "default" until the
32 * key is removed
33 * 
34 * This class is final simply as a hint to the compiler, it may be un-finalized
35 * safely.
36 * 
37 * @author Eric Herman <eric@mysql.com>
38 * @version $Id: DefaultsMap.java,v 1.4 2005/07/27 23:41:27 eherman Exp $
39 */
40public final class DefaultsMap implements Map {
41 
42    private Map changed;
43 
44    private Map original;
45 
46    private Equals equals;
47 
48    public DefaultsMap() {
49        this.original = new LinkedHashMap();
50        this.changed = new LinkedHashMap();
51        this.equals = new Equals();
52    }
53 
54    public Map getChanged() {
55        return new HashMap(changed);
56    }
57 
58    public Object getDefault(Object key) {
59        return original.get(key);
60    }
61 
62    public void clear() {
63        changed.clear();
64        original.clear();
65    }
66 
67    public boolean containsKey(Object key) {
68        return original.containsKey(key);
69    }
70 
71    public boolean containsValue(Object value) {
72        for (Iterator iter = keySet().iterator(); iter.hasNext();) {
73            Object val = get(iter.next());
74            if (value == null) {
75                if (val == null) {
76                    return true;
77                }
78            } else {
79                if (value.equals(val)) {
80                    return true;
81                }
82            }
83        }
84        return false;
85    }
86 
87    public Set entrySet() {
88        Set entries = new LinkedHashSet();
89        for (Iterator iter = keySet().iterator(); iter.hasNext();) {
90            Object key = iter.next();
91            entries.add(new MapEntry(key, get(key)));
92        }
93        return entries;
94    }
95 
96    public Object get(Object key) {
97        if (changed.containsKey(key)) {
98            return changed.get(key);
99        }
100        return original.get(key);
101    }
102 
103    public boolean isEmpty() {
104        return original.size() == 0;
105    }
106 
107    public Set keySet() {
108        return original.keySet();
109    }
110 
111    public Object put(Object key, Object value) {
112        if (!original.containsKey(key)) {
113            return original.put(key, value);
114        }
115        Object originalVal = original.get(key);
116        if (!equals.nullSafe(originalVal, value)) {
117            return changed.put(key, value);
118        }
119        if (changed.containsKey(key)) {
120            return changed.remove(key);
121        }
122        return original.put(key, value);
123    }
124 
125    public void putAll(Map t) {
126        for (Iterator iter = t.entrySet().iterator(); iter.hasNext();) {
127            Map.Entry entry = (Map.Entry) iter.next();
128            put(entry.getKey(), entry.getValue());
129        }
130    }
131 
132    public Object remove(Object key) {
133        Object oldVal = original.remove(key);
134        if (changed.containsKey(key)) {
135            return changed.remove(key);
136        }
137        return oldVal;
138    }
139 
140    public int size() {
141        return original.size();
142    }
143 
144    public Collection values() {
145        List values = new ArrayList(original.size());
146        for (Iterator iter = keySet().iterator(); iter.hasNext();) {
147            values.add(get(iter.next()));
148        }
149        return values;
150    }
151}

[all classes][com.mysql.management.util]
EMMA 2.0.5312 (C) Vladimir Roubtsov