Merge "Added DELETE support for Bridge and Port resources"
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / sal / dom / broker / ProviderContextImpl.xtend
1 package org.opendaylight.controller.sal.dom.broker
2
3 import org.opendaylight.controller.sal.core.api.Broker.ProviderSession
4 import org.opendaylight.controller.sal.core.api.Provider
5 import org.opendaylight.controller.sal.core.api.RpcImplementation
6 import org.opendaylight.yangtools.yang.common.QName
7 import org.osgi.framework.BundleContext
8 import org.opendaylight.controller.sal.core.api.Broker.RpcRegistration
9 import org.opendaylight.controller.sal.core.api.RpcRegistrationListener
10 import org.opendaylight.yangtools.concepts.Registration
11
12 import java.util.Set
13 import java.util.HashSet
14
15 class ProviderContextImpl extends ConsumerContextImpl implements ProviderSession {
16
17     @Property
18     private val Provider provider;
19
20     private val Set<Registration<?>> registrations = new HashSet();
21
22     new(Provider provider, BundleContext ctx) {
23         super(null, ctx);
24         this._provider = provider;
25     }
26
27     override addRpcImplementation(QName rpcType, RpcImplementation implementation) throws IllegalArgumentException {
28         val origReg = broker.router.addRpcImplementation(rpcType, implementation);
29         val newReg = new RpcRegistrationWrapper(origReg);
30         registrations.add(newReg);
31         return newReg;
32     }
33
34     protected def removeRpcImplementation(RpcRegistrationWrapper implToRemove) throws IllegalArgumentException {
35         registrations.remove(implToRemove);
36     }
37     
38     override close() {
39         
40         for (reg : registrations) {
41             reg.close()
42         }
43         super.close
44     }
45
46     override addMountedRpcImplementation(QName rpcType, RpcImplementation implementation) {
47         throw new UnsupportedOperationException("TODO: auto-generated method stub")
48     }
49
50     override addRoutedRpcImplementation(QName rpcType, RpcImplementation implementation) {
51         throw new UnsupportedOperationException("TODO: auto-generated method stub")
52     }
53
54     override getSupportedRpcs() {
55         broker.router.supportedRpcs;
56     }
57
58     override addRpcRegistrationListener(RpcRegistrationListener listener) {
59         broker.router.addRpcRegistrationListener(listener);
60     }
61 }
62
63 class RpcRegistrationWrapper implements RpcRegistration {
64
65
66     @Property
67     val RpcRegistration delegate
68
69     new(RpcRegistration delegate) {
70         _delegate = delegate
71     }
72
73     override getInstance() {
74         delegate.instance
75     }
76
77     override close() {
78         delegate.close
79     }
80
81     override getType() {
82         delegate.type
83     }
84 }
85