diff --git a/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java index cb4263a90def48367e969168e540a28a35c8db20..9c7b238b2433d07f684bce2fc3024d2f7e8d9669 100644 --- a/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java +++ b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java @@ -287,8 +287,18 @@ public class FloodlightModuleLoader { " as provider for " + s.getKey().getCanonicalName()); } - floodlightModuleContext.addService(s.getKey(), - s.getValue()); + if (floodlightModuleContext.getServiceImpl(s.getKey()) == null) { + floodlightModuleContext.addService(s.getKey(), + s.getValue()); + } else { + throw new FloodlightModuleException("Cannot set " + + s.getValue() + + " as the provider for " + + s.getKey().getCanonicalName() + + " because " + + floodlightModuleContext.getServiceImpl(s.getKey()) + + " already provides it"); + } } } }