Deprecate CreateTransaction protobuff message
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / messages / CreateTransaction.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.controller.cluster.datastore.messages;
10
11 import com.google.common.base.Preconditions;
12 import java.io.IOException;
13 import java.io.ObjectInput;
14 import java.io.ObjectOutput;
15 import org.opendaylight.controller.cluster.datastore.DataStoreVersions;
16 import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages;
17
18 public class CreateTransaction extends VersionedExternalizableMessage {
19     private static final long serialVersionUID = 1L;
20
21     private String transactionId;
22     private int transactionType;
23     private String transactionChainId;
24
25     public CreateTransaction() {
26     }
27
28     public CreateTransaction(String transactionId, int transactionType, String transactionChainId,
29             short version) {
30         super(version);
31         this.transactionId = Preconditions.checkNotNull(transactionId);
32         this.transactionType = transactionType;
33         this.transactionChainId = transactionChainId != null ? transactionChainId : "";
34     }
35
36     public String getTransactionId() {
37         return transactionId;
38     }
39
40     public int getTransactionType() {
41         return transactionType;
42     }
43
44     public String getTransactionChainId() {
45         return transactionChainId;
46     }
47
48     @Override
49     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
50         super.readExternal(in);
51         transactionId = in.readUTF();
52         transactionType = in.readInt();
53         transactionChainId = in.readUTF();
54     }
55
56     @Override
57     public void writeExternal(ObjectOutput out) throws IOException {
58         super.writeExternal(out);
59         out.writeUTF(transactionId);
60         out.writeInt(transactionType);
61         out.writeUTF(transactionChainId);
62     }
63
64     @Override
65     public Object toSerializable() {
66         if(getVersion() >= DataStoreVersions.BORON_VERSION) {
67             return this;
68         } else {
69             return ShardTransactionMessages.CreateTransaction.newBuilder()
70                 .setTransactionId(transactionId).setTransactionType(transactionType)
71                 .setTransactionChainId(transactionChainId).setMessageVersion(getVersion()).build();
72         }
73     }
74
75     @Override
76     public String toString() {
77         return "CreateTransaction [transactionId=" + transactionId + ", transactionType=" + transactionType
78                 + ", transactionChainId=" + transactionChainId + "]";
79     }
80
81     public static CreateTransaction fromSerializable(Object message) {
82         if(message instanceof CreateTransaction) {
83             return (CreateTransaction)message;
84         } else {
85             ShardTransactionMessages.CreateTransaction createTransaction =
86                     (ShardTransactionMessages.CreateTransaction) message;
87             return new CreateTransaction(createTransaction.getTransactionId(),
88                     createTransaction.getTransactionType(), createTransaction.getTransactionChainId(),
89                     (short)createTransaction.getMessageVersion());
90         }
91     }
92
93     public static boolean isSerializedType(Object message) {
94         return message instanceof CreateTransaction || message instanceof ShardTransactionMessages.CreateTransaction;
95     }
96 }