Do not use ListenerRegistration
[mdsal.git] / trace / mdsal-trace-impl / src / main / java / org / opendaylight / mdsal / trace / impl / TracingWriteTransaction.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 com.google.common.util.concurrent.FluentFuture;
11 import org.eclipse.jdt.annotation.Nullable;
12 import org.opendaylight.mdsal.common.api.CommitInfo;
13 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
14
15 class TracingWriteTransaction extends AbstractTracingWriteTransaction
16         implements CloseTracked<TracingWriteTransaction> {
17
18     private final CloseTrackedTrait<TracingWriteTransaction> closeTracker;
19
20     TracingWriteTransaction(DOMDataTreeWriteTransaction delegate, TracingBroker tracingBroker,
21             CloseTrackedRegistry<TracingWriteTransaction> writeTransactionsRegistry) {
22         super(delegate, tracingBroker);
23         this.closeTracker = new CloseTrackedTrait<>(writeTransactionsRegistry, this);
24     }
25
26     @Override
27     public FluentFuture<? extends CommitInfo> commit() {
28         closeTracker.removeFromTrackedRegistry();
29         return super.commit();
30     }
31
32     @Override
33     public boolean cancel() {
34         closeTracker.removeFromTrackedRegistry();
35         return super.cancel();
36     }
37
38     @Override
39     public @Nullable StackTraceElement[] getAllocationContextStackTrace() {
40         return closeTracker.getAllocationContextStackTrace();
41     }
42
43     @Override
44     public CloseTracked<TracingWriteTransaction> getRealCloseTracked() {
45         return this;
46     }
47 }