Repository: karaf Updated Branches: refs/heads/master 90ce21682 -> 791ebb5f9
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/791ebb5f Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/791ebb5f Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/791ebb5f Branch: refs/heads/master Commit: 791ebb5f908e27fa389616c8bba456cf85807f4d Parents: 90ce216 Author: Guillaume Nodet <[email protected]> Authored: Thu Aug 25 12:20:37 2016 +0200 Committer: Guillaume Nodet <[email protected]> Committed: Thu Aug 25 12:32:30 2016 +0200 ---------------------------------------------------------------------- .../features/RegionDigraphPersistence.java | 24 ++++++++++++++++++++ .../karaf/features/internal/osgi/Activator.java | 13 +++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/791ebb5f/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/791ebb5f/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 f89dc70..1dce245 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 @@ -33,6 +33,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; @@ -72,7 +73,8 @@ import org.slf4j.LoggerFactory; }, provides = { @ProvideService(FeaturesService.class), - @ProvideService(RegionDigraph.class) + @ProvideService(RegionDigraph.class), + @ProvideService(RegionDigraphPersistence.class) } ) public class Activator extends BaseActivator { @@ -131,6 +133,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, this::doPersistRegionDigraph); StandardManageableRegionDigraph dgmb = digraphMBean = new StandardManageableRegionDigraph(dg, "org.apache.karaf", bundleContext); dgmb.registerMBean(); @@ -278,12 +281,18 @@ 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; } }
