MRI version bump for Aluminium
[genius.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / genius / utils / batching / ResourceBatchingManager.java
index 80c4b19d9003ee98370b435916dac9581911fc82..b0969ebabdba24062277a906864fa9749455a3ae 100644 (file)
@@ -159,13 +159,13 @@ public class ResourceBatchingManager implements AutoCloseable {
      * @return a CheckFuture containing the result of the read
      */
     public <T extends DataObject> FluentFuture<Optional<T>> read(
-            String resourceType, InstanceIdentifier<T> identifier) {
+            String resourceType, InstanceIdentifier<T> identifier) throws InterruptedException, ExecutionException {
         BlockingQueue<ActionableResource> queue = getQueue(resourceType);
         if (queue != null) {
             if (pendingModificationByResourceType.get(resourceType).contains(identifier)) {
                 SettableFuture<Optional<T>> readFuture = SettableFuture.create();
                 queue.add(new ActionableReadResource<>(identifier, readFuture));
-                return FluentFuture.from(Futures.makeChecked(readFuture, ReadFailedException.MAPPER));
+                return FluentFutures.immediateFluentFuture(readFuture.get());
             } else {
                 ResourceHandler resourceHandler = resourceHandlerMapper.get(resourceType).getRight();
                 try (ReadTransaction tx = resourceHandler.getResourceBroker().newReadOnlyTransaction()) {
@@ -415,15 +415,15 @@ public class ResourceBatchingManager implements AutoCloseable {
                     WriteTransaction writeTransaction = broker.newWriteOnlyTransaction();
                     switch (object.getAction()) {
                         case SubTransaction.CREATE:
-                            writeTransaction.put(dsType, object.getInstanceIdentifier(),
-                                    (DataObject) object.getInstance(), true);
+                            writeTransaction.mergeParentStructurePut(dsType, object.getInstanceIdentifier(),
+                                    (DataObject) object.getInstance());
                             break;
                         case SubTransaction.DELETE:
                             writeTransaction.delete(dsType, object.getInstanceIdentifier());
                             break;
                         case SubTransaction.UPDATE:
-                            writeTransaction.merge(dsType, object.getInstanceIdentifier(),
-                                    (DataObject) object.getInstance(), true);
+                            writeTransaction.mergeParentStructureMerge(dsType, object.getInstanceIdentifier(),
+                                    (DataObject) object.getInstance());
                             break;
                         default:
                             LOG.error("Unable to determine Action for transaction object with id {}",