{@inheritDoc}
(Map map)
| 275 | |
| 276 | /** {@inheritDoc} */ |
| 277 | @Override |
| 278 | public void putAll(Map map) { |
| 279 | int oldSize = size(); |
| 280 | if (map != null) { |
| 281 | List<PropertyEvent> events = new ArrayList<PropertyEvent>(); |
| 282 | for (Object o : map.entrySet()) { |
| 283 | Entry entry = (Entry) o; |
| 284 | |
| 285 | String key = String.valueOf(entry.getKey()); |
| 286 | Object newValue = entry.getValue(); |
| 287 | Object oldValue = null; |
| 288 | |
| 289 | boolean newKey = !delegate.containsKey(key); |
| 290 | if (test != null) { |
| 291 | oldValue = delegate.put(key, newValue); |
| 292 | Object result = null; |
| 293 | if (test.getMaximumNumberOfParameters() == 2) { |
| 294 | result = test.call(key, newValue); |
| 295 | } else { |
| 296 | result = test.call(newValue); |
| 297 | } |
| 298 | if (result instanceof Boolean && (Boolean) result) { |
| 299 | if (newKey) { |
| 300 | events.add(new PropertyAddedEvent(this, key, newValue)); |
| 301 | } else if (oldValue != newValue) { |
| 302 | events.add(new PropertyUpdatedEvent(this, key, oldValue, newValue)); |
| 303 | } |
| 304 | } |
| 305 | } else { |
| 306 | oldValue = delegate.put(key, newValue); |
| 307 | if (newKey) { |
| 308 | events.add(new PropertyAddedEvent(this, key, newValue)); |
| 309 | } else if (oldValue != newValue) { |
| 310 | events.add(new PropertyUpdatedEvent(this, key, oldValue, newValue)); |
| 311 | } |
| 312 | } |
| 313 | } |
| 314 | if (!events.isEmpty()) { |
| 315 | fireMultiPropertyEvent(events); |
| 316 | fireSizeChangedEvent(oldSize, size()); |
| 317 | } |
| 318 | } |
| 319 | } |
| 320 | |
| 321 | /** {@inheritDoc} */ |
| 322 | @Override |
no test coverage detected