Added a simple device manager to have a working provider broker.
diff --git a/net/core/src/main/java/org/onlab/onos/net/impl/SimpleDeviceManager.java b/net/core/src/main/java/org/onlab/onos/net/impl/SimpleDeviceManager.java
new file mode 100644
index 0000000..767169a
--- /dev/null
+++ b/net/core/src/main/java/org/onlab/onos/net/impl/SimpleDeviceManager.java
@@ -0,0 +1,94 @@
+package org.onlab.onos.net.impl;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Service;
+import org.onlab.onos.net.DeviceId;
+import org.onlab.onos.net.MastershipRole;
+import org.onlab.onos.net.device.DeviceDescription;
+import org.onlab.onos.net.device.DeviceProvider;
+import org.onlab.onos.net.device.DeviceProviderBroker;
+import org.onlab.onos.net.device.DeviceProviderService;
+import org.onlab.onos.net.device.PortDescription;
+import org.onlab.onos.net.provider.AbstractProviderBroker;
+import org.onlab.onos.net.provider.AbstractProviderService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * Provides basic implementation of the device SB & NB APIs.
+ */
+@Component(immediate = true)
+@Service
+public class SimpleDeviceManager implements DeviceProviderBroker {
+
+ private Logger log = LoggerFactory.getLogger(SimpleDeviceManager.class);
+
+ private final DeviceProviderBroker broker = new InternalBroker();
+
+ @Activate
+ public void activate() {
+ log.info("Started");
+ }
+
+ @Deactivate
+ public void deactivate() {
+ log.info("Stopped");
+ }
+
+ @Override
+ public DeviceProviderService register(DeviceProvider provider) {
+ return broker.register(provider);
+ }
+
+ @Override
+ public void unregister(DeviceProvider provider) {
+ broker.unregister(provider);
+ }
+
+ // Internal delegate for tracking various providers and issuing them a
+ // personalized provider service.
+ private class InternalBroker extends AbstractProviderBroker<DeviceProvider, DeviceProviderService>
+ implements DeviceProviderBroker {
+ @Override
+ protected DeviceProviderService createProviderService(DeviceProvider provider) {
+ return new InternalDeviceProviderService(provider);
+ }
+ }
+
+ // Personalized device provider service issued to the supplied provider.
+ private class InternalDeviceProviderService extends AbstractProviderService<DeviceProvider>
+ implements DeviceProviderService {
+
+ public InternalDeviceProviderService(DeviceProvider provider) {
+ super(provider);
+ }
+
+ @Override
+ public MastershipRole deviceConnected(DeviceId deviceId, DeviceDescription deviceDescription) {
+ log.info("Device {} connected: {}", deviceId, deviceDescription);
+ return MastershipRole.MASTER;
+ }
+
+ @Override
+ public void deviceDisconnected(DeviceId deviceId) {
+ log.info("Device {} disconnected", deviceId);
+
+ }
+
+ @Override
+ public void updatePorts(DeviceId deviceId, List<PortDescription> ports) {
+ // FIXME: fix the interface to accept DeviceId separately
+ log.info("Device {} ports updated: {}", ports);
+
+ }
+
+ @Override
+ public void portStatusChanged(DeviceId deviceId, PortDescription port) {
+ log.info("Device {} port status changed: {}", deviceId, port);
+ }
+ }
+}