2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.cluster.datastore.modification;
11 import org.opendaylight.controller.protobuff.messages.persistent.PersistentMessages;
12 import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction;
13 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
15 import java.util.ArrayList;
16 import java.util.Collections;
17 import java.util.List;
20 * MutableCompositeModification is just a mutable version of a
21 * CompositeModification {@link org.opendaylight.controller.cluster.datastore.modification.MutableCompositeModification#addModification(Modification)}
23 public class MutableCompositeModification
24 implements CompositeModification {
26 private static final long serialVersionUID = 1163377899140186790L;
28 private final List<Modification> modifications = new ArrayList<>();
31 public void apply(DOMStoreWriteTransaction transaction) {
32 for (Modification modification : modifications) {
33 modification.apply(transaction);
38 * Add a new Modification to the list of Modifications represented by this
43 public void addModification(Modification modification) {
44 modifications.add(modification);
47 public List<Modification> getModifications() {
48 return Collections.unmodifiableList(modifications);
51 @Override public Object toSerializable() {
52 PersistentMessages.CompositeModification.Builder builder =
53 PersistentMessages.CompositeModification.newBuilder();
55 builder.setTimeStamp(System.nanoTime());
57 for (Modification m : modifications) {
58 builder.addModification(
59 (PersistentMessages.Modification) m.toSerializable());
62 return builder.build();
65 public static MutableCompositeModification fromSerializable(Object serializable, SchemaContext schemaContext){
66 PersistentMessages.CompositeModification o = (PersistentMessages.CompositeModification) serializable;
67 MutableCompositeModification compositeModification = new MutableCompositeModification();
69 for(PersistentMessages.Modification m : o.getModificationList()){
70 if(m.getType().equals(DeleteModification.class.toString())){
71 compositeModification.addModification(DeleteModification.fromSerializable(m));
72 } else if(m.getType().equals(WriteModification.class.toString())){
73 compositeModification.addModification(WriteModification.fromSerializable(m, schemaContext));
74 } else if(m.getType().equals(MergeModification.class.toString())){
75 compositeModification.addModification(MergeModification.fromSerializable(m, schemaContext));
79 return compositeModification;