You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2015/03/04 16:56:13 UTC

[4/4] karaf git commit: [KARAF-3584] Generate metadata from the karaf-services-maven-plugin

[KARAF-3584] Generate metadata from the karaf-services-maven-plugin


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/026d3d99
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/026d3d99
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/026d3d99

Branch: refs/heads/master
Commit: 026d3d99be4991d239635026e61ac058440914c1
Parents: dfceded
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Wed Mar 4 13:56:04 2015 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Wed Mar 4 16:05:39 2015 +0100

----------------------------------------------------------------------
 bundle/core/pom.xml                             |  2 -
 .../bundle/core/internal/osgi/Activator.java    |  6 +--
 config/pom.xml                                  |  2 -
 .../karaf/config/core/impl/osgi/Activator.java  |  6 +--
 deployer/blueprint/pom.xml                      |  1 -
 .../deployer/blueprint/osgi/Activator.java      |  2 +-
 deployer/features/pom.xml                       |  1 -
 .../karaf/deployer/features/osgi/Activator.java |  4 +-
 deployer/kar/pom.xml                            |  1 -
 .../karaf/deployer/kar/osgi/Activator.java      |  4 +-
 deployer/spring/pom.xml                         |  1 -
 .../karaf/deployer/spring/osgi/Activator.java   |  2 +-
 deployer/wrap/pom.xml                           |  1 -
 .../karaf/deployer/wrap/osgi/Activator.java     |  4 +-
 diagnostic/core/pom.xml                         |  2 -
 features/command/pom.xml                        |  5 ++-
 features/core/pom.xml                           |  1 -
 .../karaf/features/internal/osgi/Activator.java |  6 +--
 http/pom.xml                                    |  6 ++-
 .../http/core/internal/osgi/Activator.java      |  4 +-
 instance/pom.xml                                |  2 -
 .../instance/core/internal/osgi/Activator.java  |  4 +-
 jaas/command/pom.xml                            |  7 ++--
 jaas/modules/pom.xml                            |  1 -
 .../karaf/jaas/modules/impl/Activator.java      |  6 +--
 jdbc/pom.xml                                    |  2 -
 .../karaf/jdbc/internal/osgi/Activator.java     |  6 +--
 jms/pom.xml                                     |  5 ++-
 jndi/pom.xml                                    |  2 -
 .../karaf/jndi/internal/osgi/Activator.java     |  6 +--
 kar/pom.xml                                     |  2 -
 .../karaf/kar/internal/osgi/Activator.java      |  8 ++--
 log/pom.xml                                     |  4 --
 .../karaf/log/core/internal/osgi/Activator.java |  8 ++--
 management/server/pom.xml                       |  1 -
 .../karaf/management/internal/Activator.java    |  8 ++--
 obr/pom.xml                                     |  2 -
 .../karaf/obr/core/internal/osgi/Activator.java |  4 +-
 package/pom.xml                                 |  4 --
 .../packages/core/internal/osgi/Activator.java  |  4 +-
 pom.xml                                         |  2 +-
 profile/pom.xml                                 |  4 --
 .../karaf/profile/impl/osgi/Activator.java      |  7 ++--
 scheduler/pom.xml                               |  4 --
 .../apache/karaf/scheduler/core/Activator.java  |  4 +-
 scr/command/pom.xml                             |  5 ++-
 service/core/pom.xml                            |  9 ++---
 .../service/core/internal/osgi/Activator.java   |  2 +-
 services/maven-proxy/pom.xml                    |  4 --
 .../services/mavenproxy/internal/Activator.java |  6 +--
 shell/commands/pom.xml                          |  7 ++--
 shell/core/pom.xml                              |  5 ---
 shell/ssh/pom.xml                               |  1 -
 .../org/apache/karaf/shell/ssh/Activator.java   |  6 +--
 subsystem/pom.xml                               | 10 ++---
 system/pom.xml                                  |  2 -
 .../karaf/system/internal/osgi/Activator.java   |  4 +-
 tooling/karaf-services-maven-plugin/pom.xml     |  8 ++++
 .../tracker/GenerateServiceMetadata.java        | 31 ++++++++++++---
 .../karaf/util/tracker/BaseActivator.java       | 40 ++++++++------------
 .../org/apache/karaf/util/tracker/Managed.java  | 30 ---------------
 .../karaf/util/tracker/ProvideService.java      | 27 -------------
 .../karaf/util/tracker/RequireService.java      | 31 ---------------
 .../org/apache/karaf/util/tracker/Services.java | 32 ----------------
 .../util/tracker/SingleServiceTracker.java      | 39 ++++++++++---------
 .../karaf/util/tracker/annotation/Managed.java  | 30 +++++++++++++++
 .../util/tracker/annotation/ProvideService.java | 27 +++++++++++++
 .../util/tracker/annotation/RequireService.java | 31 +++++++++++++++
 .../karaf/util/tracker/annotation/Services.java | 32 ++++++++++++++++
 web/pom.xml                                     |  2 -
 .../karaf/web/internal/osgi/Activator.java      |  7 ++--
 wrapper/pom.xml                                 |  4 --
 .../karaf/wrapper/internal/osgi/Activator.java  |  4 +-
 73 files changed, 286 insertions(+), 318 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/bundle/core/pom.xml
----------------------------------------------------------------------
diff --git a/bundle/core/pom.xml b/bundle/core/pom.xml
index 40b996e..c866a00 100644
--- a/bundle/core/pom.xml
+++ b/bundle/core/pom.xml
@@ -134,14 +134,12 @@
                             org.apache.karaf.util.bundles,
                             org.apache.karaf.util.jaas,
                             org.apache.karaf.util.maven,
-                            org.apache.karaf.util.tracker,
                             org.apache.felix.utils.version,
                             org.apache.felix.utils.manifest
                         </Private-Package>
                         <Embed-Dependency>
                             org.apache.karaf.jaas.modules;inline="org/apache/karaf/jaas/modules/JaasHelper*.class"
                         </Embed-Dependency>
-                        <Karaf-Commands>org.apache.karaf.bundle.command.*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/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
index c5c765b..7dfdde1 100644
--- 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
@@ -24,9 +24,9 @@ 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.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+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;

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/config/pom.xml
----------------------------------------------------------------------
diff --git a/config/pom.xml b/config/pom.xml
index 96c16c3..29b683f 100644
--- a/config/pom.xml
+++ b/config/pom.xml
@@ -111,10 +111,8 @@
                         <Private-Package>
                             org.apache.karaf.config.core.impl,
                             org.apache.karaf.config.core.impl.osgi,
-                            org.apache.karaf.util.tracker,
                             org.apache.felix.utils.properties
                         </Private-Package>
