private Map<InstanceIdentifier, DataContainer> readAll(final Iterable<Identifiable> dataList, final InstanceIdentifier parentPath) { Builder<InstanceIdentifier, DataContainer> result = ImmutableMap .<InstanceIdentifier, DataContainer> builder(); for (Identifiable item : dataList) { @SuppressWarnings("unchecked") InstanceIdentifier childPath = parentPath.child(getChildType(), item.getKey()); result.put(childPath, (DataContainer) item); } return result.build(); }
@Override @SuppressWarnings("unchecked") protected InstanceIdentifier<D> getSpecificId(@Nonnull final InstanceIdentifier<? extends DataObject> currentId, @Nonnull final D current) { final InstanceIdentifier<D> id = (InstanceIdentifier<D>) currentId; // Make sure the key is present if (isWildcarded(id)) { return RWUtils.replaceLastInId(id, new InstanceIdentifier.IdentifiableItem<>(id.getTargetType(), current.key())); } else { return id; } }
@SuppressWarnings("unchecked") private Map<InstanceIdentifier, DataContainer> readUsingIdentifiableItem(final Iterable<Identifiable> dataList, final IdentifiableItem childArgument, final InstanceIdentifier parentPath) { final Identifier<?> key = childArgument.getKey(); for (Identifiable item : dataList) { if (key.equals(item.getKey()) && item instanceof DataContainer) { checkState(childArgument.getType().isInstance(item), "Found child is not instance of requested type"); InstanceIdentifier childPath = parentPath .child(childArgument.getType(), item.getKey()); return Collections.singletonMap(childPath, (DataContainer) item); } } return Collections.emptyMap(); }
/** * Fetch a keyed list of {@link DataObject} instances. * * @param m A {@link Method} associated with a getter method. * @param list A list of keyed {@link DataObject} instances. * @return An object that contains fetched {@link DataObject} instances. */ private Object fetchKeyedDataObjectList( Method m, @Nonnull List<Identifiable<?>> list) { Map<Object, Object> map = new HashMap<>(); for (Identifiable<?> elem: list) { // An element in a keyed list must be a DataObject. @SuppressWarnings("unchecked") DataObject data = (DataObject)elem; Identifier<?> key = elem.getKey(); if (map.put(key, new DataObjectIdentity(data)) != null) { String msg = String.format( "Keyed list in DataObject should have no duplicate: " + "type=%s, method=%s, key=%s, value=%s", dataType, m.getName(), key, elem); throw new IllegalArgumentException(msg); } } return map; }