@Override public boolean initTransaction(final ModelTransaction tx) { final List<QueryResult<ImmutableNode>> results = resolver.resolveKey(tx.getQueryRoot(), key, tx.getCurrentData()); return initializeClearTransaction(tx, results); } }, selector, resolver);
resolver.resolveKey(tx.getQueryRoot(), key, tx.getCurrentData()); if (results.size() == 1) resolver.resolveAddKey(tx.getQueryRoot(), key, tx.getCurrentData()); if (addData.isAttribute())
@Override public boolean initTransaction(final ModelTransaction tx) { boolean added = false; final NodeUpdateData<ImmutableNode> updateData = resolver.resolveUpdateKey(tx.getQueryRoot(), key, value, tx.getCurrentData()); if (!updateData.getNewValues().isEmpty()) { initializeAddTransaction(tx, key, updateData.getNewValues(), resolver); added = true; } final boolean cleared = initializeClearTransaction(tx, updateData.getRemovedNodes()); final boolean updated = initializeUpdateTransaction(tx, updateData.getChangedValues()); return added || cleared || updated; } }, selector, resolver);
/** * Initializes a transaction for an add operation. * * @param tx the transaction to be initialized * @param key the key * @param values the collection with node values * @param resolver the {@code NodeKeyResolver} */ private void initializeAddTransaction(final ModelTransaction tx, final String key, final Iterable<?> values, final NodeKeyResolver<ImmutableNode> resolver) { final NodeAddData<ImmutableNode> addData = resolver.resolveAddKey(tx.getQueryRoot(), key, tx.getCurrentData()); if (addData.isAttribute()) { addAttributeProperty(tx, addData, values); } else { addNodeProperty(tx, addData, values); } }
final TreeData currentStructure = tx.getCurrentData(); final List<QueryResult<ImmutableNode>> results = resolver.resolveKey( tx.getQueryRoot(), key, currentStructure); removedElements.clear(); removedElements.addAll(results);