-                        <Karaf-Commands>org.apache.karaf.config.command.*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/config/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/config/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java b/config/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java
index 41f50db..8ea04c5 100644
--- a/config/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java
+++ b/config/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java
@@ -20,9 +20,9 @@ import org.apache.karaf.config.core.ConfigRepository;
 import org.apache.karaf.config.core.impl.ConfigMBeanImpl;
 import org.apache.karaf.config.core.impl.ConfigRepositoryImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+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.service.cm.ConfigurationAdmin;
 
 import java.io.File;

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/blueprint/pom.xml
----------------------------------------------------------------------
diff --git a/deployer/blueprint/pom.xml b/deployer/blueprint/pom.xml
index d1605de..dc9ff56 100644
--- a/deployer/blueprint/pom.xml
+++ b/deployer/blueprint/pom.xml
@@ -97,7 +97,6 @@
                             org.apache.karaf.deployer.blueprint,
                             org.apache.karaf.deployer.blueprint.osgi,
                             org.apache.karaf.util,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
                     </instructions>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/blueprint/src/main/java/org/apache/karaf/deployer/blueprint/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/deployer/blueprint/src/main/java/org/apache/karaf/deployer/blueprint/osgi/Activator.java b/deployer/blueprint/src/main/java/org/apache/karaf/deployer/blueprint/osgi/Activator.java
index d1465f9..a7db87a 100644
--- a/deployer/blueprint/src/main/java/org/apache/karaf/deployer/blueprint/osgi/Activator.java
+++ b/deployer/blueprint/src/main/java/org/apache/karaf/deployer/blueprint/osgi/Activator.java
@@ -24,7 +24,7 @@ import org.apache.felix.fileinstall.ArtifactUrlTransformer;
 import org.apache.karaf.deployer.blueprint.BlueprintDeploymentListener;
 import org.apache.karaf.deployer.blueprint.BlueprintURLHandler;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.osgi.service.url.URLStreamHandlerService;
 
 @Services

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/features/pom.xml
----------------------------------------------------------------------
diff --git a/deployer/features/pom.xml b/deployer/features/pom.xml
index 90f237d..2c6a8d2 100644
--- a/deployer/features/pom.xml
+++ b/deployer/features/pom.xml
@@ -105,7 +105,6 @@
                             org.apache.karaf.deployer.features,
                             org.apache.karaf.deployer.features.osgi,
                             org.apache.karaf.util,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
                     </instructions>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/features/src/main/java/org/apache/karaf/deployer/features/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/deployer/features/src/main/java/org/apache/karaf/deployer/features/osgi/Activator.java b/deployer/features/src/main/java/org/apache/karaf/deployer/features/osgi/Activator.java
index 43c5ba3..bc8b572 100644
--- a/deployer/features/src/main/java/org/apache/karaf/deployer/features/osgi/Activator.java
+++ b/deployer/features/src/main/java/org/apache/karaf/deployer/features/osgi/Activator.java
@@ -25,8 +25,8 @@ import org.apache.karaf.deployer.features.FeatureDeploymentListener;
 import org.apache.karaf.deployer.features.FeatureURLHandler;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.RequireService;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.osgi.service.url.URLStreamHandlerService;
 
 @Services(requires = @RequireService(FeaturesService.class))

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/kar/pom.xml
----------------------------------------------------------------------
diff --git a/deployer/kar/pom.xml b/deployer/kar/pom.xml
index 3abe7cc..382ea78 100644
--- a/deployer/kar/pom.xml
+++ b/deployer/kar/pom.xml
@@ -113,7 +113,6 @@
                         <Private-Package>
                             org.apache.karaf.deployer.kar,
                             org.apache.karaf.deployer.kar.osgi,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
                     </instructions>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/kar/src/main/java/org/apache/karaf/deployer/kar/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/deployer/kar/src/main/java/org/apache/karaf/deployer/kar/osgi/Activator.java b/deployer/kar/src/main/java/org/apache/karaf/deployer/kar/osgi/Activator.java
index e86e7cf..235be07 100644
--- a/deployer/kar/src/main/java/org/apache/karaf/deployer/kar/osgi/Activator.java
+++ b/deployer/kar/src/main/java/org/apache/karaf/deployer/kar/osgi/Activator.java
@@ -22,8 +22,8 @@ import org.apache.felix.fileinstall.ArtifactListener;
 import org.apache.karaf.deployer.kar.KarArtifactInstaller;
 import org.apache.karaf.kar.KarService;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.RequireService;
