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
8 package org.opendaylight.neutron.transcriber;
10 import java.lang.reflect.Method;
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
16 import java.util.concurrent.ConcurrentHashMap;
17 import java.util.concurrent.ConcurrentMap;
18 import org.opendaylight.neutron.spi.NeutronVPNIPSECSiteConnection;
19 import org.opendaylight.neutron.spi.INeutronVPNIPSECSiteConnectionsCRUD;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
23 public class NeutronVPNIPSECSiteConnectionsInterface implements INeutronVPNIPSECSiteConnectionsCRUD {
24 private static final Logger logger = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
25 private ConcurrentMap<String, NeutronVPNIPSECSiteConnection> neutronVPNIPSECSiteConnectionDB = new ConcurrentHashMap<String, NeutronVPNIPSECSiteConnection>();
27 // this method uses reflection to update an object from it's delta.
29 private boolean overwrite(Object target, Object delta) {
30 Method[] methods = target.getClass().getMethods();
32 for (Method toMethod : methods) {
33 if (toMethod.getDeclaringClass().equals(target.getClass()) && toMethod.getName().startsWith("set")) {
35 String toName = toMethod.getName();
36 String fromName = toName.replace("set", "get");
39 Method fromMethod = delta.getClass().getMethod(fromName);
40 Object value = fromMethod.invoke(delta, (Object[]) null);
42 toMethod.invoke(target, value);
44 } catch (Exception e) {
53 // INeutronVPNIPSECSiteConnectionsCRUD methods
56 public boolean neutronVPNIPSECSiteConnectionsExists(String policyID) {
57 return neutronVPNIPSECSiteConnectionDB.containsKey(policyID);
61 public NeutronVPNIPSECSiteConnection getNeutronVPNIPSECSiteConnections(String policyID) {
62 if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
65 return neutronVPNIPSECSiteConnectionDB.get(policyID);
69 public List<NeutronVPNIPSECSiteConnection> getAllNeutronVPNIPSECSiteConnections() {
70 Set<NeutronVPNIPSECSiteConnection> allNeutronVPNIPSECSiteConnections = new HashSet<NeutronVPNIPSECSiteConnection>();
71 for (Entry<String, NeutronVPNIPSECSiteConnection> entry : neutronVPNIPSECSiteConnectionDB.entrySet()) {
72 NeutronVPNIPSECSiteConnection meteringLabelRule = entry.getValue();
73 allNeutronVPNIPSECSiteConnections.add(meteringLabelRule);
75 logger.debug("Exiting getAllNeutronVPNIPSECSiteConnections, Found {} OpenStackVPNIPSECSiteConnections", allNeutronVPNIPSECSiteConnections.size());
76 List<NeutronVPNIPSECSiteConnection> ans = new ArrayList<NeutronVPNIPSECSiteConnection>();
77 ans.addAll(allNeutronVPNIPSECSiteConnections);
82 public boolean addNeutronVPNIPSECSiteConnections(NeutronVPNIPSECSiteConnection input) {
83 if (neutronVPNIPSECSiteConnectionsExists(input.getID())) {
86 neutronVPNIPSECSiteConnectionDB.putIfAbsent(input.getID(), input);
91 public boolean removeNeutronVPNIPSECSiteConnections(String policyID) {
92 if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
95 neutronVPNIPSECSiteConnectionDB.remove(policyID);
100 public boolean updateNeutronVPNIPSECSiteConnections(String policyID, NeutronVPNIPSECSiteConnection delta) {
101 if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
104 NeutronVPNIPSECSiteConnection target = neutronVPNIPSECSiteConnectionDB.get(policyID);
105 return overwrite(target, delta);
109 public boolean neutronVPNIPSECSiteConnectionsInUse(String policyID) {
110 if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {