001    package com.mockrunner.mock.connector.cci;
002    
003    import java.util.Collection;
004    import java.util.HashMap;
005    import java.util.Map;
006    import java.util.Set;
007    
008    import javax.resource.cci.MappedRecord;
009    
010    import com.mockrunner.base.NestedApplicationException;
011    
012    /**
013     * Mock implementation of <code>MappedRecord</code>.
014     */
015    public class MockMappedRecord extends MockRecord implements MappedRecord
016    {
017        private Map backingMap;
018        
019        public MockMappedRecord()
020        {
021            this("MockrunnerGenericMappedRecord");
022        }
023        
024        public MockMappedRecord(String name)
025        {
026            this(name, name);
027        }
028    
029        public MockMappedRecord(String name, String description)
030        {
031            super(name, description);
032            backingMap = new HashMap();
033        }
034        
035        public int size()
036        {
037            return backingMap.size();
038        }
039    
040        public boolean isEmpty()
041        {
042            return backingMap.isEmpty();
043        }
044    
045        public boolean containsKey(Object key)
046        {
047            return backingMap.containsKey(key);
048        }
049    
050        public boolean containsValue(Object value)
051        {
052            return backingMap.containsValue(value);
053        }
054    
055        public Object get(Object key)
056        {
057            return backingMap.get(key);
058        }
059    
060        public Object put(Object key, Object value)
061        {
062            return backingMap.put(key, value);
063        }
064    
065        public Object remove(Object key)
066        {
067            return backingMap.remove(key);
068        }
069    
070        public void putAll(Map map)
071        {
072            backingMap.putAll(map);
073        }
074    
075        public void clear()
076        {
077            backingMap.clear();
078        }
079    
080        public Set keySet()
081        {
082            return backingMap.keySet();
083        }
084    
085        public Collection values()
086        {
087            return backingMap.values();
088        }
089    
090        public Set entrySet()
091        {
092            return backingMap.entrySet();
093        }
094    
095        public boolean equals(Object object)
096        {
097            if(!super.equals(object)) return false;
098            MockMappedRecord other = (MockMappedRecord)object;
099            return backingMap.equals(other.backingMap);
100        }
101    
102        public int hashCode()
103        {
104            return super.hashCode() * 31 + backingMap.hashCode();
105        }
106    
107        public String toString()
108        {
109            return super.toString() + "\n" + backingMap.toString();
110        }
111    
112        public Object clone()
113        {
114            try
115            {
116                MockMappedRecord clone = (MockMappedRecord)super.clone();
117                clone.backingMap = new HashMap(this.backingMap);
118                return clone;
119            } 
120            catch(Exception exc)
121            {
122                throw new NestedApplicationException(exc);
123            }
124        }
125    }