+import org.apache.karaf.util.tracker.annotation.Services;
 
 @Services(requires = @RequireService(KarService.class))
 public class Activator extends BaseActivator {

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/spring/pom.xml
----------------------------------------------------------------------
diff --git a/deployer/spring/pom.xml b/deployer/spring/pom.xml
index b8ee2f4..f057da6 100644
--- a/deployer/spring/pom.xml
+++ b/deployer/spring/pom.xml
@@ -101,7 +101,6 @@
                             org.apache.karaf.deployer.spring,
                             org.apache.karaf.deployer.spring.osgi,
                             org.apache.karaf.util,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
                     </instructions>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/osgi/Activator.java b/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/osgi/Activator.java
index 3407b9e..9e04a83 100644
--- a/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/osgi/Activator.java
+++ b/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/osgi/Activator.java
@@ -24,7 +24,7 @@ import org.apache.felix.fileinstall.ArtifactUrlTransformer;
 import org.apache.karaf.deployer.spring.SpringDeploymentListener;
 import org.apache.karaf.deployer.spring.SpringURLHandler;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.osgi.service.url.URLStreamHandlerService;
 
 @Services

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/wrap/pom.xml
----------------------------------------------------------------------
diff --git a/deployer/wrap/pom.xml b/deployer/wrap/pom.xml
index a8c9a2e..4158fc8 100644
--- a/deployer/wrap/pom.xml
+++ b/deployer/wrap/pom.xml
@@ -86,7 +86,6 @@
                             org.apache.karaf.deployer.wrap,
                             org.apache.karaf.deployer.wrap.osgi,
                             org.apache.karaf.util,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
                     </instructions>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/deployer/wrap/src/main/java/org/apache/karaf/deployer/wrap/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/deployer/wrap/src/main/java/org/apache/karaf/deployer/wrap/osgi/Activator.java b/deployer/wrap/src/main/java/org/apache/karaf/deployer/wrap/osgi/Activator.java
index 4486492..f57a98d 100644
--- a/deployer/wrap/src/main/java/org/apache/karaf/deployer/wrap/osgi/Activator.java
+++ b/deployer/wrap/src/main/java/org/apache/karaf/deployer/wrap/osgi/Activator.java
@@ -22,8 +22,8 @@ import java.util.Hashtable;
 import org.apache.felix.fileinstall.ArtifactUrlTransformer;
 import org.apache.karaf.deployer.wrap.WrapDeploymentListener;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.RequireService;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.osgi.service.url.URLStreamHandlerService;
 
 @Services(requires = {

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/diagnostic/core/pom.xml
----------------------------------------------------------------------
diff --git a/diagnostic/core/pom.xml b/diagnostic/core/pom.xml
index 380e277..0380c8e 100644
--- a/diagnostic/core/pom.xml
+++ b/diagnostic/core/pom.xml
@@ -113,12 +113,10 @@
                             org.apache.karaf.diagnostic.internal,
                             org.apache.karaf.diagnostic.management.internal,
                             org.apache.karaf.util,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
                         <Bundle-Activator>
                             org.apache.karaf.diagnostic.internal.Activator
                         </Bundle-Activator>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/features/command/pom.xml
----------------------------------------------------------------------
diff --git a/features/command/pom.xml b/features/command/pom.xml
index 5978b38..765287f 100644
--- a/features/command/pom.xml
+++ b/features/command/pom.xml
@@ -81,11 +81,14 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Karaf-Commands>org.apache.karaf.features.command.*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/features/core/pom.xml
----------------------------------------------------------------------
diff --git a/features/core/pom.xml b/features/core/pom.xml
index fd6f5cc..0c4fce7 100644
--- a/features/core/pom.xml
+++ b/features/core/pom.xml
@@ -149,7 +149,6 @@
                             org.apache.karaf.util,
                             org.apache.karaf.util.bundles,
                             org.apache.karaf.util.collections,
-                            org.apache.karaf.util.tracker,
                             org.eclipse.equinox.internal.region.*;-split-package:=merge-first,
                         </Private-Package>
                         <Embed-Dependency>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/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 9a89494..46ebfae 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
@@ -45,9 +45,9 @@ import org.apache.karaf.features.internal.service.FeatureFinder;
 import org.apache.karaf.features.internal.service.FeaturesServiceImpl;
 import org.apache.karaf.features.internal.service.StateStorage;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+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.eclipse.equinox.internal.region.DigraphHelper;
 import org.eclipse.equinox.internal.region.StandardRegionDigraph;
 import org.eclipse.equinox.internal.region.management.StandardManageableRegionDigraph;

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/http/pom.xml
----------------------------------------------------------------------
diff --git a/http/pom.xml b/http/pom.xml
index 596db4d..0da14bd 100644
--- a/http/pom.xml
+++ b/http/pom.xml
@@ -89,6 +89,10 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
@@ -100,11 +104,9 @@
                             org.apache.karaf.http.command,
                             org.apache.karaf.http.core.internal,
                             org.apache.karaf.http.core.internal.osgi,
-                            org.apache.karaf.util.tracker,
                             org.apache.felix.utils.version,
                             org.apache.felix.utils.manifest,
                         </Private-Package>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/http/src/main/java/org/apache/karaf/http/core/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/http/src/main/java/org/apache/karaf/http/core/internal/osgi/Activator.java b/http/src/main/java/org/apache/karaf/http/core/internal/osgi/Activator.java
index 9eb4b21..2e6291c 100644
--- a/http/src/main/java/org/apache/karaf/http/core/internal/osgi/Activator.java
+++ b/http/src/main/java/org/apache/karaf/http/core/internal/osgi/Activator.java
@@ -21,8 +21,8 @@ import org.apache.karaf.http.core.internal.HttpMBeanImpl;
 import org.apache.karaf.http.core.internal.ServletEventHandler;
 import org.apache.karaf.http.core.internal.ServletServiceImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.ops4j.pax.web.service.spi.ServletListener;
 
 @Services(provides = @ProvideService(ServletService.class))

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/instance/pom.xml
----------------------------------------------------------------------
diff --git a/instance/pom.xml b/instance/pom.xml
index 9ffe1b0..e9f9fc7 100644
--- a/instance/pom.xml
+++ b/instance/pom.xml
@@ -198,9 +198,7 @@
                             org.apache.felix.utils.properties;-split-package:=merge-first,
                             org.apache.karaf.util,
                             org.apache.karaf.util.locks,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
-                        <Karaf-Commands>org.apache.karaf.instance.command.*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/instance/src/main/java/org/apache/karaf/instance/core/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/instance/src/main/java/org/apache/karaf/instance/core/internal/osgi/Activator.java b/instance/src/main/java/org/apache/karaf/instance/core/internal/osgi/Activator.java
index 17f68c9..1641a61 100644
--- a/instance/src/main/java/org/apache/karaf/instance/core/internal/osgi/Activator.java
+++ b/instance/src/main/java/org/apache/karaf/instance/core/internal/osgi/Activator.java
@@ -20,8 +20,8 @@ import org.apache.karaf.instance.core.InstanceService;
 import org.apache.karaf.instance.core.internal.InstanceServiceImpl;
 import org.apache.karaf.instance.core.internal.InstancesMBeanImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.Services;
 
 @Services(provides = @ProvideService(InstanceService.class))
 public class Activator extends BaseActivator {

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/jaas/command/pom.xml
----------------------------------------------------------------------
diff --git a/jaas/command/pom.xml b/jaas/command/pom.xml
index 9011f27..fdd3532 100644
--- a/jaas/command/pom.xml
+++ b/jaas/command/pom.xml
@@ -92,6 +92,10 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
@@ -103,9 +107,6 @@
                         <Private-Package>
                             org.apache.karaf.util.jaas,
                         </Private-Package>
-                        <Karaf-Commands>
-                            org.apache.karaf.jaas.command.*
-                        </Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/jaas/modules/pom.xml
----------------------------------------------------------------------
diff --git a/jaas/modules/pom.xml b/jaas/modules/pom.xml
index 81530cd..324d8f8 100644
--- a/jaas/modules/pom.xml
+++ b/jaas/modules/pom.xml
@@ -159,7 +159,6 @@
                             org.apache.karaf.jaas.modules.impl,
                             org.apache.felix.utils.properties,
                             org.apache.karaf.util,
-                            org.apache.karaf.util.tracker,
                             org.apache.http*,
                             org.apache.commons.codec*
                         </Private-Package>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/impl/Activator.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/impl/Activator.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/impl/Activator.java
index cd190fa..1299b18 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/impl/Activator.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/impl/Activator.java
@@ -28,9 +28,9 @@ import org.apache.karaf.jaas.modules.properties.PropertiesBackingEngineFactory;
 import org.apache.karaf.jaas.modules.publickey.PublickeyBackingEngineFactory;
 import org.apache.karaf.util.StreamUtils;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Managed;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.service.cm.ManagedService;

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/jdbc/pom.xml
----------------------------------------------------------------------
diff --git a/jdbc/pom.xml b/jdbc/pom.xml
index 5ab594b..d0eecb7 100644
--- a/jdbc/pom.xml
+++ b/jdbc/pom.xml
@@ -99,9 +99,7 @@
                             org.apache.karaf.jdbc.internal,
                             org.apache.karaf.jdbc.internal.osgi,
                             org.apache.karaf.util,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/jdbc/src/main/java/org/apache/karaf/jdbc/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/karaf/jdbc/internal/osgi/Activator.java b/jdbc/src/main/java/org/apache/karaf/jdbc/internal/osgi/Activator.java
index f05058b..9978714 100644
--- a/jdbc/src/main/java/org/apache/karaf/jdbc/internal/osgi/Activator.java
+++ b/jdbc/src/main/java/org/apache/karaf/jdbc/internal/osgi/Activator.java
@@ -20,9 +20,9 @@ import org.apache.karaf.jdbc.JdbcService;
 import org.apache.karaf.jdbc.internal.JdbcMBeanImpl;
 import org.apache.karaf.jdbc.internal.JdbcServiceImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+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.service.cm.ConfigurationAdmin;
 
 @Services(

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/jms/pom.xml
----------------------------------------------------------------------
diff --git a/jms/pom.xml b/jms/pom.xml
index c1719db..ea0d220 100644
--- a/jms/pom.xml
+++ b/jms/pom.xml
@@ -84,6 +84,10 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
@@ -102,7 +106,6 @@
                             org.apache.karaf.util
                         </Private-Package>
                         <DynamicImport-Package>*</DynamicImport-Package>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/jndi/pom.xml
----------------------------------------------------------------------
diff --git a/jndi/pom.xml b/jndi/pom.xml
index a6d517e..ae9bab1 100644
--- a/jndi/pom.xml
+++ b/jndi/pom.xml
@@ -97,9 +97,7 @@
                             org.apache.karaf.jndi.command.completers,
                             org.apache.karaf.jndi.internal,
                             org.apache.karaf.jndi.internal.osgi,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/jndi/src/main/java/org/apache/karaf/jndi/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/jndi/src/main/java/org/apache/karaf/jndi/internal/osgi/Activator.java b/jndi/src/main/java/org/apache/karaf/jndi/internal/osgi/Activator.java
index bc6baa8..c830018 100644
--- a/jndi/src/main/java/org/apache/karaf/jndi/internal/osgi/Activator.java
+++ b/jndi/src/main/java/org/apache/karaf/jndi/internal/osgi/Activator.java
@@ -26,9 +26,9 @@ import org.apache.karaf.jndi.KarafInitialContextFactory;
 import org.apache.karaf.jndi.internal.JndiMBeanImpl;
 import org.apache.karaf.jndi.internal.JndiServiceImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.RequireService;
+import org.apache.karaf.util.tracker.annotation.Services;
 
 @Services(
         requires = @RequireService(ProxyManager.class),

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/kar/pom.xml
----------------------------------------------------------------------
diff --git a/kar/pom.xml b/kar/pom.xml
index 7409c05..5ae09fe 100644
--- a/kar/pom.xml
+++ b/kar/pom.xml
@@ -113,10 +113,8 @@
                             org.apache.karaf.kar.internal.osgi,
                             org.apache.karaf.util,
                             org.apache.karaf.util.maven,
-                            org.apache.karaf.util.tracker,
                             org.apache.felix.utils.properties
                         </Private-Package>
-                        <Karaf-Commands>org.apache.karaf.kar.command.*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/kar/src/main/java/org/apache/karaf/kar/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/kar/src/main/java/org/apache/karaf/kar/internal/osgi/Activator.java b/kar/src/main/java/org/apache/karaf/kar/internal/osgi/Activator.java
index 5db2141..70c1f13 100644
--- a/kar/src/main/java/org/apache/karaf/kar/internal/osgi/Activator.java
+++ b/kar/src/main/java/org/apache/karaf/kar/internal/osgi/Activator.java
@@ -21,10 +21,10 @@ import org.apache.karaf.kar.KarService;
 import org.apache.karaf.kar.internal.KarServiceImpl;
 import org.apache.karaf.kar.internal.KarsMBeanImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Managed;
+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.service.cm.ManagedService;
 
 @Services(

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/log/pom.xml
----------------------------------------------------------------------
diff --git a/log/pom.xml b/log/pom.xml
index 5daab0b..8aa1787 100644
--- a/log/pom.xml
+++ b/log/pom.xml
@@ -109,11 +109,7 @@
                             org.apache.karaf.log.core.internal,
                             org.apache.karaf.log.core.internal.layout,
                             org.apache.karaf.log.core.internal.osgi,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
-                        <Karaf-Commands>
-                            org.apache.karaf.log.command*
-                        </Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/log/src/main/java/org/apache/karaf/log/core/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/log/src/main/java/org/apache/karaf/log/core/internal/osgi/Activator.java b/log/src/main/java/org/apache/karaf/log/core/internal/osgi/Activator.java
index 8540ff0..c0a6a23 100644
--- a/log/src/main/java/org/apache/karaf/log/core/internal/osgi/Activator.java
+++ b/log/src/main/java/org/apache/karaf/log/core/internal/osgi/Activator.java
@@ -25,10 +25,10 @@ import org.apache.karaf.log.core.internal.LogMBeanImpl;
 import org.apache.karaf.log.core.internal.LogServiceImpl;
 import org.apache.karaf.log.core.internal.LruList;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Managed;
+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.ops4j.pax.logging.spi.PaxAppender;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.cm.ManagedService;

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/management/server/pom.xml
----------------------------------------------------------------------
diff --git a/management/server/pom.xml b/management/server/pom.xml
index f698ffc..02778d3 100644
--- a/management/server/pom.xml
+++ b/management/server/pom.xml
@@ -120,7 +120,6 @@
                             org.apache.karaf.management.internal,
                             org.apache.karaf.service.guard.tools,
                             org.apache.karaf.util.jaas,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
                     </instructions>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java
----------------------------------------------------------------------
diff --git a/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java b/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java
index 6484d33..bf9ea9e 100644
--- a/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java
+++ b/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java
@@ -30,10 +30,10 @@ import org.apache.karaf.management.KarafMBeanServerGuard;
 import org.apache.karaf.management.MBeanServerFactory;
 import org.apache.karaf.management.RmiRegistryFactory;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Managed;
+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.service.cm.ManagedService;

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/obr/pom.xml
----------------------------------------------------------------------
diff --git a/obr/pom.xml b/obr/pom.xml
index dd2362d..33a195a 100644
--- a/obr/pom.xml
+++ b/obr/pom.xml
@@ -95,9 +95,7 @@
                             org.apache.karaf.obr.command.util,
                             org.apache.karaf.obr.core.internal,
                             org.apache.karaf.obr.core.internal.osgi,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/obr/src/main/java/org/apache/karaf/obr/core/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/obr/src/main/java/org/apache/karaf/obr/core/internal/osgi/Activator.java b/obr/src/main/java/org/apache/karaf/obr/core/internal/osgi/Activator.java
index 70f3f23..fb73f18 100644
--- a/obr/src/main/java/org/apache/karaf/obr/core/internal/osgi/Activator.java
+++ b/obr/src/main/java/org/apache/karaf/obr/core/internal/osgi/Activator.java
@@ -19,8 +19,8 @@ package org.apache.karaf.obr.core.internal.osgi;
 import org.apache.felix.bundlerepository.RepositoryAdmin;
 import org.apache.karaf.obr.core.internal.ObrMBeanImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.RequireService;
+import org.apache.karaf.util.tracker.annotation.Services;
 
 @Services(
         requires = @RequireService(RepositoryAdmin.class)

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/package/pom.xml
----------------------------------------------------------------------
diff --git a/package/pom.xml b/package/pom.xml
index fba9279..9f7875b 100644
--- a/package/pom.xml
+++ b/package/pom.xml
@@ -116,13 +116,9 @@
                             org.apache.karaf.packages.core.internal.filter,
                             org.apache.karaf.packages.core.internal,
                             org.apache.karaf.packages.core.internal.osgi,
-                            org.apache.karaf.util.tracker,
                             org.apache.felix.utils.version,
                             org.apache.felix.utils.manifest
                         </Private-Package>
-                        <Karaf-Commands>
-                            org.apache.karaf.packages.command
-                        </Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/package/src/main/java/org/apache/karaf/packages/core/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/package/src/main/java/org/apache/karaf/packages/core/internal/osgi/Activator.java b/package/src/main/java/org/apache/karaf/packages/core/internal/osgi/Activator.java
index bf5f526..817715a 100644
--- a/package/src/main/java/org/apache/karaf/packages/core/internal/osgi/Activator.java
+++ b/package/src/main/java/org/apache/karaf/packages/core/internal/osgi/Activator.java
@@ -20,8 +20,8 @@ import org.apache.karaf.packages.core.PackageService;
 import org.apache.karaf.packages.core.internal.PackageServiceImpl;
 import org.apache.karaf.packages.core.internal.PackagesMBeanImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.Services;
 
 @Services(provides = @ProvideService(PackageService.class))
 public class Activator extends BaseActivator {

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b2dda1b..408c932 100644
--- a/pom.xml
+++ b/pom.xml
@@ -167,7 +167,7 @@
         <felix.framework.version>4.7.0-SNAPSHOT</felix.framework.version>
         <felix.framework.security.version>2.4.0</felix.framework.security.version>
         <felix.gogo.version>0.14.1-SNAPSHOT</felix.gogo.version>
-        <felix.plugin.version>2.5.3</felix.plugin.version>
+        <felix.plugin.version>2.5.4-SNAPSHOT</felix.plugin.version>
         <felix.utils.version>1.6.1-SNAPSHOT</felix.utils.version>
         <felix.webconsole.version>4.2.2</felix.webconsole.version>
         <felix.webconsole.api.version>3.1.2</felix.webconsole.api.version>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/profile/pom.xml
----------------------------------------------------------------------
diff --git a/profile/pom.xml b/profile/pom.xml
index 1bde1b7..c7927b0 100644
--- a/profile/pom.xml
+++ b/profile/pom.xml
@@ -184,13 +184,9 @@
                             org.apache.karaf.profile.impl.osgi,
                             org.apache.karaf.util.config,
                             org.apache.karaf.util.maven,
-                            org.apache.karaf.util.tracker,
                             org.apache.felix.utils.version,
                             org.apache.felix.utils.properties,
                         </Private-Package>
-                        <Karaf-Commands>
-                            org.apache.karaf.profile.command.*
-                        </Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/profile/src/main/java/org/apache/karaf/profile/impl/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/profile/src/main/java/org/apache/karaf/profile/impl/osgi/Activator.java b/profile/src/main/java/org/apache/karaf/profile/impl/osgi/Activator.java
index 9d0bae2..33a9403 100644
--- a/profile/src/main/java/org/apache/karaf/profile/impl/osgi/Activator.java
+++ b/profile/src/main/java/org/apache/karaf/profile/impl/osgi/Activator.java
@@ -16,16 +16,15 @@
  */
 package org.apache.karaf.profile.impl.osgi;
 
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 
 import org.apache.karaf.profile.ProfileService;
 import org.apache.karaf.profile.impl.ProfileServiceImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Managed;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.osgi.service.cm.ManagedService;
 
 @Services(

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/scheduler/pom.xml
----------------------------------------------------------------------
diff --git a/scheduler/pom.xml b/scheduler/pom.xml
index 66ffa69..d3c45f8 100644
--- a/scheduler/pom.xml
+++ b/scheduler/pom.xml
@@ -74,7 +74,6 @@
                         <Private-Package>
                             org.apache.karaf.scheduler.core,
                             org.apache.karaf.scheduler.command.*,
-                            org.apache.karaf.util.tracker,
                             org.quartz,
                             org.quartz.core.*,
                             org.quartz.listeners.*,
@@ -83,9 +82,6 @@
                             org.quartz.simpl.*,
                             org.quartz.utils.*,
                         </Private-Package>
-                        <Karaf-Commands>
-                            org.apache.karaf.scheduler.command
-                        </Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/scheduler/src/main/java/org/apache/karaf/scheduler/core/Activator.java
----------------------------------------------------------------------
diff --git a/scheduler/src/main/java/org/apache/karaf/scheduler/core/Activator.java b/scheduler/src/main/java/org/apache/karaf/scheduler/core/Activator.java
index 81f6ede..f3ef634 100644
--- a/scheduler/src/main/java/org/apache/karaf/scheduler/core/Activator.java
+++ b/scheduler/src/main/java/org/apache/karaf/scheduler/core/Activator.java
@@ -18,8 +18,8 @@ package org.apache.karaf.scheduler.core;
 
 import org.apache.karaf.scheduler.Scheduler;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.quartz.simpl.SimpleThreadPool;
 import org.quartz.spi.ThreadPool;
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/scr/command/pom.xml
----------------------------------------------------------------------
diff --git a/scr/command/pom.xml b/scr/command/pom.xml
index dd38102..f48c4e2 100644
--- a/scr/command/pom.xml
+++ b/scr/command/pom.xml
@@ -84,11 +84,14 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/service/core/pom.xml
----------------------------------------------------------------------
diff --git a/service/core/pom.xml b/service/core/pom.xml
index 4d10257..07efaeb 100644
--- a/service/core/pom.xml
+++ b/service/core/pom.xml
@@ -74,6 +74,10 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
@@ -85,12 +89,7 @@
                             org.apache.karaf.service.command,
                             org.apache.karaf.service.core.internal,
                             org.apache.karaf.service.core.internal.osgi,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
-                        <Bundle-Activator>
-                            org.apache.karaf.service.core.internal.osgi.Activator
-                        </Bundle-Activator>
-                        <Karaf-Commands>org.apache.karaf.service.command</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/service/core/src/main/java/org/apache/karaf/service/core/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/service/core/src/main/java/org/apache/karaf/service/core/internal/osgi/Activator.java b/service/core/src/main/java/org/apache/karaf/service/core/internal/osgi/Activator.java
index 170e8af..ccd1aeb 100644
--- a/service/core/src/main/java/org/apache/karaf/service/core/internal/osgi/Activator.java
+++ b/service/core/src/main/java/org/apache/karaf/service/core/internal/osgi/Activator.java
@@ -18,7 +18,7 @@ package org.apache.karaf.service.core.internal.osgi;
 
 import org.apache.karaf.service.core.internal.ServicesMBeanImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Services;
 
 @Services
 public class Activator extends BaseActivator {

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/services/maven-proxy/pom.xml
----------------------------------------------------------------------
diff --git a/services/maven-proxy/pom.xml b/services/maven-proxy/pom.xml
index 7976b7d..3ed1902 100644
--- a/services/maven-proxy/pom.xml
+++ b/services/maven-proxy/pom.xml
@@ -45,9 +45,6 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Bundle-Activator>
-                            org.apache.karaf.services.mavenproxy.internal.Activator
-                        </Bundle-Activator>
                         <Import-Package>
                             javax.servlet.*;version="[3.0,4)",
                             !shaded.*,
@@ -56,7 +53,6 @@
                         <Private-Package>
                             org.apache.karaf.services.mavenproxy.internal,
                             org.apache.karaf.util,
-                            org.apache.karaf.util.tracker,
                             org.apache.karaf.util.base64
                         </Private-Package>
                     </instructions>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/services/maven-proxy/src/main/java/org/apache/karaf/services/mavenproxy/internal/Activator.java
----------------------------------------------------------------------
diff --git a/services/maven-proxy/src/main/java/org/apache/karaf/services/mavenproxy/internal/Activator.java b/services/maven-proxy/src/main/java/org/apache/karaf/services/mavenproxy/internal/Activator.java
index 040f6ac..c1b744a 100644
--- a/services/maven-proxy/src/main/java/org/apache/karaf/services/mavenproxy/internal/Activator.java
+++ b/services/maven-proxy/src/main/java/org/apache/karaf/services/mavenproxy/internal/Activator.java
@@ -21,9 +21,9 @@ import java.util.Enumeration;
 import java.util.Hashtable;
 
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Managed;
+import org.apache.karaf.util.tracker.annotation.RequireService;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.ops4j.pax.url.mvn.MavenResolver;
 import org.ops4j.pax.url.mvn.MavenResolvers;
 import org.osgi.service.cm.ManagedService;

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/shell/commands/pom.xml
----------------------------------------------------------------------
diff --git a/shell/commands/pom.xml b/shell/commands/pom.xml
index 93505ef..979d7ee 100644
--- a/shell/commands/pom.xml
+++ b/shell/commands/pom.xml
@@ -91,6 +91,10 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
@@ -109,9 +113,6 @@
                         <Require-Capability>
                             osgi.service;filter:="(objectClass=org.jledit.EditorFactory)";effective:=active
                         </Require-Capability>
-                        <Karaf-Commands>
-                            org.apache.karaf.shell.commands.impl
-                        </Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/shell/core/pom.xml
----------------------------------------------------------------------
diff --git a/shell/core/pom.xml b/shell/core/pom.xml
index c7089b6..75a88c0 100644
--- a/shell/core/pom.xml
+++ b/shell/core/pom.xml
@@ -59,11 +59,6 @@
         </dependency>
         <dependency>
             <groupId>org.apache.karaf.jaas</groupId>
-            <artifactId>org.apache.karaf.jaas.modules</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.karaf.jaas</groupId>
             <artifactId>org.apache.karaf.jaas.boot</artifactId>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/shell/ssh/pom.xml
----------------------------------------------------------------------
diff --git a/shell/ssh/pom.xml b/shell/ssh/pom.xml
index 7f4d60b..3e45dde 100644
--- a/shell/ssh/pom.xml
+++ b/shell/ssh/pom.xml
@@ -117,7 +117,6 @@
                         <Private-Package>
                             org.apache.karaf.util,
                             org.apache.karaf.util.jaas,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
                     </instructions>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
index cdc981f..ace6bb7 100644
--- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
+++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
@@ -25,9 +25,9 @@ import org.apache.karaf.shell.api.action.lifecycle.Manager;
 import org.apache.karaf.shell.api.console.Session;
 import org.apache.karaf.shell.api.console.SessionFactory;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.Managed;
+import org.apache.karaf.util.tracker.annotation.RequireService;
+import org.apache.karaf.util.tracker.annotation.Services;
 import org.apache.sshd.SshServer;
 import org.apache.sshd.common.NamedFactory;
 import org.apache.sshd.server.command.ScpCommandFactory;

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/subsystem/pom.xml
----------------------------------------------------------------------
diff --git a/subsystem/pom.xml b/subsystem/pom.xml
index 67cf4da..265ab9d 100644
--- a/subsystem/pom.xml
+++ b/subsystem/pom.xml
@@ -104,20 +104,18 @@
         </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <!--
-                        <Bundle-Activator>
-                            org.apache.karaf.subsystem.internal.Activator
-                        </Bundle-Activator>
-                        -->
                         <Private-Package>
                             org.apache.karaf.subsystem.commands,
                             org.apache.felix.utils.manifest
                         </Private-Package>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/system/pom.xml
----------------------------------------------------------------------
diff --git a/system/pom.xml b/system/pom.xml
index 333899d..0258ee1 100644
--- a/system/pom.xml
+++ b/system/pom.xml
@@ -102,10 +102,8 @@
                             org.apache.karaf.system.internal,
                             org.apache.karaf.system.internal.osgi,
                             org.apache.karaf.system.management.internal,
-                            org.apache.karaf.util.tracker,
                             org.apache.felix.utils.properties
                         </Private-Package>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/system/src/main/java/org/apache/karaf/system/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/system/src/main/java/org/apache/karaf/system/internal/osgi/Activator.java b/system/src/main/java/org/apache/karaf/system/internal/osgi/Activator.java
index 3bedd82..1ac27d5 100644
--- a/system/src/main/java/org/apache/karaf/system/internal/osgi/Activator.java
+++ b/system/src/main/java/org/apache/karaf/system/internal/osgi/Activator.java
@@ -20,8 +20,8 @@ import org.apache.karaf.system.SystemService;
 import org.apache.karaf.system.internal.SystemServiceImpl;
 import org.apache.karaf.system.management.internal.SystemMBeanImpl;
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.Services;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.Services;
 
 @Services(provides = @ProvideService(SystemService.class))
 public class Activator extends BaseActivator {

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/tooling/karaf-services-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-services-maven-plugin/pom.xml b/tooling/karaf-services-maven-plugin/pom.xml
index b7f9581..63a5a45 100644
--- a/tooling/karaf-services-maven-plugin/pom.xml
+++ b/tooling/karaf-services-maven-plugin/pom.xml
@@ -93,6 +93,14 @@
             <artifactId>org.apache.karaf.util</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.karaf.shell</groupId>
+            <artifactId>org.apache.karaf.shell.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.configadmin</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
             <scope>compile</scope>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
----------------------------------------------------------------------
diff --git a/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java b/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
index 10aafc8..4a12121 100644
--- a/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
+++ b/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
@@ -24,11 +24,14 @@ import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
-
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.util.tracker.annotation.Managed;
+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.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.AbstractMojo;
@@ -149,6 +152,24 @@ public class GenerateServiceMetadata extends AbstractMojo {
             if (activators.size() == 1) {
                 project.getProperties().setProperty(activatorProperty, activators.get(0).getName());
             }
+            project.getProperties().setProperty("BNDExtension-Private-Package", "org.apache.karaf.util.tracker");
+            project.getProperties().setProperty("BNDPrependExtension-Import-Package", "!org.apache.karaf.util.tracker.annotation");
+
+            List<Class<?>> services = finder.findAnnotatedClasses(Service.class);
+            Set<String> packages = new TreeSet<>();
+            for (Class<?> clazz : services) {
+                packages.add(clazz.getPackage().getName());
+            }
+            if (!packages.isEmpty()) {
+                StringBuilder sb = new StringBuilder();
+                for (String pkg : packages) {
+                    if (sb.length() > 0) {
+                        sb.append(",");
+                    }
+                    sb.append(pkg);
+                }
+                project.getProperties().setProperty("BNDExtension-Karaf-Commands", sb.toString());
+            }
 
         } catch (Exception e) {
             throw new MojoExecutionException("Error building commands help", e);

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/BaseActivator.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/BaseActivator.java b/util/src/main/java/org/apache/karaf/util/tracker/BaseActivator.java
index 9f58fed..e3e39d4 100644
--- a/util/src/main/java/org/apache/karaf/util/tracker/BaseActivator.java
+++ b/util/src/main/java/org/apache/karaf/util/tracker/BaseActivator.java
@@ -39,7 +39,7 @@ import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class BaseActivator implements BundleActivator, SingleServiceTracker.SingleServiceListener {
+public class BaseActivator implements BundleActivator, SingleServiceTracker.SingleServiceListener, Runnable {
 
     protected final Logger logger = LoggerFactory.getLogger(getClass());
     protected BundleContext bundleContext;
@@ -97,22 +97,12 @@ public class BaseActivator implements BundleActivator, SingleServiceTracker.Sing
             try (InputStream is = data.openStream()) {
                 props.load(is);
             }
-            for (String key : props.stringPropertyNames())
+            for (String key : props.stringPropertyNames()) {
                 if ("pid".equals(key)) {
                     manage(props.getProperty(key));
                 } else {
                     trackService(key, props.getProperty(key));
                 }
-        } else {
-            Services services = getClass().getAnnotation(Services.class);
-            if (services != null) {
-                for (RequireService require : services.requires()) {
-                    trackService(require.value(), require.filter());
-                }
-            }
-            Managed managed = getClass().getAnnotation(Managed.class);
-            if (managed != null) {
-                manage(managed.value());
             }
         }
     }
@@ -231,19 +221,19 @@ public class BaseActivator implements BundleActivator, SingleServiceTracker.Sing
 
     protected void reconfigure() {
         if (scheduled.compareAndSet(false, true)) {
-            executor.submit(new Runnable() {
-                @Override
-                public void run() {
-                    scheduled.set(false);
-                    doStop();
-                    try {
-                        doStart();
-                    } catch (Exception e) {
-                        logger.warn("Error starting activator", e);
-                        doStop();
-                    }
-                }
-            });
+            executor.submit(this);
+        }
+    }
+
+    @Override
+    public void run() {
+        scheduled.set(false);
+        doStop();
+        try {
+            doStart();
+        } catch (Exception e) {
+            logger.warn("Error starting activator", e);
+            doStop();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/Managed.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/Managed.java b/util/src/main/java/org/apache/karaf/util/tracker/Managed.java
deleted file mode 100644
index 4aec385..0000000
--- a/util/src/main/java/org/apache/karaf/util/tracker/Managed.java
+++ /dev/null
@@ -1,30 +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.util.tracker;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE})
-public @interface Managed {
-
-    String value();
-
-}

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/ProvideService.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/ProvideService.java b/util/src/main/java/org/apache/karaf/util/tracker/ProvideService.java
deleted file mode 100644
index 7913746..0000000
--- a/util/src/main/java/org/apache/karaf/util/tracker/ProvideService.java
+++ /dev/null
@@ -1,27 +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.util.tracker;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ProvideService {
-
-    Class value();
-
-}

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/RequireService.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/RequireService.java b/util/src/main/java/org/apache/karaf/util/tracker/RequireService.java
deleted file mode 100644
index da391e2..0000000
--- a/util/src/main/java/org/apache/karaf/util/tracker/RequireService.java
+++ /dev/null
@@ -1,31 +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.util.tracker;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface RequireService {
-
-    Class value();
-
-    String filter() default "";
-
-    boolean optional() default false;
-
-}

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/Services.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/Services.java b/util/src/main/java/org/apache/karaf/util/tracker/Services.java
deleted file mode 100644
index 7575138..0000000
--- a/util/src/main/java/org/apache/karaf/util/tracker/Services.java
+++ /dev/null
@@ -1,32 +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.util.tracker;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE})
-public @interface Services {
-
-    ProvideService[] provides() default {};
-
-    RequireService[] requires() default {};
-
-}

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java b/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java
index 0a0ca54..890d44c 100644
--- a/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java
+++ b/util/src/main/java/org/apache/karaf/util/tracker/SingleServiceTracker.java
@@ -33,7 +33,8 @@ import org.osgi.framework.ServiceListener;
 import org.osgi.framework.ServiceReference;
 
 //This is from aries util
-public final class SingleServiceTracker<T> {
+public final class SingleServiceTracker<T> implements ServiceListener {
+
     public static interface SingleServiceListener {
         public void serviceFound();
 
@@ -44,28 +45,13 @@ public final class SingleServiceTracker<T> {
 
     private final BundleContext ctx;
     private final String className;
-    private final AtomicReference<T> service = new AtomicReference<T>();
-    private final AtomicReference<ServiceReference> ref = new AtomicReference<ServiceReference>();
+    private final AtomicReference<T> service = new AtomicReference<>();
+    private final AtomicReference<ServiceReference> ref = new AtomicReference<>();
     private final AtomicBoolean open = new AtomicBoolean(false);
     private final SingleServiceListener serviceListener;
     private final String filterString;
     private final Filter filter;
 
-    private final ServiceListener listener = new ServiceListener() {
-        public void serviceChanged(ServiceEvent event) {
-            if (open.get()) {
-                if (event.getType() == ServiceEvent.UNREGISTERING) {
-                    ServiceReference deadRef = event.getServiceReference();
-                    if (deadRef.equals(ref.get())) {
-                        findMatchingReference(deadRef);
-                    }
-                } else if (event.getType() == ServiceEvent.REGISTERED && ref.get() == null) {
-                    findMatchingReference(null);
-                }
-            }
-        }
-    };
-
     public SingleServiceTracker(BundleContext context, Class<T> clazz, SingleServiceListener sl) throws InvalidSyntaxException {
         this(context, clazz, null, sl);
     }
@@ -100,7 +86,7 @@ public final class SingleServiceTracker<T> {
             try {
                 String filterString = '(' + Constants.OBJECTCLASS + '=' + className + ')';
                 if (filter != null) filterString = "(&" + filterString + filter + ')';
-                ctx.addServiceListener(listener, filterString);
+                ctx.addServiceListener(this, filterString);
                 findMatchingReference(null);
             } catch (InvalidSyntaxException e) {
                 // this can never happen. (famous last words :)
@@ -108,6 +94,19 @@ public final class SingleServiceTracker<T> {
         }
     }
 
+    public void serviceChanged(ServiceEvent event) {
+        if (open.get()) {
+            if (event.getType() == ServiceEvent.UNREGISTERING) {
+                ServiceReference deadRef = event.getServiceReference();
+                if (deadRef.equals(ref.get())) {
+                    findMatchingReference(deadRef);
+                }
+            } else if (event.getType() == ServiceEvent.REGISTERED && ref.get() == null) {
+                findMatchingReference(null);
+            }
+        }
+    }
+
     private void findMatchingReference(ServiceReference original) {
         try {
             boolean clear = true;
@@ -176,7 +175,7 @@ public final class SingleServiceTracker<T> {
 
     public void close() {
         if (open.compareAndSet(true, false)) {
-            ctx.removeServiceListener(listener);
+            ctx.removeServiceListener(this);
 
             ServiceReference deadRef;
             synchronized (this) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/annotation/Managed.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/annotation/Managed.java b/util/src/main/java/org/apache/karaf/util/tracker/annotation/Managed.java
new file mode 100644
index 0000000..7d912da
--- /dev/null
+++ b/util/src/main/java/org/apache/karaf/util/tracker/annotation/Managed.java
@@ -0,0 +1,30 @@
+/*
+ * 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.util.tracker.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface Managed {
+
+    String value();
+
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/annotation/ProvideService.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/annotation/ProvideService.java b/util/src/main/java/org/apache/karaf/util/tracker/annotation/ProvideService.java
new file mode 100644
index 0000000..47d70ae
--- /dev/null
+++ b/util/src/main/java/org/apache/karaf/util/tracker/annotation/ProvideService.java
@@ -0,0 +1,27 @@
+/*
+ * 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.util.tracker.annotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ProvideService {
+
+    Class value();
+
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/annotation/RequireService.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/annotation/RequireService.java b/util/src/main/java/org/apache/karaf/util/tracker/annotation/RequireService.java
new file mode 100644
index 0000000..a91089e
--- /dev/null
+++ b/util/src/main/java/org/apache/karaf/util/tracker/annotation/RequireService.java
@@ -0,0 +1,31 @@
+/*
+ * 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.util.tracker.annotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RequireService {
+
+    Class value();
+
+    String filter() default "";
+
+    boolean optional() default false;
+
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/util/src/main/java/org/apache/karaf/util/tracker/annotation/Services.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/tracker/annotation/Services.java b/util/src/main/java/org/apache/karaf/util/tracker/annotation/Services.java
new file mode 100644
index 0000000..0773c15
--- /dev/null
+++ b/util/src/main/java/org/apache/karaf/util/tracker/annotation/Services.java
@@ -0,0 +1,32 @@
+/*
+ * 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.util.tracker.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface Services {
+
+    ProvideService[] provides() default {};
+
+    RequireService[] requires() default {};
+
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/web/pom.xml
----------------------------------------------------------------------
diff --git a/web/pom.xml b/web/pom.xml
index b9fb6be..a178433 100644
--- a/web/pom.xml
+++ b/web/pom.xml
@@ -103,9 +103,7 @@
                             org.apache.karaf.web.internal,
                             org.apache.karaf.web.internal.osgi,
                             org.apache.karaf.web.management.internal,
-                            org.apache.karaf.util.tracker
                         </Private-Package>
-                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/026d3d99/web/src/main/java/org/apache/karaf/web/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/web/src/main/java/org/apache/karaf/web/internal/osgi/Activator.java b/web/src/main/java/org/apache/karaf/web/internal/osgi/Activator.java
index 7a1681c..266ab25 100644
--- a/web/src/main/java/org/apache/karaf/web/internal/osgi/Activator.java
+++ b/web/src/main/java/org/apache/karaf/web/internal/osgi/Activator.java
@@ -17,10 +17,9 @@
 package org.apache.karaf.web.internal.osgi;
 
 import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.Managed;
-import org.apache.karaf.util.tracker.ProvideService;
-import org.apache.karaf.util.tracker.RequireService;
-import org.apache.karaf.util.tracker.Services;
+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.apache.karaf.web.WebContainerService;
 import org.apache.karaf.web.internal.WebContainerServiceImpl;
 import org.apache.karaf.web.internal.WebEventHandler;