Replace Activator by a Component
diff --git a/platform/sensinact-application/application-manager/pom.xml b/platform/sensinact-application/application-manager/pom.xml
index 21c6392..1a07027 100644
--- a/platform/sensinact-application/application-manager/pom.xml
+++ b/platform/sensinact-application/application-manager/pom.xml
@@ -41,7 +41,7 @@
org.eclipse.sensinact.gateway.app.manager.component.data,
org.eclipse.sensinact.gateway.app.manager.json
</Export-Package>
- <Bundle-Activator>org.eclipse.sensinact.gateway.app.manager.osgi.Activator</Bundle-Activator>
+ <!-- <Bundle-Activator>org.eclipse.sensinact.gateway.app.manager.osgi.Activator</Bundle-Activator>-->
<Include-Resource>
about.html,
src/main/resources/
diff --git a/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/osgi/Activator.java b/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/osgi/ApplicationManagerConfigurator.java
similarity index 63%
rename from platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/osgi/Activator.java
rename to platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/osgi/ApplicationManagerConfigurator.java
index 03efd05..1c79a42 100644
--- a/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/osgi/Activator.java
+++ b/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/osgi/ApplicationManagerConfigurator.java
@@ -10,39 +10,63 @@
*/
package org.eclipse.sensinact.gateway.app.manager.osgi;
+import java.io.File;
+import java.util.Map;
+
import org.eclipse.sensinact.gateway.app.api.persistence.ApplicationPersistenceService;
import org.eclipse.sensinact.gateway.app.manager.application.persistence.SNAPersistApplicationFileSystem;
import org.eclipse.sensinact.gateway.app.manager.application.persistence.SNAPersistApplicationInMemory;
import org.eclipse.sensinact.gateway.app.manager.internal.AppManagerFactory;
import org.eclipse.sensinact.gateway.common.annotation.Property;
-import org.eclipse.sensinact.gateway.common.bundle.AbstractActivator;
-import org.osgi.framework.BundleContext;
+import org.eclipse.sensinact.gateway.common.interpolator.Interpolator;
+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.Deactivate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-
/**
- * @author Remi Druilhe
- * @see AbstractActivator
+ *
*/
-public class Activator extends AbstractActivator<AppServiceMediator> {
- private static Logger LOG = LoggerFactory.getLogger(Activator.class);
+@Component(immediate=true)
+public class ApplicationManagerConfigurator {
+
+ private static Logger LOG = LoggerFactory.getLogger(ApplicationManagerConfigurator.class);
+
private AppManagerFactory appManagerFactory;
private Thread persistenceThread;
+
@Property(defaultValue = "application")
private String directory;
+
@Property(validationRegex = Property.INTEGER, mandatory=false, defaultValue="0")
private Long updateFileCheck;
+
@Property(mandatory = false, defaultValue="false")
private Boolean applicationPersist;
+
@Property(defaultValue = "json", validationRegex = Property.ALPHANUMERIC)
private String applicationFileExtension;
- /**
- * @see AbstractActivator#doStart()
- */
- public void doStart() throws Exception {
+ private AppServiceMediator mediator;
+
+ protected void injectPropertyFields() throws Exception {
+ this.mediator.debug("Starting introspection in bundle %s", mediator.getContext().getBundle().getSymbolicName());
+ Interpolator interpolator = new Interpolator(this.mediator);
+ interpolator.getInstance(this);
+ for(Map.Entry<String,String> entry:interpolator.getPropertiesInjected().entrySet()){
+ if(!this.mediator.getProperties().containsKey(entry.getKey()))
+ mediator.setProperty(entry.getKey(),entry.getValue());
+ }
+ }
+
+ @Activate
+ public void activate(ComponentContext componentContext) throws Exception {
+
+ this.mediator = new AppServiceMediator(componentContext.getBundleContext());
+ injectPropertyFields();
+
ApplicationPersistenceService directoryMonitor = null;
if (applicationPersist) {
LOG.info("Filesystem Persistence mechanism is ON");
@@ -60,18 +84,9 @@
persistenceThread.start();
}
- /**
- * @see AbstractActivator#doStop()
- */
- public void doStop() throws Exception {
+ @Deactivate
+ public void deactivate() throws Exception {
if (persistenceThread != null) persistenceThread.interrupt();
this.appManagerFactory.deleteAppManager();
}
-
- /**
- * @see AbstractActivator#doInstantiate(BundleContext)
- */
- public AppServiceMediator doInstantiate(BundleContext context) {
- return new AppServiceMediator(context);
- }
}