Optimize TransactionProxy for write-only transactions
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / identifiers / ShardTransactionIdentifier.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.identifiers;
10
11 import com.google.common.base.Preconditions;
12
13 public class ShardTransactionIdentifier {
14     private final String remoteTransactionId;
15     private final String stringRepresentation;
16
17     public ShardTransactionIdentifier(String remoteTransactionId) {
18         this.remoteTransactionId = Preconditions.checkNotNull(remoteTransactionId,
19                 "remoteTransactionId should not be null");
20
21         stringRepresentation = new StringBuilder(remoteTransactionId.length() + 6).append("shard-").
22                 append(remoteTransactionId).toString();
23     }
24
25     public String getRemoteTransactionId() {
26         return remoteTransactionId;
27     }
28
29     @Override
30     public boolean equals(Object o) {
31         if (this == o) {
32             return true;
33         }
34         if (o == null || getClass() != o.getClass()) {
35             return false;
36         }
37
38         ShardTransactionIdentifier that = (ShardTransactionIdentifier) o;
39
40         if (!remoteTransactionId.equals(that.remoteTransactionId)) {
41             return false;
42         }
43
44         return true;
45     }
46
47     @Override
48     public int hashCode() {
49         return remoteTransactionId.hashCode();
50     }
51
52     @Override public String toString() {
53         return stringRepresentation;
54     }
55
56 }