- protected boolean isAffectedBy(InstanceIdentifier<? extends DataObject> key,
- Set<InstanceIdentifier<? extends DataObject>> paths) {
- if (paths.contains(key)) {
- return true;
- }
- for (InstanceIdentifier<?> path : paths) {
- if (key.containsWildcarded(path)) {
- return true;
+ protected Predicate<InstanceIdentifier<? extends DataObject>> createContainsPredicate(final
+ InstanceIdentifier<? extends DataObject> key) {
+ return new ContainsWildcarded(key);
+ }
+
+ @Override
+ protected Predicate<InstanceIdentifier<? extends DataObject>> createIsContainedPredicate(final
+ InstanceIdentifier<? extends DataObject> key) {
+ return new IsContainedWildcarded(key);
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Override
+ protected Map<InstanceIdentifier<? extends DataObject>, DataObject> deepGetBySubpath(
+ Map<InstanceIdentifier<? extends DataObject>, DataObject> dataSet,
+ InstanceIdentifier<? extends DataObject> path) {
+ Builder<InstanceIdentifier<? extends DataObject>, DataObject> builder = ImmutableMap.builder();
+ Map<InstanceIdentifier<? extends DataObject>, DataObject> potential = Maps.filterKeys(dataSet, createIsContainedPredicate(path));
+ for(Entry<InstanceIdentifier<? extends DataObject>, DataObject> entry : potential.entrySet()) {
+ try {
+ builder.putAll(DataObjectReadingUtil.readData(entry.getValue(),(InstanceIdentifier)entry.getKey(),path));
+ } catch (Exception e) {
+ // FIXME : Log exception;