Merge "Removing { } from NormalizedNodeJsonBodyWriter"
[controller.git] / opendaylight / networkconfiguration / neutron / implementation / src / main / java / org / opendaylight / controller / networkconfig / neutron / implementation / NeutronLoadBalancerPoolMemberInterface.java
1 /*
2  * Copyright (C) 2014 Red Hat, Inc.
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.controller.networkconfig.neutron.implementation;
10
11 import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerPoolMemberCRUD;
12 import org.opendaylight.controller.networkconfig.neutron.NeutronLoadBalancerPoolMember;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15
16 import java.lang.reflect.Method;
17 import java.util.ArrayList;
18 import java.util.HashSet;
19 import java.util.List;
20 import java.util.Map;
21 import java.util.Set;
22 import java.util.concurrent.ConcurrentHashMap;
23 import java.util.concurrent.ConcurrentMap;
24
25 public class NeutronLoadBalancerPoolMemberInterface
26         implements INeutronLoadBalancerPoolMemberCRUD {
27     private static final Logger logger = LoggerFactory.getLogger(NeutronLoadBalancerPoolMemberInterface.class);
28     private ConcurrentMap<String, NeutronLoadBalancerPoolMember> loadBalancerPoolMemberDB  = new ConcurrentHashMap<String, NeutronLoadBalancerPoolMember>();
29
30
31     // this method uses reflection to update an object from it's delta.
32
33     private boolean overwrite(Object target, Object delta) {
34         Method[] methods = target.getClass().getMethods();
35
36         for (Method toMethod : methods) {
37             if (toMethod.getDeclaringClass().equals(target.getClass())
38                     && toMethod.getName().startsWith("set")) {
39
40                 String toName = toMethod.getName();
41                 String fromName = toName.replace("set", "get");
42
43                 try {
44                     Method fromMethod = delta.getClass().getMethod(fromName);
45                     Object value = fromMethod.invoke(delta, (Object[]) null);
46                     if (value != null) {
47                         toMethod.invoke(target, value);
48                     }
49                 } catch(Exception e) {
50                     e.printStackTrace();
51                     return false;
52                 }
53             }
54         }
55         return true;
56     }
57
58     @Override
59     public boolean neutronLoadBalancerPoolMemberExists(String uuid) {
60         return loadBalancerPoolMemberDB.containsKey(uuid);
61     }
62
63     @Override
64     public NeutronLoadBalancerPoolMember getNeutronLoadBalancerPoolMember(String uuid) {
65         if (!neutronLoadBalancerPoolMemberExists(uuid)) {
66             logger.debug("No LoadBalancerPoolMember Have Been Defined");
67             return null;
68         }
69         return loadBalancerPoolMemberDB.get(uuid);
70     }
71
72     @Override
73     public List<NeutronLoadBalancerPoolMember> getAllNeutronLoadBalancerPoolMembers() {
74         Set<NeutronLoadBalancerPoolMember> allLoadBalancerPoolMembers = new HashSet<NeutronLoadBalancerPoolMember>();
75         for (Map.Entry<String, NeutronLoadBalancerPoolMember> entry : loadBalancerPoolMemberDB.entrySet()) {
76             NeutronLoadBalancerPoolMember loadBalancerPoolMember = entry.getValue();
77             allLoadBalancerPoolMembers.add(loadBalancerPoolMember);
78         }
79         logger.debug("Exiting getLoadBalancerPoolMembers, Found {} OpenStackLoadBalancerPoolMember",
80                 allLoadBalancerPoolMembers.size());
81         List<NeutronLoadBalancerPoolMember> ans = new ArrayList<NeutronLoadBalancerPoolMember>();
82         ans.addAll(allLoadBalancerPoolMembers);
83         return ans;
84     }
85
86     @Override
87     public boolean addNeutronLoadBalancerPoolMember(NeutronLoadBalancerPoolMember input) {
88         if (neutronLoadBalancerPoolMemberExists(input.getPoolMemberID())) {
89             return false;
90         }
91         loadBalancerPoolMemberDB.putIfAbsent(input.getPoolMemberID(), input);
92         return true;
93     }
94
95     @Override
96     public boolean removeNeutronLoadBalancerPoolMember(String uuid) {
97         if (!neutronLoadBalancerPoolMemberExists(uuid)) {
98             return false;
99         }
100         loadBalancerPoolMemberDB.remove(uuid);
101         return true;
102     }
103
104     @Override
105     public boolean updateNeutronLoadBalancerPoolMember(String uuid, NeutronLoadBalancerPoolMember delta) {
106         if (!neutronLoadBalancerPoolMemberExists(uuid)) {
107             return false;
108         }
109         NeutronLoadBalancerPoolMember target = loadBalancerPoolMemberDB.get(uuid);
110         return overwrite(target, delta);
111     }
112
113     @Override
114     public boolean neutronLoadBalancerPoolMemberInUse(String loadBalancerPoolMemberID) {
115         return !neutronLoadBalancerPoolMemberExists(loadBalancerPoolMemberID);
116     }
117 }