diff --git a/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/util/ChangePackageUtil.java b/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/util/ChangePackageUtil.java index d88d77ca0..6aa7b88d8 100644 --- a/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/util/ChangePackageUtil.java +++ b/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/util/ChangePackageUtil.java @@ -84,19 +84,17 @@ public static Iterator splitChangePackage(final AbstractC private void init() { int leafSizeCounter = 0; + // it is not necessary to close the operations iterable, because the iterator already does this + // in hasNext() if there are no more operations final ESCloseableIterable operations = changePackage.operations(); - try { - for (final AbstractOperation operation : operations.iterable()) { - final int countLeafOperations = countLeafOperations(operation); - leafSizeCounter += countLeafOperations; - if (leafSizeCounter < changePackageFragmentSize) { - continue; - } - leafSizeCounter = 0; - count += 1; + for (final AbstractOperation operation : operations.iterable()) { + final int countLeafOperations = countLeafOperations(operation); + leafSizeCounter += countLeafOperations; + if (leafSizeCounter < changePackageFragmentSize) { + continue; } - } finally { - operations.close(); + leafSizeCounter = 0; + count += 1; } if (leafSizeCounter != 0 || count == 0) { count += 1; @@ -118,9 +116,8 @@ public boolean hasNext() { envelope.setFragmentCount(count); } - boolean iteratorHasNext = false; while (countLeafOperations(envelope.getFragment()) < changePackageFragmentSize - && (iteratorHasNext = operationsIterator.hasNext())) { + && operationsIterator.hasNext()) { final AbstractOperation op = operationsIterator.next(); envelope.getFragment().add(ModelUtil.clone(op)); @@ -128,10 +125,6 @@ public boolean hasNext() { envelope.setFragmentIndex(fragmentIndex); - if (!iteratorHasNext) { - operationsIterable.close(); - } - if (!envelope.getFragment().isEmpty() || fragmentIndex == 0) { return true; }