Bug 1073: Added support to DOMBrokerImpl for Transaction Chaining
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / sal / dom / broker / DataBrokerImpl.java
index d95fdcc53dbc68019704b876c7a2ea7bdb34051e..69f518bb32f5c57f467285f0a32056240893043b 100644 (file)
@@ -1,5 +1,14 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
 package org.opendaylight.controller.sal.dom.broker;
 
+import java.util.concurrent.atomic.AtomicLong;
+
 import org.opendaylight.controller.md.sal.common.api.data.DataReader;
 import org.opendaylight.controller.md.sal.common.impl.service.AbstractDataBroker;
 import org.opendaylight.controller.sal.common.DataStoreIdentifier;
@@ -11,16 +20,28 @@ import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
 
+import com.google.common.util.concurrent.MoreExecutors;
+
 public class DataBrokerImpl extends AbstractDataBroker<InstanceIdentifier, CompositeNode, DataChangeListener> implements
-        DataProviderService {
+        DataProviderService, AutoCloseable {
+
+    private AtomicLong nextTransaction = new AtomicLong();
+    private final AtomicLong createdTransactionsCount = new AtomicLong();
 
     public DataBrokerImpl() {
         setDataReadRouter(new DataReaderRouter());
+        setExecutor(MoreExecutors.sameThreadExecutor());
+    }
+
+    public AtomicLong getCreatedTransactionsCount() {
+        return createdTransactionsCount;
     }
 
     @Override
     public DataTransactionImpl beginTransaction() {
-        return new DataTransactionImpl(this);
+        String transactionId = "DOM-" + nextTransaction.getAndIncrement();
+        createdTransactionsCount.getAndIncrement();
+        return new DataTransactionImpl(transactionId,this);
     }
 
     @Override
@@ -38,29 +59,31 @@ public class DataBrokerImpl extends AbstractDataBroker<InstanceIdentifier, Compo
     @Deprecated
     @Override
     public void addValidator(DataStoreIdentifier store, DataValidator validator) {
-        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException("Deprecated");
 
     }
 
     @Deprecated
     @Override
     public void removeValidator(DataStoreIdentifier store, DataValidator validator) {
-        // TODO Auto-generated method stub
-
+        throw new UnsupportedOperationException("Deprecated");
     }
 
     @Deprecated
     @Override
     public void addRefresher(DataStoreIdentifier store, DataRefresher refresher) {
-        // TODO Auto-generated method stub
-
+        throw new UnsupportedOperationException("Deprecated");
     }
 
     @Deprecated
     @Override
     public void removeRefresher(DataStoreIdentifier store, DataRefresher refresher) {
-        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException("Deprecated");
+    }
+
+    @Override
+    public void close() throws Exception {
 
     }
 
-}
\ No newline at end of file
+}