Follow-up to protobuff deprecation
[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.protobuff.messages.transaction.ShardTransactionMessages;
16
17 public class CreateTransaction extends VersionedExternalizableMessage {
18     private static final long serialVersionUID = 1L;
19
20     private String transactionId;
21     private int transactionType;
22     private String transactionChainId;
23
24     public CreateTransaction() {
25     }
26
27     public CreateTransaction(String transactionId, int transactionType, String transactionChainId,
28             short version) {
29         super(version);
30         this.transactionId = Preconditions.checkNotNull(transactionId);
31         this.transactionType = transactionType;
32         this.transactionChainId = transactionChainId != null ? transactionChainId : "";
33     }
34
35     public String getTransactionId() {
36         return transactionId;
37     }
38
39     public int getTransactionType() {
40         return transactionType;
41     }
42
43     public String getTransactionChainId() {
44         return transactionChainId;
45     }
46
47     @Override
48     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
49         super.readExternal(in);
50         transactionId = in.readUTF();
51         transactionType = in.readInt();
52         transactionChainId = in.readUTF();
53     }
54
55     @Override
56     public void writeExternal(ObjectOutput out) throws IOException {
57         super.writeExternal(out);
58         out.writeUTF(transactionId);
59         out.writeInt(transactionType);
60         out.writeUTF(transactionChainId);
61     }
62
63     @Deprecated
64     @Override
65     protected Object newLegacySerializedInstance() {
66         return ShardTransactionMessages.CreateTransaction.newBuilder().setTransactionId(transactionId)
67                 .setTransactionType(transactionType).setTransactionChainId(transactionChainId)
68                 .setMessageVersion(getVersion()).build();
69     }
70
71     @Override
72     public String toString() {
73         return "CreateTransaction [transactionId=" + transactionId + ", transactionType=" + transactionType
74                 + ", transactionChainId=" + transactionChainId + "]";
75     }
76
77     public static CreateTransaction fromSerializable(Object message) {
78         if(message instanceof CreateTransaction) {
79             return (CreateTransaction)message;
80         } else {
81             ShardTransactionMessages.CreateTransaction createTransaction =
82                     (ShardTransactionMessages.CreateTransaction) message;
83             return new CreateTransaction(createTransaction.getTransactionId(),
84                     createTransaction.getTransactionType(), createTransaction.getTransactionChainId(),
85                     (short)createTransaction.getMessageVersion());
86         }
87     }
88
89     public static boolean isSerializedType(Object message) {
90         return message instanceof CreateTransaction || message instanceof ShardTransactionMessages.CreateTransaction;
91     }
92 }