EMMA Coverage Report (generated Wed Oct 26 13:47:17 EDT 2011)
[all classes][org.jclouds.collect]

COVERAGE SUMMARY FOR SOURCE FILE [InputSupplierMap.java]

nameclass, %method, %block, %line, %
InputSupplierMap.java25%  (1/4)29%  (6/21)31%  (72/231)23%  (11.9/52)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class InputSupplierMap$EntrySet0%   (0/1)0%   (0/6)0%   (0/83)0%   (0/21)
InputSupplierMap$EntrySet (InputSupplierMap): void 0%   (0/1)0%   (0/6)0%   (0/1)
clear (): void 0%   (0/1)0%   (0/5)0%   (0/2)
contains (Object): boolean 0%   (0/1)0%   (0/36)0%   (0/9)
iterator (): Iterator 0%   (0/1)0%   (0/12)0%   (0/2)
remove (Object): boolean 0%   (0/1)0%   (0/20)0%   (0/6)
size (): int 0%   (0/1)0%   (0/4)0%   (0/1)
     
class InputSupplierMap$EntrySet$10%   (0/1)0%   (0/4)0%   (0/28)0%   (0/6)
InputSupplierMap$EntrySet$1 (InputSupplierMap$EntrySet, Iterator): void 0%   (0/1)0%   (0/9)0%   (0/1)
hasNext (): boolean 0%   (0/1)0%   (0/4)0%   (0/1)
next (): Map$Entry 0%   (0/1)0%   (0/11)0%   (0/2)
remove (): void 0%   (0/1)0%   (0/4)0%   (0/2)
     
class InputSupplierMap$EntrySet$1$10%   (0/1)0%   (0/3)0%   (0/25)0%   (0/6)
InputSupplierMap$EntrySet$1$1 (InputSupplierMap$EntrySet$1, Map$Entry): void 0%   (0/1)0%   (0/9)0%   (0/1)
getKey (): Object 0%   (0/1)0%   (0/4)0%   (0/1)
getValue (): Object 0%   (0/1)0%   (0/12)0%   (0/4)
     
class InputSupplierMap100% (1/1)75%  (6/8)76%  (72/95)57%  (11.9/21)
clear (): void 0%   (0/1)0%   (0/4)0%   (0/2)
entrySet (): Set 0%   (0/1)0%   (0/5)0%   (0/1)
remove (Object): Object 100% (1/1)65%  (13/20)23%  (0.9/4)
get (Object): Object 100% (1/1)75%  (18/24)40%  (2/5)
put (Object, Object): Object 100% (1/1)95%  (19/20)98%  (3/3)
InputSupplierMap (Map, Function): void 100% (1/1)100% (13/13)100% (4/4)
containsKey (Object): boolean 100% (1/1)100% (5/5)100% (1/1)
size (): int 100% (1/1)100% (4/4)100% (1/1)

1/**
2 * Licensed to jclouds, Inc. (jclouds) under one or more
3 * contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  jclouds licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *   http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied.  See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 
20package org.jclouds.collect;
21 
22import static com.google.common.base.Preconditions.checkNotNull;
23 
24import java.io.IOException;
25import java.util.AbstractMap;
26import java.util.AbstractSet;
27import java.util.Iterator;
28import java.util.Map;
29import java.util.Set;
30 
31import com.google.common.base.Function;
32import com.google.common.base.Throwables;
33import com.google.common.io.InputSupplier;
34 
35/**
36 * 
37 * 
38 * @author Adrian Cole
39 * 
40 */
41public class InputSupplierMap<K, V> extends AbstractMap<K, V> {
42   final Map<K, InputSupplier<V>> toMap;
43   final Function<V, InputSupplier<V>> putFunction;
44 
45   public InputSupplierMap(Map<K, InputSupplier<V>> toMap, Function<V, InputSupplier<V>> putFunction) {
46      this.toMap = checkNotNull(toMap);
47      this.putFunction = checkNotNull(putFunction);
48   }
49 
50   @Override
51   public int size() {
52      return toMap.size();
53   }
54 
55   @Override
56   public V put(K key, V value) {
57      V old = get(key);
58      toMap.put(key, value != null ? putFunction.apply(value) : null);
59      return old;
60   }
61 
62   @Override
63   public boolean containsKey(Object key) {
64      return toMap.containsKey(key);
65   }
66 
67   @Override
68   public V get(Object key) {
69      InputSupplier<V> value = toMap.get(key);
70      try {
71         return (value != null || toMap.containsKey(key)) ? value.getInput() : null;
72      } catch (IOException e) {
73         Throwables.propagate(e);
74         return null;
75      }
76   }
77 
78   @Override
79   public V remove(Object key) {
80      try {
81         return toMap.containsKey(key) ? toMap.remove(key).getInput() : null;
82      } catch (IOException e) {
83         Throwables.propagate(e);
84         return null;
85      }
86   }
87 
88   @Override
89   public void clear() {
90      toMap.clear();
91   }
92 
93   @Override
94   public Set<Entry<K, V>> entrySet() {
95      return new EntrySet();
96 
97   }
98 
99   class EntrySet extends AbstractSet<Entry<K, V>> {
100      @Override
101      public int size() {
102         return InputSupplierMap.this.size();
103      }
104 
105      @Override
106      public Iterator<Entry<K, V>> iterator() {
107         final Iterator<java.util.Map.Entry<K, InputSupplier<V>>> mapIterator = toMap.entrySet().iterator();
108 
109         return new Iterator<Entry<K, V>>() {
110            public boolean hasNext() {
111               return mapIterator.hasNext();
112            }
113 
114            public Entry<K, V> next() {
115               final java.util.Map.Entry<K, InputSupplier<V>> entry = mapIterator.next();
116               return new AbstractMapEntry<K, V>() {
117                  @Override
118                  public K getKey() {
119                     return entry.getKey();
120                  }
121 
122                  @Override
123                  public V getValue() {
124                     try {
125                        return entry.getValue().getInput();
126                     } catch (IOException e) {
127                        Throwables.propagate(e);
128                        return null;
129                     }
130                  }
131               };
132            }
133 
134            public void remove() {
135               mapIterator.remove();
136            }
137         };
138      }
139 
140      @Override
141      public void clear() {
142         toMap.clear();
143      }
144 
145      @Override
146      public boolean contains(Object o) {
147         if (!(o instanceof Entry)) {
148            return false;
149         }
150         Entry<?, ?> entry = (Entry<?, ?>) o;
151         Object entryKey = entry.getKey();
152         Object entryValue = entry.getValue();
153         V mapValue = InputSupplierMap.this.get(entryKey);
154         if (mapValue != null) {
155            return mapValue.equals(entryValue);
156         }
157         return entryValue == null && containsKey(entryKey);
158      }
159 
160      @Override
161      public boolean remove(Object o) {
162         if (contains(o)) {
163            Entry<?, ?> entry = (Entry<?, ?>) o;
164            Object key = entry.getKey();
165            toMap.remove(key);
166            return true;
167         }
168         return false;
169      }
170   }
171}

[all classes][org.jclouds.collect]
EMMA 2.0.5312 (C) Vladimir Roubtsov