2 * Copyright Tata Consultancy Services, 2015. 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.neutron.transcriber;
11 import java.lang.reflect.Method;
12 import java.util.ArrayList;
13 import java.util.HashSet;
14 import java.util.List;
16 import java.util.Map.Entry;
17 import java.util.concurrent.ConcurrentHashMap;
18 import java.util.concurrent.ConcurrentMap;
20 import org.opendaylight.neutron.spi.INeutronVPNServiceCRUD;
21 import org.opendaylight.neutron.spi.NeutronVPNService;
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
25 public class NeutronVPNServiceInterface implements INeutronVPNServiceCRUD {
26 private static final Logger logger = LoggerFactory.getLogger(NeutronVPNServiceInterface.class);
27 private ConcurrentMap<String, NeutronVPNService> VPNServiceDB = new ConcurrentHashMap<String, NeutronVPNService>();
29 // this method uses reflection to update an object from it's delta.
31 private boolean overwrite(Object target, Object delta) {
32 Method[] methods = target.getClass().getMethods();
34 for (Method toMethod : methods) {
35 if (toMethod.getDeclaringClass().equals(target.getClass()) && toMethod.getName().startsWith("set")) {
37 String toName = toMethod.getName();
38 String fromName = toName.replace("set", "get");
41 Method fromMethod = delta.getClass().getMethod(fromName);
42 Object value = fromMethod.invoke(delta, (Object[]) null);
44 toMethod.invoke(target, value);
46 } catch (Exception e) {
56 public boolean neutronVPNServiceExists(String uuid) {
57 return VPNServiceDB.containsKey(uuid);
61 public NeutronVPNService getVPNService(String uuid) {
62 if (!neutronVPNServiceExists(uuid)) {
63 logger.debug("No VPNService Have Been Defined");
66 return VPNServiceDB.get(uuid);
70 public List<NeutronVPNService> getAllVPNService() {
71 Set<NeutronVPNService> allVPNService = new HashSet<NeutronVPNService>();
72 for (Entry<String, NeutronVPNService> entry : VPNServiceDB.entrySet()) {
73 NeutronVPNService VPNService = entry.getValue();
74 allVPNService.add(VPNService);
76 logger.debug("Exiting getVPNService, Found {} OpenStackVPNService", allVPNService.size());
77 List<NeutronVPNService> ans = new ArrayList<NeutronVPNService>();
78 ans.addAll(allVPNService);
83 public boolean addVPNService(NeutronVPNService input) {
84 if (neutronVPNServiceExists(input.getID())) {
87 VPNServiceDB.putIfAbsent(input.getID(), input);
92 public boolean removeVPNService(String uuid) {
93 if (!neutronVPNServiceExists(uuid)) {
96 VPNServiceDB.remove(uuid);
101 public boolean updateVPNService(String uuid, NeutronVPNService delta) {
102 if (!neutronVPNServiceExists(uuid)) {
105 NeutronVPNService target = VPNServiceDB.get(uuid);
106 return overwrite(target, delta);
110 public boolean neutronVPNServiceInUse(String uuid) {
111 return !neutronVPNServiceExists(uuid);