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);