Repository: karaf Updated Branches: refs/heads/karaf-4.0.x 58e08f070 -> 130caa858
KARAF-3997 - Provide a RegionDigraphPersistence service Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/130caa85 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/130caa85 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/130caa85 Branch: refs/heads/karaf-4.0.x Commit: 130caa8582bfe41acdc87e93471bbb2b37896ae7 Parents: 58e08f0 Author: Guillaume Nodet <[email protected]> Authored: Thu Aug 25 12:20:23 2016 +0200 Committer: Guillaume Nodet <[email protected]> Committed: Thu Aug 25 12:30:55 2016 +0200 ---------------------------------------------------------------------- .../features/RegionDigraphPersistence.java | 24 ++++++++++++++++++++ .../karaf/features/internal/osgi/Activator.java | 22 ++++++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/130caa85/features/core/src/main/java/org/apache/karaf/features/RegionDigraphPersistence.java ---------------------------------------------------------------------- diff --git a/features/core/src/main/java/org/apache/karaf/features/RegionDigraphPersistence.java b/features/core/src/main/java/org/apache/karaf/features/RegionDigraphPersistence.java new file mode 100644 index 0000000..7c890a1 --- /dev/null +++ b/features/core/src/main/java/org/apache/karaf/features/RegionDigraphPersistence.java @@ -0,0 +1,24 @@ +/* + * 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.karaf.features; + +import java.io.IOException; + +public interface RegionDigraphPersistence { + + void persistRegionDigraph() throws IOException; +} http://git-wip-us.apache.org/repos/asf/karaf/blob/130caa85/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java ---------------------------------------------------------------------- diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java b/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java index e9bde40..a2b7776 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/osgi/Activator.java @@ -34,6 +34,7 @@ import org.apache.felix.resolver.ResolverImpl; import org.apache.felix.utils.properties.Properties; import org.apache.karaf.features.FeaturesListener; import org.apache.karaf.features.FeaturesService; +import org.apache.karaf.features.RegionDigraphPersistence; import org.apache.karaf.features.internal.management.FeaturesServiceMBeanImpl; import org.apache.karaf.features.internal.region.DigraphHelper; import org.apache.karaf.features.internal.repository.AggregateRepository; @@ -71,7 +72,8 @@ import org.osgi.util.tracker.ServiceTrackerCustomizer; }, provides = { @ProvideService(FeaturesService.class), - @ProvideService(RegionDigraph.class) + @ProvideService(RegionDigraph.class), + @ProvideService(RegionDigraphPersistence.class) } ) public class Activator extends BaseActivator { @@ -133,6 +135,7 @@ public class Activator extends BaseActivator { register(org.osgi.framework.hooks.service.FindHook.class, dg.getServiceFindHook()); register(org.osgi.framework.hooks.service.EventHook.class, dg.getServiceEventHook()); register(RegionDigraph.class, dg); + register(RegionDigraphPersistence.class, createRegionDigraphPersister()); StandardManageableRegionDigraph dgmb = digraphMBean = new StandardManageableRegionDigraph(dg, "org.apache.karaf", bundleContext); dgmb.registerMBean(); @@ -280,13 +283,28 @@ public class Activator extends BaseActivator { featuresService = null; } if (digraph != null) { + doPersistRegionDigraph(); + digraph = null; + } + } + + private void doPersistRegionDigraph() { + if (digraph != null) { try { DigraphHelper.saveDigraph(bundleContext, digraph); } catch (Exception e) { // Ignore } - digraph = null; } } + private RegionDigraphPersistence createRegionDigraphPersister() { + return new RegionDigraphPersistence() { + @Override + public void persistRegionDigraph() throws IOException { + doPersistRegionDigraph(); + } + }; + } + }
