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.aaa.authz.srv;
12 import org.opendaylight.aaa.api.AuthenticationService;
13 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
14 import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener;
15 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
16 import org.opendaylight.controller.md.sal.dom.api.DOMDataBrokerExtension;
17 import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
18 import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
19 import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction;
20 import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
21 import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain;
22 import org.opendaylight.controller.sal.core.api.Broker;
23 import org.opendaylight.controller.sal.core.api.BrokerService;
24 import org.opendaylight.yangtools.concepts.ListenerRegistration;
25 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
28 * Created by wdec on 26/08/2014.
30 public class AuthzDomDataBroker implements BrokerService, DOMDataBroker {
32 private DOMDataBroker domDataBroker;
33 private Broker.ProviderSession providerSession;
35 private volatile AuthenticationService authService;
37 final static AuthzDomDataBroker INSTANCE = new AuthzDomDataBroker();
39 public static AuthzDomDataBroker getInstance() {
43 public void setDomDataBroker(DOMDataBroker domDataBroker) {
44 this.domDataBroker = domDataBroker;
47 public void setProviderSession(Broker.ProviderSession providerSession) {
48 this.providerSession = providerSession;
51 public void setAuthService(AuthenticationService authService) {
52 this.authService = authService;
55 public AuthenticationService getAuthService() {
56 return this.authService;
60 public DOMDataReadOnlyTransaction newReadOnlyTransaction() {
61 // new Authz transaction + inject real DOM Transaction
62 DOMDataReadOnlyTransaction ro = domDataBroker.newReadOnlyTransaction();
64 // return domDataBroker.newReadOnlyTransaction(); //Return original
65 return new AuthzReadOnlyTransaction(ro);
69 public Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> getSupportedExtensions() {
70 return domDataBroker.getSupportedExtensions();
74 public DOMDataReadWriteTransaction newReadWriteTransaction() {
75 // return new Authz transaction + inject real DOM Transaction
76 DOMDataReadWriteTransaction rw = domDataBroker.newReadWriteTransaction();
77 return new AuthzDataReadWriteTransaction(rw);
81 public DOMDataWriteTransaction newWriteOnlyTransaction() {
82 DOMDataWriteTransaction wo = domDataBroker.newWriteOnlyTransaction();
83 return new AuthzWriteOnlyTransaction(wo);
87 public ListenerRegistration<DOMDataChangeListener> registerDataChangeListener(
88 LogicalDatastoreType logicalDatastoreType,
89 YangInstanceIdentifier yangInstanceIdentifier,
90 DOMDataChangeListener domDataChangeListener, DataChangeScope dataChangeScope) {
91 return domDataBroker.registerDataChangeListener(logicalDatastoreType,
92 yangInstanceIdentifier, domDataChangeListener, dataChangeScope);
96 public DOMTransactionChain createTransactionChain(
97 TransactionChainListener transactionChainListener) {
98 return domDataBroker.createTransactionChain(transactionChainListener);