Adding config admin support
Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/8b9fd648 Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/8b9fd648 Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/8b9fd648 Branch: refs/heads/EventAdmin Commit: 8b9fd64844dc08b0f6e12f9a5aa499644bbaa48d Parents: fde7be5 f19041a Author: Christian Schneider <[email protected]> Authored: Mon Mar 16 17:19:35 2015 +0100 Committer: Christian Schneider <[email protected]> Committed: Mon Mar 16 17:19:35 2015 +0100 ---------------------------------------------------------------------- appender/elasticsearch/pom.xml | 21 +++++++++- ...he.karaf.decanter.appender.elasticsearch.cfg | 2 + .../appender/elasticsearch/Activator.java | 44 +++++++++++++++++--- assembly/src/main/feature/feature.xml | 1 + 4 files changed, 61 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/8b9fd648/appender/elasticsearch/pom.xml ---------------------------------------------------------------------- diff --cc appender/elasticsearch/pom.xml index 9cf873f,7fb4ee8..26732e9 --- a/appender/elasticsearch/pom.xml +++ b/appender/elasticsearch/pom.xml @@@ -45,43 -53,62 +45,62 @@@ <groupId>org.osgi</groupId> <artifactId>org.osgi.compendium</artifactId> </dependency> - - <!-- JSON builder --> - <dependency> - <groupId>javax.json</groupId> - <artifactId>javax.json-api</artifactId> - </dependency> - <!-- SLF4J --> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> + <!-- JSON builder --> + <dependency> + <groupId>javax.json</groupId> + <artifactId>javax.json-api</artifactId> + </dependency> + <!-- SLF4J --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> - </dependencies> + </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <inherited>true</inherited> - <extensions>true</extensions> - <configuration> - <instructions> - <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> - <Bundle-Version>${project.version}</Bundle-Version> - <Bundle-Activator>org.apache.karaf.decanter.appender.elasticsearch.Activator</Bundle-Activator> - <Import-Package> - org.apache.karaf.decanter.api;version=${project.version}, - org.slf4j;version="[1.7,2)";resolution:=optional, - org.elasticsearch*;version="[1,2)", - * - </Import-Package> - </instructions> - </configuration> - </plugin> + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <inherited>true</inherited> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> + <Bundle-Version>${project.version}</Bundle-Version> + <Bundle-Activator>org.apache.karaf.decanter.appender.elasticsearch.Activator</Bundle-Activator> + <Import-Package> + org.apache.karaf.decanter.api;version=${project.version}, + org.slf4j;version="[1.7,2)";resolution:=optional, + org.elasticsearch*;version="[1,2)", + * + </Import-Package> + </instructions> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>src/main/cfg/org.apache.karaf.decanter.appender.elasticsearch.cfg</file> + <type>cfg</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> - </plugins> - </build> + </plugins> + </build> </project> http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/8b9fd648/appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/Activator.java ---------------------------------------------------------------------- diff --cc appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/Activator.java index 553d778,0aad636..05a6971 --- a/appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/Activator.java +++ b/appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/Activator.java @@@ -19,10 -19,13 +19,14 @@@ package org.apache.karaf.decanter.appen import java.util.Dictionary; import java.util.Hashtable; -import org.apache.karaf.decanter.api.Appender; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; +import org.osgi.service.event.EventConstants; +import org.osgi.service.event.EventHandler; + import org.osgi.framework.Constants; + import org.osgi.framework.ServiceRegistration; + import org.osgi.service.cm.ConfigurationException; + import org.osgi.service.cm.ManagedService; public class Activator implements BundleActivator { @@@ -38,7 -41,34 +42,35 @@@ } public void stop(BundleContext bundleContext) { + appender.close(); + if (appender != null) { + appender.close(); + } } + private final class ConfigUpdater implements ManagedService { + private BundleContext bundleContext; + private ServiceRegistration<?> serviceReg; + + public ConfigUpdater(BundleContext bundleContext) { + this.bundleContext = bundleContext; + } + + @SuppressWarnings("rawtypes") + @Override + public void updated(Dictionary config) throws ConfigurationException { + if (appender != null) { + appender.close(); + serviceReg.unregister(); + } + + String host = config != null ? (String)config.get("host") : "localhost"; + int port = config != null ? Integer.parseInt((String)config.get("port")) : 9300; + appender = new ElasticsearchAppender(host, port); + appender.open(); + Dictionary<String, String> properties = new Hashtable<>(); - properties.put("name", "elasticsearch"); - serviceReg = bundleContext.registerService(Appender.class, appender, properties); ++ properties.put(EventConstants.EVENT_TOPIC, "decanter/*"); ++ serviceReg = bundleContext.registerService(EventHandler.class, appender, properties); + } + } } http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/8b9fd648/assembly/src/main/feature/feature.xml ----------------------------------------------------------------------
