aboutsummaryrefslogtreecommitdiffstats
path: root/upstream/odl-aaa-moon/aaa/aaa-authz/aaa-authz-service/src/main/java/org/opendaylight/aaa/authz/srv/AuthzDomDataBroker.java
blob: 911f5a48ef8cd69b3992e07ef107935166d3a2f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
 * 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.aaa.authz.srv;

import java.util.Map;
import org.opendaylight.aaa.api.AuthenticationService;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener;
import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
import org.opendaylight.controller.md.sal.dom.api.DOMDataBrokerExtension;
import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction;
import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain;
import org.opendaylight.controller.sal.core.api.Broker;
import org.opendaylight.controller.sal.core.api.BrokerService;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;

/**
 * Created by wdec on 26/08/2014.
 */
public class AuthzDomDataBroker implements BrokerService, DOMDataBroker {

    private DOMDataBroker domDataBroker;
    private Broker.ProviderSession providerSession;

    private volatile AuthenticationService authService;

    final static AuthzDomDataBroker INSTANCE = new AuthzDomDataBroker();

    public static AuthzDomDataBroker getInstance() {
        return INSTANCE;
    }

    public void setDomDataBroker(DOMDataBroker domDataBroker) {
        this.domDataBroker = domDataBroker;
    }

    public void setProviderSession(Broker.ProviderSession providerSession) {
        this.providerSession = providerSession;
    }

    public void setAuthService(AuthenticationService authService) {
        this.authService = authService;
    }

    public AuthenticationService getAuthService() {
        return this.authService;
    }

    @Override
    public DOMDataReadOnlyTransaction newReadOnlyTransaction() {
        // new Authz transaction + inject real DOM Transaction
        DOMDataReadOnlyTransaction ro = domDataBroker.newReadOnlyTransaction();

        // return domDataBroker.newReadOnlyTransaction(); //Return original
        return new AuthzReadOnlyTransaction(ro);
    }

    @Override
    public Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> getSupportedExtensions() {
        return domDataBroker.getSupportedExtensions();
    }

    @Override
    public DOMDataReadWriteTransaction newReadWriteTransaction() {
        // return new Authz transaction + inject real DOM Transaction
        DOMDataReadWriteTransaction rw = domDataBroker.newReadWriteTransaction();
        return new AuthzDataReadWriteTransaction(rw);
    }

    @Override
    public DOMDataWriteTransaction newWriteOnlyTransaction() {
        DOMDataWriteTransaction wo = domDataBroker.newWriteOnlyTransaction();
        return new AuthzWriteOnlyTransaction(wo);
    }

    @Override
    public ListenerRegistration<DOMDataChangeListener> registerDataChangeListener(
            LogicalDatastoreType logicalDatastoreType,
            YangInstanceIdentifier yangInstanceIdentifier,
            DOMDataChangeListener domDataChangeListener, DataChangeScope dataChangeScope) {
        return domDataBroker.registerDataChangeListener(logicalDatastoreType,
                yangInstanceIdentifier, domDataChangeListener, dataChangeScope);
    }

    @Override
    public DOMTransactionChain createTransactionChain(
            TransactionChainListener transactionChainListener) {
        return domDataBroker.createTransactionChain(transactionChainListener);
    }
}