package org.opennaas.extensions.openflowswitch.driver.opendaylight.protocol.client.mockup; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.PathParam; import org.opennaas.extensions.openflowswitch.driver.opendaylight.protocol.client.IOpenDaylightStaticFlowPusherClient; import org.opennaas.extensions.openflowswitch.driver.opendaylight.protocol.client.wrappers.OpenDaylightOFFlowsWrapper; import org.opennaas.extensions.openflowswitch.model.OpenDaylightOFFlow; /** * * @author Adrian Rosello (i2CAT) * */ public class OpenDaylightMockClient implements IOpenDaylightStaticFlowPusherClient { private Map<String, List<OpenDaylightOFFlow>> flows; public OpenDaylightMockClient() { this.flows = new HashMap<String, List<OpenDaylightOFFlow>>(); } @Override public void addFlow(OpenDaylightOFFlow flow, String DPID, String name) { String switchId = flow.getSwitchId(); if (switchId != null) { List<OpenDaylightOFFlow> switchFlows = flows.get(switchId); if (switchFlows == null) { switchFlows = new ArrayList<OpenDaylightOFFlow>(); switchFlows.add(flow); flows.put(switchId, switchFlows); } else { switchFlows.add(flow); } } } @Override public void deleteFlow(String DPID, String name) { for (String switchId : flows.keySet()) { List<OpenDaylightOFFlow> switchFlows = flows.get(switchId); List<OpenDaylightOFFlow> flowsToRemove = new ArrayList<OpenDaylightOFFlow>(); for (OpenDaylightOFFlow existingFlow : switchFlows) { if (existingFlow.getName().equals(name)) { flowsToRemove.add(existingFlow); } } switchFlows.removeAll(flowsToRemove); } } @Override public void deleteFlowsForSwitch(@PathParam("switchId") String dpid) { flows.get(dpid).clear(); } @Override public void deleteAllFlows() { for (String switchId : flows.keySet()) { List<OpenDaylightOFFlow> switchFlows = flows.get(switchId); switchFlows.clear(); } } @Override public Map<String, List<OpenDaylightOFFlow>> getFlows() { return flows; } @Override public OpenDaylightOFFlowsWrapper getFlows(@PathParam("switchId") String dpid) { OpenDaylightOFFlowsWrapper flowsWrapper = new OpenDaylightOFFlowsWrapper(); if (flows.get(String.valueOf(dpid)) != null) { flowsWrapper.addAll(flows.get(String.valueOf(dpid))); } return flowsWrapper; } @Override public OpenDaylightOFFlow getFlow(@PathParam("switchId") String dpid, @PathParam("name") String name) { OpenDaylightOFFlow flow = new OpenDaylightOFFlow(); for (String switchId : flows.keySet()) { List<OpenDaylightOFFlow> switchFlows = flows.get(switchId); for (OpenDaylightOFFlow existingFlow : switchFlows) { if (existingFlow.getName().equals(name)) { return existingFlow; } } } return flow; } }