Use the new constructor of 'Disruptor' instead of a deperecated one
[mdsal.git] / trace / mdsal-trace-impl / src / main / java / org / opendaylight / mdsal / trace / impl / TracingTransactionChain.java
1 /*
2  * Copyright (c) 2017 Red Hat, 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 package org.opendaylight.mdsal.trace.impl;
9
10 import static java.util.Objects.requireNonNull;
11
12 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
13 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
14 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
15 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
16
17 class TracingTransactionChain extends AbstractCloseTracked<TracingTransactionChain> implements DOMTransactionChain {
18
19     private final DOMTransactionChain delegate;
20     private final TracingBroker tracingBroker;
21     private final CloseTrackedRegistry<TracingReadOnlyTransaction> readOnlyTransactionsRegistry;
22     private final CloseTrackedRegistry<TracingWriteTransaction> writeTransactionsRegistry;
23     private final CloseTrackedRegistry<TracingReadWriteTransaction> readWriteTransactionsRegistry;
24
25     TracingTransactionChain(DOMTransactionChain delegate, TracingBroker tracingBroker,
26             CloseTrackedRegistry<TracingTransactionChain> transactionChainsRegistry) {
27         super(transactionChainsRegistry);
28         this.delegate = requireNonNull(delegate);
29         this.tracingBroker = requireNonNull(tracingBroker);
30
31         final boolean isDebug = transactionChainsRegistry.isDebugContextEnabled();
32         String anchor = "TransactionChain@" + Integer.toHexString(hashCode());
33         this.readOnlyTransactionsRegistry  = new CloseTrackedRegistry<>(anchor, "newReadOnlyTransaction()", isDebug);
34         this.writeTransactionsRegistry     = new CloseTrackedRegistry<>(anchor, "newWriteOnlyTransaction()", isDebug);
35         this.readWriteTransactionsRegistry = new CloseTrackedRegistry<>(anchor, "newReadWriteTransaction()", isDebug);
36     }
37
38     @Override
39     @SuppressWarnings("resource")
40     public DOMDataTreeReadTransaction newReadOnlyTransaction() {
41         final DOMDataTreeReadTransaction tx = delegate.newReadOnlyTransaction();
42         return new TracingReadOnlyTransaction(tx, readOnlyTransactionsRegistry);
43     }
44
45     @Override
46     public DOMDataTreeReadWriteTransaction newReadWriteTransaction() {
47         return new TracingReadWriteTransaction(delegate.newReadWriteTransaction(), tracingBroker,
48                 readWriteTransactionsRegistry);
49     }
50
51     @Override
52     public DOMDataTreeWriteTransaction newWriteOnlyTransaction() {
53         final DOMDataTreeWriteTransaction tx = delegate.newWriteOnlyTransaction();
54         return new TracingWriteTransaction(tx, tracingBroker, writeTransactionsRegistry);
55     }
56
57     @Override
58     public void close() {
59         delegate.close();
60         super.removeFromTrackedRegistry();
61     }
62
63     public CloseTrackedRegistry<TracingReadOnlyTransaction> getReadOnlyTransactionsRegistry() {
64         return readOnlyTransactionsRegistry;
65     }
66
67     public CloseTrackedRegistry<TracingReadWriteTransaction> getReadWriteTransactionsRegistry() {
68         return readWriteTransactionsRegistry;
69     }
70
71     public CloseTrackedRegistry<TracingWriteTransaction> getWriteTransactionsRegistry() {
72         return writeTransactionsRegistry;
73     }
74
75     // https://jira.opendaylight.org/browse/CONTROLLER-1792
76
77     @Override
78     public final boolean equals(Object object) {
79         return object == this || delegate.equals(object);
80     }
81
82     @Override
83     public final int hashCode() {
84         return delegate.hashCode();
85     }
86
87     @Override
88     public final String toString() {
89         return getClass().getName() + "; delegate=" + delegate;
90     }
91 }