import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ForwardingObject;
import java.io.IOException;
import org.opendaylight.controller.cluster.datastore.node.utils.transformer.NormalizedNodePruner;
import org.opendaylight.controller.cluster.datastore.util.AbstractDataTreeModificationCursor;
/**
* The PruningDataTreeModification first removes all entries from the data which do not belong in the schemaContext
- * before delegating it to the actual DataTreeModification
+ * before delegating it to the actual DataTreeModification.
*/
-public class PruningDataTreeModification implements DataTreeModification {
+public class PruningDataTreeModification extends ForwardingObject implements DataTreeModification {
private static final Logger LOG = LoggerFactory.getLogger(PruningDataTreeModification.class);
private DataTreeModification delegate;
private final DataTree dataTree;
public PruningDataTreeModification(DataTreeModification delegate, DataTree dataTree, SchemaContext schemaContext) {
- this.delegate = delegate;
- this.dataTree = dataTree;
- this.schemaContext = schemaContext;
+ this.delegate = Preconditions.checkNotNull(delegate);
+ this.dataTree = Preconditions.checkNotNull(dataTree);
+ this.schemaContext = Preconditions.checkNotNull(schemaContext);
+ }
+
+ @Override
+ public DataTreeModification delegate() {
+ return delegate;
}
@Override
public void delete(YangInstanceIdentifier yangInstanceIdentifier) {
try {
delegate.delete(yangInstanceIdentifier);
- } catch(SchemaValidationFailedException e){
+ } catch (SchemaValidationFailedException e) {
LOG.warn("Node at path : {} does not exist ignoring delete", yangInstanceIdentifier);
}
}
@Override
public void merge(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
try {
- if(YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)){
+ if (YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)) {
pruneAndMergeNode(yangInstanceIdentifier, normalizedNode);
} else {
delegate.merge(yangInstanceIdentifier, normalizedNode);
}
- } catch (SchemaValidationFailedException e){
+ } catch (SchemaValidationFailedException e) {
LOG.warn("Node at path {} was pruned during merge due to validation error: {}",
yangInstanceIdentifier, e.getMessage());
private void pruneAndMergeNode(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
NormalizedNode<?,?> pruned = pruneNormalizedNode(yangInstanceIdentifier, normalizedNode);
- if(pruned != null) {
+ if (pruned != null) {
delegate.merge(yangInstanceIdentifier, pruned);
}
}
@Override
public void write(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
try {
- if(YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)){
+ if (YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)) {
pruneAndWriteNode(yangInstanceIdentifier, normalizedNode);
} else {
delegate.write(yangInstanceIdentifier, normalizedNode);
}
- } catch (SchemaValidationFailedException e){
+ } catch (SchemaValidationFailedException e) {
LOG.warn("Node at path : {} was pruned during write due to validation error: {}",
yangInstanceIdentifier, e.getMessage());
private void pruneAndWriteNode(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
NormalizedNode<?,?> pruned = pruneNormalizedNode(yangInstanceIdentifier, normalizedNode);
- if(pruned != null) {
+ if (pruned != null) {
delegate.write(yangInstanceIdentifier, pruned);
}
}
return pruner.normalizedNode();
}
- public DataTreeModification getResultingModification(){
- return delegate;
- }
-
private static class PruningDataTreeModificationCursor extends AbstractDataTreeModificationCursor {
private final DataTreeModification toModification;
private final PruningDataTreeModification pruningModification;
public void write(PathArgument child, NormalizedNode<?, ?> data) {
YangInstanceIdentifier path = current().node(child);
NormalizedNode<?, ?> prunedNode = pruningModification.pruneNormalizedNode(path, data);
- if(prunedNode != null) {
+ if (prunedNode != null) {
toModification.write(path, prunedNode);
}
}
public void merge(PathArgument child, NormalizedNode<?, ?> data) {
YangInstanceIdentifier path = current().node(child);
NormalizedNode<?, ?> prunedNode = pruningModification.pruneNormalizedNode(path, data);
- if(prunedNode != null) {
+ if (prunedNode != null) {
toModification.merge(path, prunedNode);
}
}
public void delete(PathArgument child) {
try {
toModification.delete(current().node(child));
- } catch(SchemaValidationFailedException e) {
+ } catch (SchemaValidationFailedException e) {
// Ignoring since we would've already logged this in the call to the original modification.
}
}