911f5a48ef8cd69b3992e07ef107935166d3a2f7
[moon.git] /
1 /*
2  * Copyright (c) 2014 Cisco Systems, 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
9 package org.opendaylight.aaa.authz.srv;
10
11 import java.util.Map;
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;
26
27 /**
28  * Created by wdec on 26/08/2014.
29  */
30 public class AuthzDomDataBroker implements BrokerService, DOMDataBroker {
31
32     private DOMDataBroker domDataBroker;
33     private Broker.ProviderSession providerSession;
34
35     private volatile AuthenticationService authService;
36
37     final static AuthzDomDataBroker INSTANCE = new AuthzDomDataBroker();
38
39     public static AuthzDomDataBroker getInstance() {
40         return INSTANCE;
41     }
42
43     public void setDomDataBroker(DOMDataBroker domDataBroker) {
44         this.domDataBroker = domDataBroker;
45     }
46
47     public void setProviderSession(Broker.ProviderSession providerSession) {
48         this.providerSession = providerSession;
49     }
50
51     public void setAuthService(AuthenticationService authService) {
52         this.authService = authService;
53     }
54
55     public AuthenticationService getAuthService() {
56         return this.authService;
57     }
58
59     @Override
60     public DOMDataReadOnlyTransaction newReadOnlyTransaction() {
61         // new Authz transaction + inject real DOM Transaction
62         DOMDataReadOnlyTransaction ro = domDataBroker.newReadOnlyTransaction();
63
64         // return domDataBroker.newReadOnlyTransaction(); //Return original
65         return new AuthzReadOnlyTransaction(ro);
66     }
67
68     @Override
69     public Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> getSupportedExtensions() {
70         return domDataBroker.getSupportedExtensions();
71     }
72
73     @Override
74     public DOMDataReadWriteTransaction newReadWriteTransaction() {
75         // return new Authz transaction + inject real DOM Transaction
76         DOMDataReadWriteTransaction rw = domDataBroker.newReadWriteTransaction();
77         return new AuthzDataReadWriteTransaction(rw);
78     }
79
80     @Override
81     public DOMDataWriteTransaction newWriteOnlyTransaction() {
82         DOMDataWriteTransaction wo = domDataBroker.newWriteOnlyTransaction();
83         return new AuthzWriteOnlyTransaction(wo);
84     }
85
86     @Override
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);
93     }
94
95     @Override
96     public DOMTransactionChain createTransactionChain(
97             TransactionChainListener transactionChainListener) {
98         return domDataBroker.createTransactionChain(transactionChainListener);
99     }
100 }