Repository: karaf Updated Branches: refs/heads/EXPERIMENTAL_DS [created] 76bbf3fa2
Switch bundle core to DS Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/76bbf3fa Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/76bbf3fa Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/76bbf3fa Branch: refs/heads/EXPERIMENTAL_DS Commit: 76bbf3fa2494a340d1d7b46f712f703fc5c84689 Parents: fe928b8 Author: Christian Schneider <[email protected]> Authored: Thu Mar 17 16:28:12 2016 +0100 Committer: Christian Schneider <[email protected]> Committed: Thu Mar 17 16:28:12 2016 +0100 ---------------------------------------------------------------------- .../standard/src/main/feature/feature.xml | 1 + bundle/core/pom.xml | 5 +- .../karaf/bundle/command/BundlesCommand.java | 2 - .../apache/karaf/bundle/command/Services.java | 1 - .../bundle/core/internal/BundleServiceImpl.java | 32 ++++--- .../bundle/core/internal/BundleWatcherImpl.java | 27 +++--- .../bundle/core/internal/BundlesMBeanImpl.java | 23 +++-- .../core/internal/MavenConfigService.java | 11 +-- .../bundle/core/internal/osgi/Activator.java | 94 -------------------- .../karaf/bundle/command/ListServicesTest.java | 5 +- 10 files changed, 65 insertions(+), 136 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/assemblies/features/standard/src/main/feature/feature.xml ---------------------------------------------------------------------- diff --git a/assemblies/features/standard/src/main/feature/feature.xml b/assemblies/features/standard/src/main/feature/feature.xml index 4447b72..6e075fd 100644 --- a/assemblies/features/standard/src/main/feature/feature.xml +++ b/assemblies/features/standard/src/main/feature/feature.xml @@ -146,6 +146,7 @@ <feature name="bundle" description="Provide Bundle support" version="${project.version}"> <feature>jaas-boot</feature> + <feature>scr</feature> <bundle start-level="30" start="true">mvn:org.apache.karaf.bundle/org.apache.karaf.bundle.core/${project.version}</bundle> <conditional> <condition>management</condition> http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/pom.xml ---------------------------------------------------------------------- diff --git a/bundle/core/pom.xml b/bundle/core/pom.xml index a825414..3c32963 100644 --- a/bundle/core/pom.xml +++ b/bundle/core/pom.xml @@ -48,11 +48,13 @@ <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.core</artifactId> + <version>6.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> + <artifactId>osgi.cmpn</artifactId> + <version>6.0.0</version> <scope>provided</scope> </dependency> <dependency> @@ -123,6 +125,7 @@ <artifactId>maven-bundle-plugin</artifactId> <configuration> <instructions> + <_dsannotations>*</_dsannotations> <Export-Package> org.apache.karaf.bundle.core;-noimport:=true </Export-Package> http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java b/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java index 25a2125..03d8dea 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java @@ -20,13 +20,11 @@ import java.util.ArrayList; import java.util.List; import org.apache.karaf.bundle.core.BundleService; -import org.apache.karaf.bundle.core.internal.BundleSelectorImpl; import org.apache.karaf.shell.api.action.Action; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Option; import org.apache.karaf.shell.api.action.lifecycle.Reference; import org.apache.karaf.shell.support.MultiException; -import org.apache.karaf.shell.support.ShellUtil; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java b/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java index 5b2080d..b8b4a9b 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java @@ -18,7 +18,6 @@ package org.apache.karaf.bundle.command; import java.util.Arrays; import java.util.HashSet; -import java.util.List; import java.util.Set; import org.apache.karaf.shell.api.action.Command; http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java index 60ef59b..6fe9448 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java @@ -16,6 +16,9 @@ */ package org.apache.karaf.bundle.core.internal; +import static java.lang.String.format; +import static org.osgi.service.component.annotations.ReferenceCardinality.MULTIPLE; + import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -42,11 +45,12 @@ import org.osgi.framework.wiring.BundleRevisions; import org.osgi.framework.wiring.BundleWire; import org.osgi.framework.wiring.BundleWiring; import org.osgi.framework.wiring.FrameworkWiring; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static java.lang.String.format; - +@Component public class BundleServiceImpl implements BundleService { private static Logger LOG = LoggerFactory.getLogger(BundleService.class); @@ -56,19 +60,21 @@ public class BundleServiceImpl implements BundleService { */ private static final String ORIGINAL_WIRES = "Original-Wires"; - private final BundleContext bundleContext; - private final List<BundleStateService> stateServices = new CopyOnWriteArrayList<>(); - - public BundleServiceImpl(BundleContext bundleContext) { - this.bundleContext = bundleContext; - } + private BundleContext bundleContext; + + @Reference(cardinality = MULTIPLE, service=BundleStateService.class) + List<BundleStateService> stateServices; - public void registerBundleStateService(BundleStateService service) { - stateServices.add(service); + /** + * For tests + */ + public BundleServiceImpl() { + this.stateServices = new CopyOnWriteArrayList<>(); } - - public void unregisterBundleStateService(BundleStateService service) { - stateServices.remove(service); + + public void activate(BundleContext bundleContext) { + this.bundleContext = bundleContext; + } @Override http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java index 104dcba..cde66f1 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java @@ -18,7 +18,6 @@ package org.apache.karaf.bundle.core.internal; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; @@ -32,13 +31,16 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.karaf.bundle.core.BundleInfo; import org.apache.karaf.bundle.core.BundleService; import org.apache.karaf.bundle.core.BundleWatcher; import org.apache.karaf.util.bundles.BundleUtils; import org.apache.karaf.util.maven.Parser; import org.osgi.framework.*; import org.osgi.framework.wiring.FrameworkWiring; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,24 +48,26 @@ import org.slf4j.LoggerFactory; * A Runnable singleton which watches at the defined location for bundle * updates. */ +@Component(service={BundleWatcher.class, BundleListener.class}, immediate = true) public class BundleWatcherImpl implements Runnable, BundleListener, BundleWatcher { private final Logger logger = LoggerFactory.getLogger(BundleWatcherImpl.class); - - private BundleContext bundleContext; - private final BundleService bundleService; - private final MavenConfigService localRepoDetector; - private AtomicBoolean running = new AtomicBoolean(false); private long interval = 1000L; private List<String> watchURLs = new CopyOnWriteArrayList<String>(); private AtomicInteger counter = new AtomicInteger(0); + + private BundleContext bundleContext; + + @Reference + BundleService bundleService; - @SuppressWarnings("deprecation") - public BundleWatcherImpl(BundleContext bundleContext, MavenConfigService mavenConfigService, BundleService bundleService) { + @Reference + MavenConfigService localRepoDetector; + + @Activate + public void activate(BundleContext bundleContext) { this.bundleContext = bundleContext; - this.localRepoDetector = mavenConfigService; - this.bundleService = bundleService; } /* (non-Javadoc) @@ -240,6 +244,7 @@ public class BundleWatcherImpl implements Runnable, BundleListener, BundleWatche /** * Stop the execution of the thread and releases the singleton instance. */ + @Deactivate public void stop() { running.set(false); bundleContext.removeBundleListener(this); http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java index 79131c1..ba41030 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java @@ -41,23 +41,32 @@ import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.startlevel.BundleStartLevel; import org.osgi.framework.wiring.FrameworkWiring; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * BundlesMBean implementation. - */ +@Component( + // TODO use name from system property + property={"jmx.objectname=org.apache.karaf:type=bundle,name=root"} +) public class BundlesMBeanImpl extends StandardMBean implements BundlesMBean { private Logger LOG = LoggerFactory.getLogger(BundlesMBeanImpl.class); private BundleContext bundleContext; - private final BundleService bundleService; - public BundlesMBeanImpl(BundleContext bundleContext, BundleService bundleService) throws NotCompliantMBeanException { - super(BundlesMBean.class); + @Reference + BundleService bundleService; + + @Activate + public void activate(BundleContext bundleContext) { this.bundleContext = bundleContext; - this.bundleService = bundleService; + } + + public BundlesMBeanImpl() throws NotCompliantMBeanException { + super(BundlesMBean.class); } private List<Bundle> selectBundles(String id) throws Exception { http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java index 9ad7b0a..edaa934 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java @@ -28,17 +28,18 @@ import javax.xml.stream.XMLStreamReader; import org.osgi.service.cm.Configuration; import org.osgi.service.cm.ConfigurationAdmin; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Component(service = MavenConfigService.class) public class MavenConfigService { private final Logger logger = LoggerFactory.getLogger(MavenConfigService.class); - private final ConfigurationAdmin configurationAdmin; - - public MavenConfigService(ConfigurationAdmin configurationAdmin) { - this.configurationAdmin = configurationAdmin; - } + + @Reference + ConfigurationAdmin configurationAdmin; public File getLocalRepository() { String path = null; http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/osgi/Activator.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/osgi/Activator.java b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/osgi/Activator.java deleted file mode 100644 index 7dfdde1..0000000 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/osgi/Activator.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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.bundle.core.internal.osgi; - -import org.apache.karaf.bundle.core.BundleService; -import org.apache.karaf.bundle.core.BundleStateService; -import org.apache.karaf.bundle.core.BundleWatcher; -import org.apache.karaf.bundle.core.internal.BundleServiceImpl; -import org.apache.karaf.bundle.core.internal.BundleWatcherImpl; -import org.apache.karaf.bundle.core.internal.BundlesMBeanImpl; -import org.apache.karaf.bundle.core.internal.MavenConfigService; -import org.apache.karaf.util.tracker.BaseActivator; -import org.apache.karaf.util.tracker.annotation.ProvideService; -import org.apache.karaf.util.tracker.annotation.RequireService; -import org.apache.karaf.util.tracker.annotation.Services; -import org.osgi.framework.ServiceReference; -import org.osgi.service.cm.ConfigurationAdmin; -import org.osgi.util.tracker.ServiceTracker; -import org.osgi.util.tracker.ServiceTrackerCustomizer; - -@Services( - requires = @RequireService(ConfigurationAdmin.class), - provides = @ProvideService(BundleService.class) -) -public class Activator extends BaseActivator { - - private ServiceTracker<BundleStateService, BundleStateService> bundleStateServicesTracker; - private BundleWatcherImpl bundleWatcher; - - @Override - protected void doStart() throws Exception { - ConfigurationAdmin configurationAdmin = getTrackedService(ConfigurationAdmin.class); - if (configurationAdmin == null) { - return; - } - - final BundleServiceImpl bundleService = new BundleServiceImpl(bundleContext); - register(BundleService.class, bundleService); - bundleStateServicesTracker = new ServiceTracker<BundleStateService, BundleStateService>( - bundleContext, BundleStateService.class, new ServiceTrackerCustomizer<BundleStateService, BundleStateService>() { - @Override - public BundleStateService addingService(ServiceReference<BundleStateService> reference) { - BundleStateService service = bundleContext.getService(reference); - bundleService.registerBundleStateService(service); - return service; - } - @Override - public void modifiedService(ServiceReference<BundleStateService> reference, BundleStateService service) { - } - @Override - public void removedService(ServiceReference<BundleStateService> reference, BundleStateService service) { - bundleService.unregisterBundleStateService(service); - bundleContext.ungetService(reference); - } - } - ); - bundleStateServicesTracker.open(); - - bundleWatcher = new BundleWatcherImpl(bundleContext, new MavenConfigService(configurationAdmin), bundleService); - bundleWatcher.start(); - register(BundleWatcher.class, bundleWatcher); - - BundlesMBeanImpl bundlesMBeanImpl = new BundlesMBeanImpl(bundleContext, bundleService); - registerMBean(bundlesMBeanImpl, "type=bundle"); - } - - @Override - protected void doStop() { - if (bundleStateServicesTracker != null) { - bundleStateServicesTracker.close(); - bundleStateServicesTracker = null; - } - super.doStop(); - if (bundleWatcher != null) { - bundleWatcher.stop(); - bundleWatcher = null; - } - } - -} http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java b/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java index c4413b9..ac8f4d3 100644 --- a/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java +++ b/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java @@ -27,13 +27,14 @@ public class ListServicesTest { private BundleContext bundleContext; private Services listServices; - @SuppressWarnings("unchecked") public ListServicesTest() { listServices = new Services(); bundleContext = new TestBundleFactory().createBundleContext(); listServices.context = null; listServices.setBundleContext(bundleContext); - listServices.setBundleService(new BundleServiceImpl(bundleContext)); + BundleServiceImpl bundleService = new BundleServiceImpl(); + bundleService.activate(bundleContext); + listServices.setBundleService(bundleService); } @Test
