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.identifiers;
11 import com.google.common.base.Preconditions;
13 public class TransactionIdentifier {
14 protected static final String TX_SEPARATOR = "-txn-";
16 protected String getMemberName() {
20 protected long getCounter() {
24 private final String memberName;
25 private final long counter;
26 private String stringRepresentation;
28 public TransactionIdentifier(String memberName, long counter) {
29 this.memberName = Preconditions.checkNotNull(memberName, "memberName should not be null");
30 this.counter = counter;
33 public String getChainId() {
37 public static TransactionIdentifier create(String memberName, long counter) {
38 return new TransactionIdentifier(memberName, counter);
42 public boolean equals(Object o) {
46 if (o == null || getClass() != o.getClass()) {
50 TransactionIdentifier that = (TransactionIdentifier) o;
52 if (counter != that.counter) {
55 if (!memberName.equals(that.memberName)) {
63 public int hashCode() {
64 int result = memberName.hashCode();
65 result = 31 * result + (int) (counter ^ (counter >>> 32));
70 public String toString() {
71 if(stringRepresentation == null) {
72 stringRepresentation = new StringBuilder(memberName.length() + TX_SEPARATOR.length() + 10).
73 append(memberName).append(TX_SEPARATOR).append(counter).toString();
76 return stringRepresentation;