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
8 package org.opendaylight.controller.sal.dom.broker;
10 import java.util.concurrent.atomic.AtomicLong;
12 import org.opendaylight.controller.md.sal.common.api.data.DataReader;
13 import org.opendaylight.controller.md.sal.common.impl.service.AbstractDataBroker;
14 import org.opendaylight.controller.sal.common.DataStoreIdentifier;
15 import org.opendaylight.controller.sal.core.api.data.DataChangeListener;
16 import org.opendaylight.controller.sal.core.api.data.DataProviderService;
17 import org.opendaylight.controller.sal.core.api.data.DataValidator;
18 import org.opendaylight.controller.sal.dom.broker.impl.DataReaderRouter;
19 import org.opendaylight.yangtools.concepts.Registration;
20 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
21 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
23 import com.google.common.util.concurrent.MoreExecutors;
26 public class DataBrokerImpl extends AbstractDataBroker<YangInstanceIdentifier, CompositeNode, DataChangeListener> implements
27 DataProviderService, AutoCloseable {
29 private AtomicLong nextTransaction = new AtomicLong();
30 private final AtomicLong createdTransactionsCount = new AtomicLong();
32 public DataBrokerImpl() {
33 setDataReadRouter(new DataReaderRouter());
34 setExecutor(MoreExecutors.sameThreadExecutor());
37 public AtomicLong getCreatedTransactionsCount() {
38 return createdTransactionsCount;
42 public DataTransactionImpl beginTransaction() {
43 String transactionId = "DOM-" + nextTransaction.getAndIncrement();
44 createdTransactionsCount.getAndIncrement();
45 return new DataTransactionImpl(transactionId,this);
49 public Registration registerConfigurationReader(
50 YangInstanceIdentifier path, DataReader<YangInstanceIdentifier, CompositeNode> reader) {
51 return getDataReadRouter().registerConfigurationReader(path, reader);
55 public Registration registerOperationalReader(
56 YangInstanceIdentifier path, DataReader<YangInstanceIdentifier, CompositeNode> reader) {
57 return getDataReadRouter().registerOperationalReader(path, reader);
62 public void addValidator(DataStoreIdentifier store, DataValidator validator) {
63 throw new UnsupportedOperationException("Deprecated");
69 public void removeValidator(DataStoreIdentifier store, DataValidator validator) {
70 throw new UnsupportedOperationException("Deprecated");
75 public void addRefresher(DataStoreIdentifier store, DataRefresher refresher) {
76 throw new UnsupportedOperationException("Deprecated");
81 public void removeRefresher(DataStoreIdentifier store, DataRefresher refresher) {
82 throw new UnsupportedOperationException("Deprecated");
86 public void close() throws Exception {