public StringKeyObjectValueEntry(Entry<String, Object> entry) { this.key = entry.getKey(); Object object = entry.getValue(); if( object != null ) { this.value = StringKeyObjectValueMapXmlAdapter.serializeObject(object, key); this.className = object.getClass().getName(); } }
@Override public void putAll(Map<? extends String, ? extends Object> m) { for( Entry<?, ?> entry : m.entrySet() ) { StringKeyObjectValueEntry newEntry = createJaxbStringObjectMapEntry(entry.getValue(), entry.getKey().toString()); entries.add(newEntry); } }
@Override public Object get(Object key) { if( key == null ) { return null; } for( StringKeyObjectValueEntry entry : entries ) { if( key != null && key.equals(entry.getKey())) { return deserializeObject(entry.getBytes(), entry.getClassName(), key.toString()); } } return null; }
@Override public Object remove(Object key) { Iterator<StringKeyObjectValueEntry> iter = entries.iterator(); while( iter.hasNext() ) { StringKeyObjectValueEntry entry = iter.next(); String entryKey = entry.getKey(); if( key.equals(entryKey) ) { iter.remove(); return deserializeObject(entry.getBytes(), entry.getClassName(), entry.getKey()); } } return null; }
static StringKeyObjectValueEntry createJaxbStringObjectMapEntry(Object value, String key) { byte [] content = null; String className = null; if( value != null ) { className = value.getClass().getName(); content = serializeObject(value, key); } return new StringKeyObjectValueEntry(key, className, content); }
@Override public Collection<Object> values() { List<Object> values = new ArrayList<Object>(); for( StringKeyObjectValueEntry entry : entries ) { Object newVal = deserializeObject(entry.getBytes(), entry.getClassName(), entry.getKey()); values.add(newVal); } return values; }
@Override public Object put(String key, Object value) { Object oldVal = get(key); StringKeyObjectValueEntry newEntry = createJaxbStringObjectMapEntry(value, key); entries.add(newEntry); return oldVal; }
field.set(obj, "Object"); } else if( fieldType.equals(byte[].class) ) { byte [] value = StringKeyObjectValueMapXmlAdapter.serializeObject("Object", "test"); field.set(obj, value); } else {
@Override public Map<String, Object> unmarshal(StringKeyObjectValueMap xmlMap) { if( xmlMap == null ) { return null; } Map<String, Object> map = new HashMap<String, Object>(); for( StringKeyObjectValueEntry xmlEntry : xmlMap.entries ) { String key = xmlEntry.getKey(); Object value = deserializeObject(xmlEntry.getBytes(), xmlEntry.getClassName(), key); map.put(key, value); } return map; }
@Override public StringKeyObjectValueMap marshal(Map<String, Object> map) throws Exception { if( map == null ) { return null; } StringKeyObjectValueMap xmlMap = new StringKeyObjectValueMap(); for(Entry<String, Object> entry : map.entrySet()) { Object value = entry.getValue(); String key = entry.getKey(); StringKeyObjectValueEntry xmlEntry = createJaxbStringObjectMapEntry(value, key); xmlMap.addEntry(xmlEntry); } return xmlMap; }
@Override public boolean containsValue(Object value) { if( value == null ) { return false; } for( StringKeyObjectValueEntry entry : entries ) { Object entryVal = deserializeObject(entry.getBytes(), entry.getClassName(), entry.getKey()); if( value.equals(entryVal) ) { return true; } } return false; }
@Override public Set<java.util.Map.Entry<String, Object>> entrySet() { Set<java.util.Map.Entry<String, Object>> entrySet = new HashSet<Map.Entry<String,Object>>(); for( StringKeyObjectValueEntry entry : entries ) { Object newVal = deserializeObject(entry.getBytes(), entry.getClassName(), entry.getKey()); String key = entry.getKey(); Entry<String, Object> newEntry = new EntryImpl(key, newVal); entrySet.add(newEntry); } return entrySet; }