Merge "Remove Metering ConcurrentHashMaps"
[neutron.git] / neutron-spi / src / main / java / org / opendaylight / neutron / spi / NeutronCRUDInterfaces.java
1 /*
2  * Copyright (c) 2013, 2015 IBM Corporation 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.neutron.spi;
10
11 import org.osgi.framework.BundleContext;
12 import org.osgi.framework.FrameworkUtil;
13 import org.osgi.framework.ServiceReference;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 public class NeutronCRUDInterfaces {
18     private static final Logger LOGGER = LoggerFactory
19             .getLogger(NeutronCRUDInterfaces.class);
20
21     private INeutronNetworkCRUD networkInterface;
22     private INeutronSubnetCRUD subnetInterface;
23     private INeutronPortCRUD portInterface;
24     private INeutronRouterCRUD routerInterface;
25     private INeutronFloatingIPCRUD fipInterface;
26     private INeutronSecurityGroupCRUD sgInterface;
27     private INeutronSecurityRuleCRUD srInterface;
28     private INeutronFirewallCRUD fwInterface;
29     private INeutronFirewallPolicyCRUD fwpInterface;
30     private INeutronFirewallRuleCRUD fwrInterface;
31     private INeutronLoadBalancerCRUD lbInterface;
32     private INeutronLoadBalancerPoolCRUD lbpInterface;
33     private INeutronLoadBalancerListenerCRUD lblInterface;
34     private INeutronLoadBalancerHealthMonitorCRUD lbhmInterface;
35     private INeutronMeteringLabelCRUD mlInterface;
36     private INeutronMeteringLabelRuleCRUD mlrInterface;
37     private INeutronVPNIKEPolicyCRUD ikepInterface;
38     private INeutronVPNIPSECPolicyCRUD ipsecpInterface;
39     private INeutronVPNServiceCRUD vpnInterface;
40     private INeutronVPNIPSECSiteConnectionsCRUD ipsecScInterface;
41
42     public NeutronCRUDInterfaces() {
43     }
44
45     public INeutronNetworkCRUD getNetworkInterface() {
46         return networkInterface;
47     }
48
49     public INeutronSubnetCRUD getSubnetInterface() {
50         return subnetInterface;
51     }
52
53     public INeutronPortCRUD getPortInterface() {
54         return portInterface;
55     }
56
57     public INeutronRouterCRUD getRouterInterface() {
58         return routerInterface;
59     }
60
61     public INeutronFloatingIPCRUD getFloatingIPInterface() {
62         return fipInterface;
63     }
64
65     public INeutronSecurityGroupCRUD getSecurityGroupInterface() {
66         return sgInterface;
67     }
68
69     public INeutronSecurityRuleCRUD getSecurityRuleInterface() {
70         return srInterface;
71     }
72
73     public INeutronFirewallCRUD getFirewallInterface() {
74         return fwInterface;
75     }
76
77     public INeutronFirewallPolicyCRUD getFirewallPolicyInterface() {
78         return fwpInterface;
79     }
80
81     public INeutronFirewallRuleCRUD getFirewallRuleInterface() {
82         return fwrInterface;
83     }
84
85     public INeutronLoadBalancerCRUD getLoadBalancerInterface() {
86         return lbInterface;
87     }
88
89     public INeutronLoadBalancerPoolCRUD getLoadBalancerPoolInterface() {
90         return lbpInterface;
91     }
92
93     public INeutronLoadBalancerListenerCRUD getLoadBalancerListenerInterface() {
94         return lblInterface;
95     }
96
97     public INeutronLoadBalancerHealthMonitorCRUD getLoadBalancerHealthMonitorInterface() {
98         return lbhmInterface;
99     }
100
101     public INeutronMeteringLabelCRUD getMeteringLabelInterface() {
102         return mlInterface;
103     }
104
105     public INeutronMeteringLabelRuleCRUD getMeteringLabelRuleInterface() {
106         return mlrInterface;
107     }
108
109     public INeutronVPNIKEPolicyCRUD getVPNIKEPolicyInterface() {
110         return ikepInterface;
111     }
112
113     public INeutronVPNIPSECPolicyCRUD getVPNIPSECPolicyInterface() {
114         return ipsecpInterface;
115     }
116
117     public void setVPNServiceInterface(INeutronVPNServiceCRUD iface) {
118         vpnInterface = iface;
119     }
120
121     public INeutronVPNServiceCRUD getVPNServiceInterface() {
122         return vpnInterface;
123     }
124
125     public INeutronVPNIPSECSiteConnectionsCRUD getVPNIPSECSiteConnectionsInterface() {
126         return ipsecScInterface;
127     }
128
129     public NeutronCRUDInterfaces fetchINeutronNetworkCRUD(Object obj) {
130         networkInterface = (INeutronNetworkCRUD) getInstances(INeutronNetworkCRUD.class, obj);
131         return this;
132     }
133
134     public NeutronCRUDInterfaces fetchINeutronSubnetCRUD(Object obj) {
135         subnetInterface = (INeutronSubnetCRUD) getInstances(INeutronSubnetCRUD.class, obj);
136         return this;
137     }
138
139     public NeutronCRUDInterfaces fetchINeutronPortCRUD(Object obj) {
140         portInterface = (INeutronPortCRUD) getInstances(INeutronPortCRUD.class, obj);
141         return this;
142     }
143
144     public NeutronCRUDInterfaces fetchINeutronRouterCRUD(Object obj) {
145         routerInterface = (INeutronRouterCRUD) getInstances(INeutronRouterCRUD.class, obj);
146         return this;
147     }
148
149     public NeutronCRUDInterfaces fetchINeutronFloatingIPCRUD(Object obj) {
150         fipInterface = (INeutronFloatingIPCRUD) getInstances(INeutronFloatingIPCRUD.class, obj);
151         return this;
152     }
153
154     public NeutronCRUDInterfaces fetchINeutronSecurityGroupCRUD(Object obj) {
155         sgInterface = (INeutronSecurityGroupCRUD) getInstances(INeutronSecurityGroupCRUD.class, obj);
156         return this;
157     }
158
159     public NeutronCRUDInterfaces fetchINeutronSecurityRuleCRUD(Object obj) {
160         srInterface = (INeutronSecurityRuleCRUD) getInstances(INeutronSecurityRuleCRUD.class, obj);
161         return this;
162     }
163
164     public NeutronCRUDInterfaces fetchINeutronFirewallCRUD(Object obj) {
165         fwInterface = (INeutronFirewallCRUD) getInstances(INeutronFirewallCRUD.class, obj);
166         return this;
167     }
168
169     public NeutronCRUDInterfaces fetchINeutronFirewallPolicyCRUD(Object obj) {
170         fwpInterface = (INeutronFirewallPolicyCRUD) getInstances(INeutronFirewallPolicyCRUD.class, obj);
171         return this;
172     }
173
174     public NeutronCRUDInterfaces fetchINeutronFirewallRuleCRUD(Object obj) {
175         fwrInterface = (INeutronFirewallRuleCRUD) getInstances(INeutronFirewallRuleCRUD.class, obj);
176         return this;
177     }
178
179     public NeutronCRUDInterfaces fetchINeutronLoadBalancerCRUD(Object obj) {
180         lbInterface = (INeutronLoadBalancerCRUD) getInstances(INeutronLoadBalancerCRUD.class, obj);
181         return this;
182     }
183
184     public NeutronCRUDInterfaces fetchINeutronLoadBalancerPoolCRUD(Object obj) {
185         lbpInterface = (INeutronLoadBalancerPoolCRUD) getInstances(INeutronLoadBalancerPoolCRUD.class, obj);
186         return this;
187     }
188
189     public NeutronCRUDInterfaces fetchINeutronLoadBalancerListenerCRUD(Object obj) {
190         lblInterface = (INeutronLoadBalancerListenerCRUD) getInstances(INeutronLoadBalancerListenerCRUD.class, obj);
191         return this;
192     }
193
194     public NeutronCRUDInterfaces fetchINeutronLoadBalancerHealthMonitorCRUD(Object obj) {
195         lbhmInterface = (INeutronLoadBalancerHealthMonitorCRUD) getInstances(INeutronLoadBalancerHealthMonitorCRUD.class, obj);
196         return this;
197     }
198
199     public NeutronCRUDInterfaces fetchINeutronMeteringLabelCRUD(Object obj) {
200         mlInterface = (INeutronMeteringLabelCRUD) getInstances(INeutronMeteringLabelCRUD.class, obj);
201         return this;
202     }
203
204     public NeutronCRUDInterfaces fetchINeutronMeteringLabelRuleCRUD(Object obj) {
205         mlrInterface = (INeutronMeteringLabelRuleCRUD) getInstances(INeutronMeteringLabelRuleCRUD.class, obj);
206         return this;
207     }
208
209     public NeutronCRUDInterfaces fetchINeutronVPNIKEPolicyCRUD(Object obj) {
210         ikepInterface = (INeutronVPNIKEPolicyCRUD) getInstances(INeutronVPNIKEPolicyCRUD.class, obj);
211         return this;
212     }
213
214     public NeutronCRUDInterfaces fetchINeutronVPNIPSECPolicyCRUD(Object obj) {
215         ipsecpInterface = (INeutronVPNIPSECPolicyCRUD) getInstances(INeutronVPNIPSECPolicyCRUD.class, obj);
216         return this;
217     }
218
219     public NeutronCRUDInterfaces fetchINeutronVPNServiceCRUD(Object obj) {
220         vpnInterface = (INeutronVPNServiceCRUD) getInstances(INeutronVPNServiceCRUD.class, obj);
221         return this;
222     }
223
224     public NeutronCRUDInterfaces fetchINeutronVPNIPSECSiteConnectionsCRUD(Object obj) {
225         ipsecScInterface = (INeutronVPNIPSECSiteConnectionsCRUD) getInstances(INeutronVPNIPSECSiteConnectionsCRUD.class, obj);
226         return this;
227     }
228
229     public Object getInstances(Class<?> clazz, Object bundle) {
230         try {
231             BundleContext bCtx = FrameworkUtil.getBundle(bundle.getClass()).getBundleContext();
232
233             ServiceReference<?>[] services = null;
234             services = bCtx.getServiceReferences(clazz.getName(), null);
235             if (services != null) {
236                 return bCtx.getService(services[0]);
237             }
238         } catch (Exception e) {
239             LOGGER.error("Error in getInstances", e);
240         }
241         return null;
242     }
243 }