TAMAYA-297: Added OSGI Config trigger for Tamaya changes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/99ce49ed Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/99ce49ed Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/99ce49ed Branch: refs/heads/java8 Commit: 99ce49ed39e938e0d2fb019ef2f5a3270c2c7789 Parents: 7855482 Author: anatole <anat...@apache.org> Authored: Tue Sep 19 22:00:11 2017 +0200 Committer: anatole <anat...@apache.org> Committed: Tue Sep 19 22:00:11 2017 +0200 ---------------------------------------------------------------------- osgi/common/bnd.bnd | 2 +- .../org/apache/tamaya/osgi/ConfigHistory.java | 62 +++++++++-------- .../org/apache/tamaya/osgi/InitialState.java | 65 ++++++++++++------ .../tamaya/karaf/shell/BackupCreateCommand.java | 68 ++++++++++++++++++ .../tamaya/karaf/shell/BackupDeleteCommand.java | 49 +++++++++++++ .../tamaya/karaf/shell/BackupListCommand.java | 72 ++++++++++++++++++++ .../karaf/shell/HistorySizeGetCommand.java | 47 +++++++++++++ .../karaf/shell/HistorySizeSetCommand.java | 56 +++++++++++++++ .../org/apache/tamaya/karaf/shell/commands | 5 ++ osgi/pom.xml | 1 + .../apache/tamaya/osgi/updater/Activator.java | 2 + 11 files changed, 379 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/common/bnd.bnd ---------------------------------------------------------------------- diff --git a/osgi/common/bnd.bnd b/osgi/common/bnd.bnd index 51175cb..22c802c 100644 --- a/osgi/common/bnd.bnd +++ b/osgi/common/bnd.bnd @@ -19,7 +19,7 @@ Bundle-License: Apache Licence version 2 Bundle-Vendor: Apache Software Foundation Bundle-ContactAddress: dev-tam...@incubator.apache.org Bundle-DocURL: http://tamaya.apache.org -Bundle-Activator: org.apache.tamaya.osgi.updater.Activator +Bundle-Activator: org.apache.tamaya.osgi.Activator Export-Package: \ org.apache.tamaya.osgi Import-Package: \ http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java ---------------------------------------------------------------------- diff --git a/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java b/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java index 42ecca6..9a2e5a9 100644 --- a/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java +++ b/osgi/common/src/main/java/org/apache/tamaya/osgi/ConfigHistory.java @@ -20,16 +20,19 @@ package org.apache.tamaya.osgi; import java.beans.XMLDecoder; import java.beans.XMLEncoder; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; +import java.io.*; import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Class storing the history of changers done to the OSGI configuration by Tamaya. * This class can be used in the future to restore the previous state, if needed. */ -public final class ConfigHistory { +public final class ConfigHistory implements Serializable{ + + private static final long serialVersionUID = 1L; + private static final Logger LOG = Logger.getLogger(ConfigHistory.class.getName()); public enum TaskType{ PROPERTY, @@ -38,17 +41,7 @@ public final class ConfigHistory { } private static int maxHistory = 10000; - private static List<ConfigHistory> history = new LinkedList<ConfigHistory>(){ - - @Override - public boolean add(ConfigHistory o) { - boolean val = super.add(o); - if(val && size() > maxHistory){ - remove(); - } - return val; - } - }; + private static List<ConfigHistory> history = new LinkedList<ConfigHistory>(); private long timestamp = System.currentTimeMillis(); @@ -68,6 +61,7 @@ public final class ConfigHistory { .setValue(info); synchronized (history){ history.add(h); + checkHistorySize(); } return h; } @@ -76,6 +70,7 @@ public final class ConfigHistory { .setValue(info); synchronized (history){ history.add(h); + checkHistorySize(); } return h; } @@ -86,6 +81,7 @@ public final class ConfigHistory { .setValue(value); synchronized (history){ history.add(h); + checkHistorySize(); } return h; } @@ -167,23 +163,29 @@ public final class ConfigHistory { } public static void save(TamayaConfigPlugin plugin){ - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - XMLEncoder encoder = new XMLEncoder(bos, "UTF-8", false, 4); - encoder.writeObject(history); try { - bos.flush(); - plugin.setConfigValue("history", new String(bos.toByteArray())); - } catch (IOException e) { - e.printStackTrace(); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(bos); + oos.writeObject(history); + oos.flush(); + Base64.getEncoder().encode(bos.toByteArray()); + plugin.setConfigValue("history", Base64.getEncoder().encode(bos.toByteArray())); + } catch (Exception e) { + LOG.log(Level.WARNING, "Failed to store config change history.", e); } } public static void restore(TamayaConfigPlugin plugin){ - String serialized = (String)plugin.getConfigValue("history"); - if(serialized!=null) { - ByteArrayInputStream bis = new ByteArrayInputStream(serialized.getBytes()); - XMLDecoder encoder = new XMLDecoder(bis); - ConfigHistory.history = (List<ConfigHistory>) encoder.readObject(); + try{ + String serialized = (String)plugin.getConfigValue("history"); + if(serialized!=null) { + ByteArrayInputStream bis = new ByteArrayInputStream(Base64.getDecoder().decode(serialized)); + ObjectInputStream ois = new ObjectInputStream(bis); + ConfigHistory.history = (List<ConfigHistory>) ois.readObject(); + ois.close(); + } + } catch (Exception e) { + LOG.log(Level.WARNING, "Failed to store config change history.", e); } } @@ -196,4 +198,10 @@ public final class ConfigHistory { ", key='" + key + '\'' + '}'; } + + private static void checkHistorySize(){ + while(history.size() > maxHistory){ + history.remove(0); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/common/src/main/java/org/apache/tamaya/osgi/InitialState.java ---------------------------------------------------------------------- diff --git a/osgi/common/src/main/java/org/apache/tamaya/osgi/InitialState.java b/osgi/common/src/main/java/org/apache/tamaya/osgi/InitialState.java index faf50e5..0a0de21 100644 --- a/osgi/common/src/main/java/org/apache/tamaya/osgi/InitialState.java +++ b/osgi/common/src/main/java/org/apache/tamaya/osgi/InitialState.java @@ -18,28 +18,43 @@ */ package org.apache.tamaya.osgi; -import java.beans.XMLDecoder; -import java.beans.XMLEncoder; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Dictionary; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Created by atsticks on 19.09.17. */ public final class InitialState { - private static Map<String, Dictionary<String,?>> initialConfigState = new ConcurrentHashMap<>(); + private static final Logger LOG = Logger.getLogger(InitialState.class.getName()); + private static Map<String, Hashtable<String,?>> initialConfigState = new ConcurrentHashMap<>(); private InitialState(){} public static void set(String pid, Dictionary<String,?> config){ - initialConfigState.put(pid, config); + initialConfigState.put(pid, toHashtable(config)); + } + + private static Hashtable<String, ?> toHashtable(Dictionary<String, ?> dictionary) { + if (dictionary == null) { + return null; + } + if(dictionary instanceof Hashtable){ + return (Hashtable) dictionary; + } + Hashtable<String, Object> map = new Hashtable<>(dictionary.size()); + Enumeration<String> keys = dictionary.keys(); + while (keys.hasMoreElements()) { + String key = keys.nextElement(); + map.put(key, dictionary.get(key)); + } + return map; } public static Dictionary<String,?> remove(String pid){ @@ -67,23 +82,29 @@ public final class InitialState { } public static void save(TamayaConfigPlugin plugin){ - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - XMLEncoder encoder = new XMLEncoder(bos, "UTF-8", false, 4); - encoder.writeObject(initialConfigState); - try { - bos.flush(); - plugin.setConfigValue("backup", new String(bos.toByteArray())); - } catch (IOException e) { - e.printStackTrace(); + try{ + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(bos); + oos.writeObject(initialConfigState); + oos.flush(); + Base64.getEncoder().encode(bos.toByteArray()); + plugin.setConfigValue("backup", Base64.getEncoder().encode(bos.toByteArray())); + }catch(Exception e){ + LOG.log(Level.SEVERE, "Failed to restore OSGI Backups.", e); } } public static void restore(TamayaConfigPlugin plugin){ - String serialized = (String)plugin.getConfigValue("history"); - if(serialized!=null) { - ByteArrayInputStream bis = new ByteArrayInputStream(serialized.getBytes()); - XMLDecoder encoder = new XMLDecoder(bis); - InitialState.initialConfigState = (Map<String, Dictionary<String,?>>) encoder.readObject(); + try{ + String serialized = (String)plugin.getConfigValue("backup"); + if(serialized!=null) { + ByteArrayInputStream bis = new ByteArrayInputStream(Base64.getDecoder().decode(serialized)); + ObjectInputStream ois = new ObjectInputStream(bis); + initialConfigState = (Map<String, Hashtable<String,?>>) ois.readObject(); + ois.close(); + } + } catch (Exception e) { + LOG.log(Level.WARNING, "Failed to store config change history.", e); } } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupCreateCommand.java ---------------------------------------------------------------------- diff --git a/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupCreateCommand.java b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupCreateCommand.java new file mode 100644 index 0000000..3346e80 --- /dev/null +++ b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupCreateCommand.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tamaya.karaf.shell; + +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Option; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.tamaya.osgi.InitialState; +import org.apache.tamaya.osgi.TamayaConfigPlugin; +import org.osgi.service.cm.Configuration; +import org.osgi.service.cm.ConfigurationAdmin; +import org.osgi.service.component.annotations.Reference; + +import java.io.IOException; +import java.util.Dictionary; + +@Command(scope = "tamaya", name = "backup-create", description="Creates a backup of a current OSGI configuration.") +@Service +public class BackupCreateCommand implements Action{ + + @Argument(index = 0, name = "pid", description = "The target pid to backup.", + required = true, multiValued = false) + String pid; + + @Option(name = "--force", aliases = "-f", description = "Forces to (over)write a backup, even if one already exists.", + required = false, multiValued = false) + boolean replace; + + @org.apache.karaf.shell.api.action.lifecycle.Reference + ConfigurationAdmin cm; + + @Override + public Object execute() throws IOException { + Configuration cfg = cm.getConfiguration(pid); + if(cfg!=null){ + Dictionary<String,?> props = cfg.getProperties(); + if(props!=null){ + if(replace || !InitialState.contains(pid)){ + InitialState.set(pid, props); + System.out.println("Backup created, PID = " + pid); + BackupListCommand.printProps(props); + return null; + } + } + } + System.out.println("No Config found, PID = " + pid); + return null; + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupDeleteCommand.java ---------------------------------------------------------------------- diff --git a/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupDeleteCommand.java b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupDeleteCommand.java new file mode 100644 index 0000000..2c3f4be --- /dev/null +++ b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupDeleteCommand.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tamaya.karaf.shell; + +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.tamaya.osgi.InitialState; + +import java.io.IOException; + +@Command(scope = "tamaya", name = "backup-delete", description="Deletes the OSGI configuration backup of Tamya.") +@Service +public class BackupDeleteCommand implements Action{ + + @Argument(index = 0, name = "pid", description = "Allows to filter on the given PID. '*' removes all backups.", + required = true, multiValued = false) + String pid; + + @Override + public Object execute() throws IOException { + if("*".equals(pid)){ + InitialState.removeAll(); + System.out.println("All Backups deleted."); + }else { + InitialState.remove(pid); + System.out.println("Backup deleted: " + pid); + } + return null; + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupListCommand.java ---------------------------------------------------------------------- diff --git a/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupListCommand.java b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupListCommand.java new file mode 100644 index 0000000..d252586 --- /dev/null +++ b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/BackupListCommand.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tamaya.karaf.shell; + +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.tamaya.osgi.InitialState; + +import java.io.IOException; +import java.util.Dictionary; +import java.util.Enumeration; +import java.util.Map; + +@Command(scope = "tamaya", name = "backup-list", description="Gets the OSGI configuration before Tamya applied changes.") +@Service +public class BackupListCommand implements Action{ + + @Argument(index = 0, name = "pid", description = "Allows to filter on the given PID.", + required = false, multiValued = false) + String pid; + + @Override + public Object execute() throws IOException { + if(pid!=null){ + Dictionary<String, ?> props = InitialState.get(pid); + if(props==null){ + System.out.println("No backup found: " + pid); + }else{ + System.out.println("PID: " + pid); + printProps(props); + } + }else { + for(Map.Entry<String, Dictionary<String,?>> en: InitialState.get().entrySet()){ + System.out.println("PID: " + en.getKey()); + printProps(en.getValue()); + } + } + return null; + } + + public static void printProps(Dictionary<String, ?> props) { + System.out.print(StringUtil.format(" Key", 50)); + System.out.println(StringUtil.format(" Value", 50)); + System.out.println(" " + StringUtil.printRepeat("-", 100)); + Enumeration<String> keys = props.keys(); + while(keys.hasMoreElements()){ + String key = keys.nextElement(); + System.out.print(" " + StringUtil.format(key, 50)); + System.out.println(" " + StringUtil.format(String.valueOf(props.get(key)), 50)); + } + System.out.println(); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/HistorySizeGetCommand.java ---------------------------------------------------------------------- diff --git a/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/HistorySizeGetCommand.java b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/HistorySizeGetCommand.java new file mode 100644 index 0000000..3658191 --- /dev/null +++ b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/HistorySizeGetCommand.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tamaya.karaf.shell; + +import org.apache.karaf.shell.api.action.*; +import org.apache.karaf.shell.api.action.lifecycle.Reference; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.shell.api.console.CommandLine; +import org.apache.karaf.shell.api.console.Completer; +import org.apache.karaf.shell.api.console.Session; +import org.apache.karaf.shell.support.completers.StringsCompleter; +import org.apache.tamaya.osgi.ConfigHistory; +import org.apache.tamaya.osgi.TamayaConfigPlugin; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Command(scope = "tamaya", name = "history-size-get", description="Gets the maximal size of stored history entries.") +@Service +public class HistorySizeGetCommand implements Action{ + + @Override + public Object execute() throws IOException { + System.out.println(ConfigHistory.getMaxHistory()); + return null; + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/HistorySizeSetCommand.java ---------------------------------------------------------------------- diff --git a/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/HistorySizeSetCommand.java b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/HistorySizeSetCommand.java new file mode 100644 index 0000000..ed6ff5a --- /dev/null +++ b/osgi/karaf-shell/src/main/java/org/apache/tamaya/karaf/shell/HistorySizeSetCommand.java @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tamaya.karaf.shell; + +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; +import org.apache.karaf.shell.api.action.lifecycle.Reference; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.shell.api.console.CommandLine; +import org.apache.karaf.shell.api.console.Completer; +import org.apache.karaf.shell.api.console.Session; +import org.apache.karaf.shell.support.completers.StringsCompleter; +import org.apache.tamaya.osgi.ConfigHistory; +import org.apache.tamaya.osgi.OperationMode; +import org.apache.tamaya.osgi.TamayaConfigPlugin; + +import java.io.IOException; +import java.util.List; + +@Command(scope = "tamaya", name = "history-size-set", description="Sets the maximal size of Tamaya history entries.") +@Service +public class HistorySizeSetCommand implements Action{ + + @Reference + private TamayaConfigPlugin configPlugin; + + @Argument(index = 0, name = "size", description = "The maximum number of entries in the history.", + required = true, multiValued = false) + int maxSize; + + @Override + public Object execute() throws IOException { + ConfigHistory.setMaxHistory(maxSize); + System.out.println("ConfigHistory.maxSize="+maxSize); + return null; + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/karaf-shell/src/main/resources/META-INF/services/org/apache/tamaya/karaf/shell/commands ---------------------------------------------------------------------- diff --git a/osgi/karaf-shell/src/main/resources/META-INF/services/org/apache/tamaya/karaf/shell/commands b/osgi/karaf-shell/src/main/resources/META-INF/services/org/apache/tamaya/karaf/shell/commands index d8f2000..56a9ff8 100644 --- a/osgi/karaf-shell/src/main/resources/META-INF/services/org/apache/tamaya/karaf/shell/commands +++ b/osgi/karaf-shell/src/main/resources/META-INF/services/org/apache/tamaya/karaf/shell/commands @@ -16,11 +16,16 @@ # specific language governing permissions and limitations # under the License. # +org.apache.tamaya.karaf.shell.BackupCreateCommand +org.apache.tamaya.karaf.shell.BackupDeleteCommand +org.apache.tamaya.karaf.shell.BackupListCommand org.apache.tamaya.karaf.shell.ConfigCommand org.apache.tamaya.karaf.shell.DefaultDisableCommand org.apache.tamaya.karaf.shell.GetPolicyCommand org.apache.tamaya.karaf.shell.HistoryClearCommand org.apache.tamaya.karaf.shell.HistoryGetCommand +org.apache.tamaya.karaf.shell.HistorySizeGetCommand +org.apache.tamaya.karaf.shell.HistorySizeSetCommand org.apache.tamaya.karaf.shell.InfoCommand org.apache.tamaya.karaf.shell.PolicyGetCommand org.apache.tamaya.karaf.shell.PolicySetCommand http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/pom.xml ---------------------------------------------------------------------- diff --git a/osgi/pom.xml b/osgi/pom.xml index 4797b94..8a30a69 100644 --- a/osgi/pom.xml +++ b/osgi/pom.xml @@ -288,6 +288,7 @@ <modules> <module>common</module> + <module>updater</module> <module>karaf-shell</module> <!--<module>karaf-features</module>--> </modules> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99ce49ed/osgi/updater/src/main/java/org/apache/tamaya/osgi/updater/Activator.java ---------------------------------------------------------------------- diff --git a/osgi/updater/src/main/java/org/apache/tamaya/osgi/updater/Activator.java b/osgi/updater/src/main/java/org/apache/tamaya/osgi/updater/Activator.java index 55bbd6d..4c2c50b 100644 --- a/osgi/updater/src/main/java/org/apache/tamaya/osgi/updater/Activator.java +++ b/osgi/updater/src/main/java/org/apache/tamaya/osgi/updater/Activator.java @@ -46,6 +46,7 @@ public class Activator implements BundleActivator { listener = new EventListener(context); ConfigEventManager.addListener(listener, ConfigurationChange.class); LOG.info("Registered Tamaya config trigger for OSGI."); + ConfigEventManager.enableChangeMonitoring(true); } @Override @@ -53,6 +54,7 @@ public class Activator implements BundleActivator { if (listener != null) { ConfigEventManager.removeListener(this.listener, ConfigurationChange.class); LOG.info("Unregistered Tamaya config trigger for OSGI."); + ConfigEventManager.enableChangeMonitoring(false); } }