Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBOLLE Sebastien2018-03-22 12:55:37 +0000
committerMahdi Ben Alaya2018-07-02 12:51:11 +0000
commit93f8706da82b0ecce07e33a15fafe097343cdae0 (patch)
tree99ab263876269e4e68d0e7f66bd495cf3d944027
parent327fb9a2553c5617d21a6b5023d3e72a59ef47ac (diff)
downloadorg.eclipse.om2m-93f8706da82b0ecce07e33a15fafe097343cdae0.tar.gz
org.eclipse.om2m-93f8706da82b0ecce07e33a15fafe097343cdae0.tar.xz
org.eclipse.om2m-93f8706da82b0ecce07e33a15fafe097343cdae0.zip
sdt.netatmo: use declarative services.
Signed-off-by: BOLLE Sebastien <sebastien.bolle@orange.com> Signed-off-by: BONNARDEL Gregory <gbonnardel.ext@orange.com>
-rw-r--r--org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.classpath17
-rw-r--r--org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.project7
-rw-r--r--org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/META-INF/MANIFEST.MF7
-rw-r--r--org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/OSGI-INF/netatmo.sdt.driver.xml5
-rw-r--r--org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/build.properties3
-rw-r--r--org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Activator.java206
-rw-r--r--org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Discovery.java2
-rw-r--r--org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/test/java/org/eclipse/om2m/sdt/home/netatmo/impl/DiscoveryTestCase.java5
8 files changed, 130 insertions, 122 deletions
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.classpath b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.classpath
index b82e5828..3c425631 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.classpath
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.classpath
@@ -1,8 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src/main/java/"/>
- <classpathentry exported="true" kind="lib" path="lib/json-simple-1.1.1.jar"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry exported="true" kind="lib" path="lib/json-simple-1.1.1.jar"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.project b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.project
index 3f8012f6..107f4a6c 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.project
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/.project
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.onem2m.home.netatmo</name>
- <comment></comment>
+ <comment></comment>
<projects>
</projects>
<buildSpec>
@@ -25,6 +25,11 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/META-INF/MANIFEST.MF b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/META-INF/MANIFEST.MF
index ec49c0f1..2833f5e2 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/META-INF/MANIFEST.MF
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.om2m.sdt.home.netatmo
Bundle-SymbolicName: org.eclipse.om2m.sdt.home.netatmo;singleton:=true
Bundle-Version: 1.1.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Bundle-Activator: org.eclipse.om2m.sdt.home.netatmo.impl.Activator
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7,
+ JavaSE-1.8
Bundle-ClassPath: .,
lib/json-simple-1.1.1.jar
Import-Package: org.eclipse.om2m.sdt,
@@ -18,5 +18,8 @@ Import-Package: org.eclipse.om2m.sdt,
org.junit;version="4.12.0";resolution:=optional,
org.osgi.framework,
org.osgi.service.cm,
+ org.osgi.service.component,
+ org.osgi.service.component.annotations,
org.osgi.service.log,
org.osgi.util.tracker
+Service-Component: OSGI-INF/netatmo.sdt.driver.xml
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/OSGI-INF/netatmo.sdt.driver.xml b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/OSGI-INF/netatmo.sdt.driver.xml
new file mode 100644
index 00000000..9e8c7569
--- /dev/null
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/OSGI-INF/netatmo.sdt.driver.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" activate="activate" configuration-pid="netatmo.sdt.driver" configuration-policy="require" deactivate="deactivate" enabled="true" immediate="true" modified="modified" name="netatmo.sdt.driver">
+ <reference bind="setLogService" cardinality="0..1" interface="org.osgi.service.log.LogService" name="logService" policy="dynamic" unbind="unsetLogService"/>
+ <implementation class="org.eclipse.om2m.sdt.home.netatmo.impl.Activator"/>
+</scr:component>
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/build.properties b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/build.properties
index 940bbe7b..b6d31b39 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/build.properties
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/build.properties
@@ -21,4 +21,5 @@ source.. = src/main/java/
output.. = bin/
bin.includes = META-INF/,\
.,\
- lib/json-simple-1.1.1.jar
+ lib/json-simple-1.1.1.jar,\
+ OSGI-INF/netatmo.sdt.driver.xml
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Activator.java b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Activator.java
index 9b84edf1..5be819dc 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Activator.java
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Activator.java
@@ -8,9 +8,7 @@
package org.eclipse.om2m.sdt.home.netatmo.impl;
import java.util.ArrayList;
-import java.util.Dictionary;
import java.util.HashMap;
-import java.util.Hashtable;
import java.util.List;
import java.util.Map;
@@ -25,100 +23,81 @@ import org.eclipse.om2m.sdt.home.netatmo.model.WeatherStationModule;
import org.eclipse.om2m.sdt.home.netatmo.model.WelcomeCamera;
import org.eclipse.om2m.sdt.home.netatmo.sdt.SDTWeatherStation;
import org.eclipse.om2m.sdt.home.netatmo.sdt.SDTWelcomeCameraDevice;
-import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.cm.ConfigurationException;
-import org.osgi.service.cm.ManagedService;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
@SuppressWarnings({ "rawtypes", "unchecked" })
-public class Activator implements BundleActivator, HomeListener, ManagedService {
-
+@Component(
+ configurationPid = "netatmo.sdt.driver",
+ configurationPolicy = ConfigurationPolicy.REQUIRE,
+ enabled = true,
+ immediate = true,
+ name = "netatmo.sdt.driver")
+public class Activator implements HomeListener {
+
public static final Domain NETATMO_DOMAIN = new Domain("Netatmo_Domain");
public static final String PROTOCOL = "Netatmo";
public static Logger logger = new Logger(PROTOCOL);
private static int detectionThreshold;
private static final String SERVICE_PID = "netatmo.sdt.driver";
-
- private ServiceTracker logServiceTracker;
-
+
private Discovery discovery;
-
+
private Map<String, WelcomeCamera> welcomeCameras;
private Map<String, SDTWelcomeCameraDevice> sdtCameras;
-
+
private Map<String, SDTWeatherStation> sdtWeatherStations;
-
+
private BundleContext bundleContext;
-
+
private ServiceRegistration serviceRegistration;
-
+
public Activator() {
sdtCameras = new HashMap<>();
welcomeCameras = new HashMap<>();
sdtWeatherStations = new HashMap<>();
}
- @Override
- public void start(final BundleContext context) throws Exception {
- // store bundleContext
- bundleContext = context;
-
- // retrieve LogService and init Logger
- logServiceTracker = new ServiceTracker(context, LogService.class.getName(),
- new ServiceTrackerCustomizer() {
- @Override
- public void removedService(ServiceReference reference, Object service) {
- logger.unsetLogService();
- }
- @Override
- public void modifiedService(ServiceReference reference, Object service) {
- }
- @Override
- public Object addingService(ServiceReference reference) {
- LogService logService = (LogService) context.getService(reference);
-// logger.setLogService(logService);
- return logService;
- }
- });
- logServiceTracker.open();
-
- // register this as a ManagedService
- Dictionary properties = new Hashtable<>();
- properties.put(Constants.SERVICE_PID, SERVICE_PID);
- serviceRegistration = bundleContext.registerService(ManagedService.class.getName(),
- this, properties);
+ @Activate
+ protected void activate(BundleContext pBundleContext, Map<String, Object> properties) {
+ // store bundleContext
+ bundleContext = pBundleContext;
+
+ modified(properties);
+
}
- @Override
- public void stop(BundleContext context) throws Exception {
+ @Deactivate
+ protected void deactivate(ComponentContext cc) {
if (serviceRegistration != null) {
serviceRegistration.unregister();
serviceRegistration = null;
}
-
- logServiceTracker.close();
- logServiceTracker = null;
-
+
if (discovery != null) {
discovery.stopDiscovery();
discovery.removeHomeListener(this);
discovery = null;
}
-
+
// unregister all cameras
- for(SDTWelcomeCameraDevice sdtWelcomeCamera : sdtCameras.values()) {
+ for (SDTWelcomeCameraDevice sdtWelcomeCamera : sdtCameras.values()) {
sdtWelcomeCamera.unregister();
}
-
+
// unregister all weather stations
- for(SDTWeatherStation sdtWeatherStation : sdtWeatherStations.values()) {
+ for (SDTWeatherStation sdtWeatherStation : sdtWeatherStations.values()) {
sdtWeatherStation.unregister();
}
}
@@ -127,18 +106,17 @@ public class Activator implements BundleActivator, HomeListener, ManagedService
public void notifyCameraAddedOrUpdated(Home home, WelcomeCamera camera, boolean updated) {
if (updated) {
// update
-
+
} else {
// add new camera into welcomeCameras map
synchronized (welcomeCameras) {
welcomeCameras.put(camera.getId(), camera);
}
-
+
// create SDT device
- SDTWelcomeCameraDevice sdtWelcomeCamera =
- new SDTWelcomeCameraDevice(camera, detectionThreshold);
+ SDTWelcomeCameraDevice sdtWelcomeCamera = new SDTWelcomeCameraDevice(camera, detectionThreshold);
sdtWelcomeCamera.register(bundleContext);
-
+
// add into sdtCameras map
synchronized (sdtCameras) {
sdtCameras.put(camera.getId(), sdtWelcomeCamera);
@@ -148,13 +126,15 @@ public class Activator implements BundleActivator, HomeListener, ManagedService
@Override
public void notifyPersonAddedOrUpdated(Home home, Person person, boolean updated) {
- SDTWelcomeCameraDevice sdtWelcomeCamera = getSDTWelcomeCamera(home.getCameras().values().iterator().next().getId());
-
+ SDTWelcomeCameraDevice sdtWelcomeCamera = getSDTWelcomeCamera(
+ home.getCameras().values().iterator().next().getId());
+
if (sdtWelcomeCamera != null) {
// notify person
if (person.getPseudo() == null)
-// logger.debug("Unknwown person... Ignore");
- ;else if (person.getOutOfSight())
+ // logger.debug("Unknwown person... Ignore");
+ ;
+ else if (person.getOutOfSight())
logger.debug(person.getPseudo() + " out of sight. Ignore...");
else {
logger.info("InSight " + person.getPseudo());
@@ -167,49 +147,49 @@ public class Activator implements BundleActivator, HomeListener, ManagedService
@Override
public void notifyEventsUpdated(Home home, List<Event> events) {
-// logger.info("notifyEventsUpdated");
-//
-// // list of events has changed
-// for(Event e : events) {
-// String cameraId = e.getCameraId();
-// String eventType = e.getType();
-// if ("person".equals(eventType)) {
-// String personId = e.getPersonId();
-// Long time = e.getTime();
-// Person person = home.getPerson(personId);
-//
-// // retrieve SDt device
-// SDTWelcomeCameraDevice sdtWelcomeCamera = getSDTWelcomeCamera(cameraId);
-//
-// if (sdtWelcomeCamera != null) {
-// // notify person
-// sdtWelcomeCamera.notifyPerson(personId, person.getPseudo(), time);
-//
-// // no need to continue
-// break;
-// }
-//
-//
-// }
-// }
+ // logger.info("notifyEventsUpdated");
+ //
+ // // list of events has changed
+ // for(Event e : events) {
+ // String cameraId = e.getCameraId();
+ // String eventType = e.getType();
+ // if ("person".equals(eventType)) {
+ // String personId = e.getPersonId();
+ // Long time = e.getTime();
+ // Person person = home.getPerson(personId);
+ //
+ // // retrieve SDt device
+ // SDTWelcomeCameraDevice sdtWelcomeCamera = getSDTWelcomeCamera(cameraId);
+ //
+ // if (sdtWelcomeCamera != null) {
+ // // notify person
+ // sdtWelcomeCamera.notifyPerson(personId, person.getPseudo(), time);
+ //
+ // // no need to continue
+ // break;
+ // }
+ //
+ //
+ // }
+ // }
}
@Override
public void notifyHomeAdded(Home newHome) {
-
+
}
-
+
@Override
public void notifyWeatherStationAddedOrUpdated(WeatherStation ws, boolean updated) {
// register WeatherStation as SDT Device !
logger.info("notifyWeatherStationAddedOrUpdated(ws=" + ws.getId() + ", updated=" + updated + ")");
-
+
if (!updated) {
// add a new WeatherStation
SDTWeatherStation sdtWS = new SDTWeatherStation(ws);
sdtWS.register(bundleContext);
sdtWeatherStations.put(sdtWS.getId(), sdtWS);
-
+
// add new module
for (WeatherStationModule module : ws.getModules().values()) {
SDTWeatherStation sdtModuleWS = new SDTWeatherStation(module);
@@ -217,8 +197,19 @@ public class Activator implements BundleActivator, HomeListener, ManagedService
sdtWeatherStations.put(sdtModuleWS.getId(), sdtModuleWS);
}
}
- }
-
+ }
+
+ @Reference(cardinality = ReferenceCardinality.OPTIONAL, policy = ReferencePolicy.DYNAMIC, name = "logService", unbind = "unsetLogService")
+ protected void setLogService(LogService pLogService) {
+ logger.setLogService(pLogService);
+ logger.info("Netatmo - logger set");
+ }
+
+ protected void unsetLogService(LogService pLogService) {
+ logger.info("Netatmo - logger unset");
+ logger.unsetLogService();
+ }
+
private SDTWelcomeCameraDevice getSDTWelcomeCamera(String cameraId) {
SDTWelcomeCameraDevice sdtWelcomeCamera = null;
synchronized (sdtCameras) {
@@ -227,11 +218,11 @@ public class Activator implements BundleActivator, HomeListener, ManagedService
return sdtWelcomeCamera;
}
- @Override
- public synchronized void updated(Dictionary properties) throws ConfigurationException {
- logger.info("updated(properties=" + properties + ")");
+ @Modified
+ protected void modified(Map<String, Object> properties) {
+ logger.info("modified(properties=" + properties + ")");
// check all parameters are located into properties
- if (! checkParameters(properties)) {
+ if (!checkParameters(properties)) {
logger.info("Missing a mandatory property --> Netatmo driver is not started");
return;
}
@@ -248,20 +239,21 @@ public class Activator implements BundleActivator, HomeListener, ManagedService
discovery.addHomeListener(this);
discovery.startDiscovery();
}
-
+
/**
* Return true if all mandatory parameters are provided
+ *
* @param properties
* @return true if all is ok
*/
- private static boolean checkParameters(Dictionary properties) {
+ private static boolean checkParameters(Map properties) {
logger.info("checkParameters");
if (properties == null) {
// no properties
logger.info("No properties to configure SDT Netatmo Driver --> the driver is not started !");
return false;
}
-
+
logger.info("checkParameter(properties.length=" + properties.size() + ")");
List<String> missing = new ArrayList<String>();
if (properties.get(Discovery.CONFIG_CLIENT_ID) == null) {
@@ -278,8 +270,8 @@ public class Activator implements BundleActivator, HomeListener, ManagedService
}
// retrieve detection threshold
try {
- detectionThreshold =
- Integer.parseInt(properties.get(Discovery.CONFIG_CAMERA_DETECTION_THRESHOLD).toString());
+ detectionThreshold = Integer
+ .parseInt(properties.get(Discovery.CONFIG_CAMERA_DETECTION_THRESHOLD).toString());
} catch (Exception e) {
detectionThreshold = -1;
}
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Discovery.java b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Discovery.java
index 92271f24..4b805b1f 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Discovery.java
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/main/java/org/eclipse/om2m/sdt/home/netatmo/impl/Discovery.java
@@ -53,7 +53,7 @@ public class Discovery {
private boolean useLocalUrl = false;
@SuppressWarnings("rawtypes")
- public Discovery(Dictionary properties) {
+ public Discovery(Map properties) {
// retrieve useLocalUrl
Object useLocalUrlProp = properties.get(CONFIG_CAMERA_USE_LOCAL_URL);
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/test/java/org/eclipse/om2m/sdt/home/netatmo/impl/DiscoveryTestCase.java b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/test/java/org/eclipse/om2m/sdt/home/netatmo/impl/DiscoveryTestCase.java
index 76e279c2..652a5664 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/test/java/org/eclipse/om2m/sdt/home/netatmo/impl/DiscoveryTestCase.java
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.netatmo/src/test/java/org/eclipse/om2m/sdt/home/netatmo/impl/DiscoveryTestCase.java
@@ -9,6 +9,7 @@ package org.eclipse.om2m.sdt.home.netatmo.impl;
import java.io.FileInputStream;
import java.util.Dictionary;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
@@ -20,7 +21,7 @@ import junit.framework.TestCase;
public class DiscoveryTestCase extends TestCase {
- private Dictionary<String, String> configuration;
+ private Map<String, String> configuration;
@Override
protected void setUp() throws Exception {
@@ -29,7 +30,7 @@ public class DiscoveryTestCase extends TestCase {
Properties properties = new Properties();
properties.load(new FileInputStream("src/test/resources/netatmo.sdt.driver.properties"));
- configuration = new Hashtable<>();
+ configuration = new HashMap();
configuration.put(Discovery.CONFIG_CLIENT_ID, properties.getProperty(Discovery.CONFIG_CLIENT_ID));
configuration.put(Discovery.CONFIG_CLIENT_SECRET, properties.getProperty(Discovery.CONFIG_CLIENT_SECRET));
configuration.put(Discovery.CONFIG_USERNAME, properties.getProperty(Discovery.CONFIG_USERNAME));

Back to the top