X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fmodification%2FMutableCompositeModification.java;h=1a005d856e30ceb3b9cd359b5fd14ef42bc14cf0;hb=1e59825dbec7b354d76bd7efa6a61e4ad802c802;hp=983ac860e1e458f068b2cbf5df7575d38e7ba6b2;hpb=5ff14f6824d1a831b9c1def6b820a2516fed435f;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModification.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModification.java index 983ac860e1..1a005d856e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModification.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModification.java @@ -8,28 +8,72 @@ package org.opendaylight.controller.cluster.datastore.modification; +import org.opendaylight.controller.protobuff.messages.persistent.PersistentMessages; import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class MutableCompositeModification implements CompositeModification { - private final List modifications = new ArrayList<>(); +/** + * MutableCompositeModification is just a mutable version of a + * CompositeModification {@link org.opendaylight.controller.cluster.datastore.modification.MutableCompositeModification#addModification(Modification)} + */ +public class MutableCompositeModification + implements CompositeModification { + + private static final long serialVersionUID = 1163377899140186790L; + + private final List modifications = new ArrayList<>(); + + @Override + public void apply(DOMStoreWriteTransaction transaction) { + for (Modification modification : modifications) { + modification.apply(transaction); + } + } + + /** + * Add a new Modification to the list of Modifications represented by this + * composite + * + * @param modification + */ + public void addModification(Modification modification) { + modifications.add(modification); + } + + public List getModifications() { + return Collections.unmodifiableList(modifications); + } - @Override - public void apply(DOMStoreWriteTransaction transaction) { - for(Modification modification : modifications){ - modification.apply(transaction); + @Override public Object toSerializable() { + PersistentMessages.CompositeModification.Builder builder = + PersistentMessages.CompositeModification.newBuilder(); + + for (Modification m : modifications) { + builder.addModification( + (PersistentMessages.Modification) m.toSerializable()); + } + + return builder.build(); } - } - public void addModification(Modification modification){ - modifications.add(modification); - } + public static MutableCompositeModification fromSerializable(Object serializable, SchemaContext schemaContext){ + PersistentMessages.CompositeModification o = (PersistentMessages.CompositeModification) serializable; + MutableCompositeModification compositeModification = new MutableCompositeModification(); - public List getModifications(){ - return Collections.unmodifiableList(modifications); - } + for(PersistentMessages.Modification m : o.getModificationList()){ + if(m.getType().equals(DeleteModification.class.toString())){ + compositeModification.addModification(DeleteModification.fromSerializable(m)); + } else if(m.getType().equals(WriteModification.class.toString())){ + compositeModification.addModification(WriteModification.fromSerializable(m, schemaContext)); + } else if(m.getType().equals(MergeModification.class.toString())){ + compositeModification.addModification(MergeModification.fromSerializable(m, schemaContext)); + } + } + return compositeModification; + } }