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 2014/02/18 09:28:27 UTC

[3/6] [KARAF-2763] Leverage blueprint support for bundle, config, http, instance, jdbc, mms, jndi, car, log, orb, package, region, service, system, web and wrapper commands

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/obr/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/obr/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index dd974f2..941d890 100644
--- a/obr/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/obr/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -19,46 +19,7 @@
 -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
 
-    <reference id="repoAdmin"
-        interface="org.apache.felix.bundlerepository.RepositoryAdmin"
-        availability="optional" />
-
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
-        <command>
-            <action class="org.apache.karaf.obr.command.AddUrlCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.DeployCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.FindCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.InfoCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.ListCommand">
-                <property name="repoAdmin" ref="repoAdmin" />
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.ListUrlCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.RefreshUrlCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.RemoveUrlCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.ResolveCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.SourceCommand" />
-        </command>
-        <command>
-            <action class="org.apache.karaf.obr.command.StartCommand" />
-        </command>
-    </command-bundle>
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+                    scan="org.apache.karaf.obr.command.*" />
 
 </blueprint>

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/test/java/org/apache/karaf/obr/command/ListCommandTest.java
----------------------------------------------------------------------
diff --git a/obr/command/src/test/java/org/apache/karaf/obr/command/ListCommandTest.java b/obr/command/src/test/java/org/apache/karaf/obr/command/ListCommandTest.java
index 18b5f87..46b5e38 100644
--- a/obr/command/src/test/java/org/apache/karaf/obr/command/ListCommandTest.java
+++ b/obr/command/src/test/java/org/apache/karaf/obr/command/ListCommandTest.java
@@ -34,7 +34,7 @@ public class ListCommandTest {
 		IMocksControl control = EasyMock.createControl();
 		RepositoryAdmin repoAdmin = control.createMock(RepositoryAdmin.class);
 		ListCommand command = new ListCommand();
-		command.setRepoAdmin(repoAdmin);
+		command.setRepositoryAdmin(repoAdmin);
 		
 		Resource[] resources = new Resource[] {
 			createResource("My bundle", "my.bundle", "1.0.0"),

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java
----------------------------------------------------------------------
diff --git a/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java b/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java
index ccacc31..72d1af2 100644
--- a/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java
+++ b/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java
@@ -27,6 +27,8 @@ import org.apache.karaf.packages.core.PackageVersion;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.shell.table.Col;
 import org.apache.karaf.shell.table.ShellTable;
 import org.osgi.framework.Bundle;
@@ -35,18 +37,19 @@ import org.osgi.framework.wiring.BundleCapability;
 import org.osgi.framework.wiring.BundleRevision;
 
 @Command(scope = "package", name = "exports", description = "Lists exported packages and the bundles that export them")
+@Service
 public class Exports extends OsgiCommandSupport {
 
-    private PackageService packageService;
-    
     @Option(name = "-d", description = "Only show packages that are exported by more than one bundle", required = false, multiValued = false)
     private boolean onlyDuplicates;
 
     @Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
     boolean noFormat;
 
-    public Exports(PackageService packageService) {
-        super();
+    @Reference
+    private PackageService packageService;
+
+    public void setPackageService(PackageService packageService) {
         this.packageService = packageService;
     }
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/package/command/src/main/java/org/apache/karaf/packages/command/Imports.java
----------------------------------------------------------------------
diff --git a/package/command/src/main/java/org/apache/karaf/packages/command/Imports.java b/package/command/src/main/java/org/apache/karaf/packages/command/Imports.java
index 0944412..e5ea17a 100644
--- a/package/command/src/main/java/org/apache/karaf/packages/command/Imports.java
+++ b/package/command/src/main/java/org/apache/karaf/packages/command/Imports.java
@@ -23,11 +23,14 @@ import org.apache.karaf.packages.core.PackageService;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.shell.table.Col;
 import org.apache.karaf.shell.table.ShellTable;
 import org.osgi.framework.Bundle;
 
 @Command(scope = "package", name = "imports", description = "Lists imported packages and the bundles that import them")
+@Service
 public class Imports extends OsgiCommandSupport {
     
     @Option(name = "-p", description = "Only show package instead of full filter", required = false, multiValued = false)
@@ -36,10 +39,10 @@ public class Imports extends OsgiCommandSupport {
     @Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
     boolean noFormat;
 
+    @Reference
     private PackageService packageService;
 
-    public Imports(PackageService packageService) {
-        super();
+    public void setPackageService(PackageService packageService) {
         this.packageService = packageService;
     }
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/package/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml
----------------------------------------------------------------------
diff --git a/package/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml b/package/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml
index 8f24296..e66dd06 100644
--- a/package/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml
+++ b/package/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml
@@ -19,21 +19,7 @@
 -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
 
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
-        
-        <command>
-            <action class="org.apache.karaf.packages.command.Exports">
-                <argument ref="packageService"/>
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.packages.command.Imports">
-                <argument ref="packageService"/>
-            </action>
-        </command>
-
-    </command-bundle>
-    
-    <reference id="packageService" interface="org.apache.karaf.packages.core.PackageService" />
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+                    scan="org.apache.karaf.packages.command.*" />
 
 </blueprint>

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/region/command/src/main/java/org/apache/karaf/region/commands/AddBundleCommand.java
----------------------------------------------------------------------
diff --git a/region/command/src/main/java/org/apache/karaf/region/commands/AddBundleCommand.java b/region/command/src/main/java/org/apache/karaf/region/commands/AddBundleCommand.java
index 23d0253..ed7c28f 100644
--- a/region/command/src/main/java/org/apache/karaf/region/commands/AddBundleCommand.java
+++ b/region/command/src/main/java/org/apache/karaf/region/commands/AddBundleCommand.java
@@ -20,11 +20,13 @@ import java.util.List;
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
 import org.eclipse.equinox.region.Region;
 import org.eclipse.equinox.region.RegionDigraph;
 import org.osgi.framework.Bundle;
 
 @Command(scope = "region", name = "bundle-add", description = "Adds a list of known bundles by id to a specified region.")
+@Service
 public class AddBundleCommand extends RegionCommandSupport {
 
     @Argument(index = 0, name = "region", description = "Region to add the bundles to", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/region/command/src/main/java/org/apache/karaf/region/commands/AddFilterCommand.java
----------------------------------------------------------------------
diff --git a/region/command/src/main/java/org/apache/karaf/region/commands/AddFilterCommand.java b/region/command/src/main/java/org/apache/karaf/region/commands/AddFilterCommand.java
index 192dacb..bbe35b6 100644
--- a/region/command/src/main/java/org/apache/karaf/region/commands/AddFilterCommand.java
+++ b/region/command/src/main/java/org/apache/karaf/region/commands/AddFilterCommand.java
@@ -24,6 +24,7 @@ import org.apache.aries.util.VersionRange;
 import org.apache.aries.util.manifest.ManifestHeaderProcessor;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
 import org.eclipse.equinox.region.Region;
 import org.eclipse.equinox.region.RegionDigraph;
 import org.eclipse.equinox.region.RegionFilter;
@@ -33,6 +34,7 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 
 @Command(scope = "region", name = "filter-add", description = "Adds a filter between two regions.")
+@Service
 public class AddFilterCommand extends RegionCommandSupport {
 
     @Argument(index = 0, name = "from", description = "The from region.", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/region/command/src/main/java/org/apache/karaf/region/commands/AddRegionCommand.java
----------------------------------------------------------------------
diff --git a/region/command/src/main/java/org/apache/karaf/region/commands/AddRegionCommand.java b/region/command/src/main/java/org/apache/karaf/region/commands/AddRegionCommand.java
index e3857cf..0daeea3 100644
--- a/region/command/src/main/java/org/apache/karaf/region/commands/AddRegionCommand.java
+++ b/region/command/src/main/java/org/apache/karaf/region/commands/AddRegionCommand.java
@@ -20,9 +20,11 @@ import java.util.List;
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
 import org.eclipse.equinox.region.RegionDigraph;
 
 @Command(scope = "region", name = "region-add", description = "Adds a list of regions to the region digraph service.")
+@Service
 public class AddRegionCommand extends RegionCommandSupport {
 
     @Argument(index = 0, name = "name", description = "Regions to add to the region digraph service separated by whitespaces.", required = true, multiValued = true)

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/region/command/src/main/java/org/apache/karaf/region/commands/InfoCommand.java
----------------------------------------------------------------------
diff --git a/region/command/src/main/java/org/apache/karaf/region/commands/InfoCommand.java b/region/command/src/main/java/org/apache/karaf/region/commands/InfoCommand.java
index 73979f9..0843538 100644
--- a/region/command/src/main/java/org/apache/karaf/region/commands/InfoCommand.java
+++ b/region/command/src/main/java/org/apache/karaf/region/commands/InfoCommand.java
@@ -23,12 +23,14 @@ import java.util.Map;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.inject.Service;
 import org.eclipse.equinox.region.Region;
 import org.eclipse.equinox.region.RegionDigraph;
 import org.eclipse.equinox.region.RegionFilter;
 import org.osgi.framework.Bundle;
 
 @Command(scope = "region", name = "info", description = "Prints information about region digraph.")
+@Service
 public class InfoCommand extends RegionCommandSupport {
 
     @Option(name = "-v", aliases = "--verbose", required = false, description = "Show all info.")

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/region/command/src/main/resources/OSGI-INF/blueprint/region-commands.xml
----------------------------------------------------------------------
diff --git a/region/command/src/main/resources/OSGI-INF/blueprint/region-commands.xml b/region/command/src/main/resources/OSGI-INF/blueprint/region-commands.xml
index 18da1a2..e769ff2 100644
--- a/region/command/src/main/resources/OSGI-INF/blueprint/region-commands.xml
+++ b/region/command/src/main/resources/OSGI-INF/blueprint/region-commands.xml
@@ -19,28 +19,8 @@
 -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
     default-activation="lazy">
-    <reference id="regionDigraph"
-        interface="org.eclipse.equinox.region.RegionDigraph"
-        availability="mandatory" />
 
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.0.0">
-        <command name="region/addBundle">
-            <action class="org.apache.karaf.region.commands.AddBundleCommand" />
-        </command>
-        <command name="region/addFilter">
-            <action class="org.apache.karaf.region.commands.AddFilterCommand" />
-        </command>
-        <command name="region/addRegion">
-            <action class="org.apache.karaf.region.commands.AddRegionCommand" />
-        </command>
-        <command name="region/info">
-            <action class="org.apache.karaf.region.commands.InfoCommand" />
-        </command>
-        <!--<command name="region/list">-->
-            <!--<action class="org.apache.karaf.shell.region.ListCommand">-->
-                <!--<property name="repoAdmin" ref="repoAdmin" />-->
-            <!--</action>-->
-        <!--</command>-->
-    </command-bundle>
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+                    scan="org.apache.karaf.region.commands.*" />
 
 </blueprint>

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java
----------------------------------------------------------------------
diff --git a/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java b/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java
index 9b8f389..0b12db1 100644
--- a/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java
+++ b/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java
@@ -29,6 +29,7 @@ import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.shell.util.ShellUtil;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -36,6 +37,7 @@ import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 
 @Command(scope = "service", name = "list", description = "Lists OSGi services.")
+@Service
 public class ListServices extends OsgiCommandSupport {
 
     @Argument(index = 0, name = "objectClass", description = "Name of service objectClass to filter for", required = false,

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/service/command/src/main/java/org/apache/karaf/service/command/ObjectClassCompleter.java
----------------------------------------------------------------------
diff --git a/service/command/src/main/java/org/apache/karaf/service/command/ObjectClassCompleter.java b/service/command/src/main/java/org/apache/karaf/service/command/ObjectClassCompleter.java
index d12675e..9533215 100644
--- a/service/command/src/main/java/org/apache/karaf/service/command/ObjectClassCompleter.java
+++ b/service/command/src/main/java/org/apache/karaf/service/command/ObjectClassCompleter.java
@@ -19,18 +19,21 @@
 
 package org.apache.karaf.service.command;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import org.apache.karaf.shell.console.Completer;
 import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
 import org.osgi.framework.BundleContext;
 
+@Service
 public class ObjectClassCompleter implements Completer {
 
-    private final StringsCompleter delegate = new StringsCompleter();
-
+    @Reference
     private BundleContext context;
 
     public void setContext(BundleContext context) {
@@ -39,16 +42,14 @@ public class ObjectClassCompleter implements Completer {
 
     @SuppressWarnings("rawtypes")
     public int complete(final String buffer, final int cursor, final List candidates) {
-        delegate.getStrings().clear();
         Map<String, Integer> serviceNamesMap = ListServices.getServiceNamesMap(context);
         Set<String> serviceNames = serviceNamesMap.keySet();
+        List<String> strings = new ArrayList<String>();
         for (String name : serviceNames) {
-            delegate.getStrings().add(ObjectClassMatcher.getShortName(name));
+            strings.add(ObjectClassMatcher.getShortName(name));
         }
-        delegate.getStrings().addAll(serviceNames);
-        return delegate.complete(buffer, cursor, candidates);
+        strings.addAll(serviceNames);
+        return new StringsCompleter(strings).complete(buffer, cursor, candidates);
     }
 
-
-
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/service/command/src/main/java/org/apache/karaf/service/command/Wait.java
----------------------------------------------------------------------
diff --git a/service/command/src/main/java/org/apache/karaf/service/command/Wait.java b/service/command/src/main/java/org/apache/karaf/service/command/Wait.java
index e647d11..fb9794f 100644
--- a/service/command/src/main/java/org/apache/karaf/service/command/Wait.java
+++ b/service/command/src/main/java/org/apache/karaf/service/command/Wait.java
@@ -22,6 +22,7 @@ import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Service;
 import org.osgi.framework.Constants;
 import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkUtil;
@@ -32,6 +33,7 @@ import org.osgi.util.tracker.ServiceTracker;
  * Command that can be used to wait for an OSGi service.
  */
 @Command(scope = "service", name = "wait", description = "Wait for a given OSGi service.")
+@Service
 public class Wait extends OsgiCommandSupport {
 
     @Option(name = "-e", aliases = { "--exception" }, description = "throw an exception if the service is not found after the timeout")

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml
----------------------------------------------------------------------
diff --git a/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml b/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml
index 8bc4308..80d4fbe 100644
--- a/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml
+++ b/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml
@@ -20,17 +20,7 @@
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
            default-activation="lazy">
 
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
-        <command>
-            <action class="org.apache.karaf.service.command.ListServices"/>
-        </command>
-        <command>
-            <action class="org.apache.karaf.service.command.Wait"/>
-        </command>
-    </command-bundle>
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+                    scan="org.apache.karaf.service.command.*" />
 
-    <bean id="objectClassCompleter" class="org.apache.karaf.service.command.ObjectClassCompleter">
-        <property name="context" ref="blueprintBundleContext"/>
-    </bean>
-    <service ref="objectClassCompleter" auto-export="all-classes"/>
 </blueprint>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/system/command/src/main/java/org/apache/karaf/system/commands/AbstractSystemAction.java
----------------------------------------------------------------------
diff --git a/system/command/src/main/java/org/apache/karaf/system/commands/AbstractSystemAction.java b/system/command/src/main/java/org/apache/karaf/system/commands/AbstractSystemAction.java
index 6c89e53..0ffdae9 100644
--- a/system/command/src/main/java/org/apache/karaf/system/commands/AbstractSystemAction.java
+++ b/system/command/src/main/java/org/apache/karaf/system/commands/AbstractSystemAction.java
@@ -17,10 +17,13 @@
 package org.apache.karaf.system.commands;
 
 import org.apache.karaf.shell.console.AbstractAction;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
 import org.apache.karaf.system.SystemService;
 
-public abstract class AbstractSystemAction extends AbstractAction {
+public abstract class AbstractSystemAction extends OsgiCommandSupport {
 
+    @Reference
     protected SystemService systemService;
 
     public void setSystemService(SystemService systemService) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/system/command/src/main/java/org/apache/karaf/system/commands/FrameworkOptions.java
----------------------------------------------------------------------
diff --git a/system/command/src/main/java/org/apache/karaf/system/commands/FrameworkOptions.java b/system/command/src/main/java/org/apache/karaf/system/commands/FrameworkOptions.java
index 1a403cc..13f7d42 100644
--- a/system/command/src/main/java/org/apache/karaf/system/commands/FrameworkOptions.java
+++ b/system/command/src/main/java/org/apache/karaf/system/commands/FrameworkOptions.java
@@ -19,12 +19,14 @@ package org.apache.karaf.system.commands;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.system.FrameworkType;
 
 /**
  * Command for enabling/disabling debug logging on the OSGi framework
  */
 @Command(scope = "system", name = "framework", description = "OSGi Framework options.")
+@Service
 public class FrameworkOptions extends AbstractSystemAction {
 
     @Option(name = "-debug", aliases={"--enable-debug"}, description="Enable debug for the OSGi framework", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/system/command/src/main/java/org/apache/karaf/system/commands/Name.java
----------------------------------------------------------------------
diff --git a/system/command/src/main/java/org/apache/karaf/system/commands/Name.java b/system/command/src/main/java/org/apache/karaf/system/commands/Name.java
index eaffce7..6e6eb41 100644
--- a/system/command/src/main/java/org/apache/karaf/system/commands/Name.java
+++ b/system/command/src/main/java/org/apache/karaf/system/commands/Name.java
@@ -18,11 +18,13 @@ package org.apache.karaf.system.commands;
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
 
 /**
  * Command to shut down Karaf container.
  */
 @Command(scope = "system", name = "name", description = "Show or change Karaf instance name.")
+@Service
 public class Name extends AbstractSystemAction {
 
     @Argument(name = "name", index = 0, description = "New name for the instance", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/system/command/src/main/java/org/apache/karaf/system/commands/Shutdown.java
----------------------------------------------------------------------
diff --git a/system/command/src/main/java/org/apache/karaf/system/commands/Shutdown.java b/system/command/src/main/java/org/apache/karaf/system/commands/Shutdown.java
index 1d167d9..a95b9d0 100644
--- a/system/command/src/main/java/org/apache/karaf/system/commands/Shutdown.java
+++ b/system/command/src/main/java/org/apache/karaf/system/commands/Shutdown.java
@@ -20,12 +20,14 @@ import jline.console.ConsoleReader;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.system.SystemService;
 
 /**
  * Command to shut down Karaf container.
  */
 @Command(scope = "system", name = "shutdown", description = "Shutdown Karaf.")
+@Service
 public class Shutdown extends AbstractSystemAction {
 
     @Option(name = "-f", aliases = "--force", description = "Force the shutdown without confirmation message.", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/system/command/src/main/java/org/apache/karaf/system/commands/StartLevel.java
----------------------------------------------------------------------
diff --git a/system/command/src/main/java/org/apache/karaf/system/commands/StartLevel.java b/system/command/src/main/java/org/apache/karaf/system/commands/StartLevel.java
index 86a5aaf..1d7dfdf 100644
--- a/system/command/src/main/java/org/apache/karaf/system/commands/StartLevel.java
+++ b/system/command/src/main/java/org/apache/karaf/system/commands/StartLevel.java
@@ -19,23 +19,19 @@ package org.apache.karaf.system.commands;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.system.SystemService;
 
 /**
  * Get/set the system start level.
  */
 @Command(scope = "system", name = "start-level", description = "Gets or sets the system start level.")
-public class StartLevel extends OsgiCommandSupport {
+@Service
+public class StartLevel extends AbstractSystemAction {
 
     @Argument(index = 0, name = "level", description = "The new system start level to set", required = false, multiValued = false)
     Integer level;
 
-    private SystemService systemService;
-
-    public void setSystemService(SystemService systemService) {
-        this.systemService = systemService;
-    }
-
     protected Object doExecute() throws Exception {
         if (level == null) {
             System.out.println("Level " + systemService.getStartLevel());

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/system/command/src/main/java/org/apache/karaf/system/commands/SystemProperty.java
----------------------------------------------------------------------
diff --git a/system/command/src/main/java/org/apache/karaf/system/commands/SystemProperty.java b/system/command/src/main/java/org/apache/karaf/system/commands/SystemProperty.java
index e1cf3f4..b03d40f 100644
--- a/system/command/src/main/java/org/apache/karaf/system/commands/SystemProperty.java
+++ b/system/command/src/main/java/org/apache/karaf/system/commands/SystemProperty.java
@@ -19,6 +19,7 @@ package org.apache.karaf.system.commands;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.inject.Service;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 
@@ -31,6 +32,7 @@ import java.util.*;
  * Command that allow access to system properties easily.
  */
 @Command(scope = "system", name = "property", description = "Get or set a system property.")
+@Service
 public class SystemProperty extends AbstractSystemAction {
 
     @Option(name = "-p", aliases = {"--persistent"}, description = "Persist the new value to the etc/system.properties file")
@@ -48,12 +50,6 @@ public class SystemProperty extends AbstractSystemAction {
     @Argument(index = 1, name = "value", required = false, description = "New value for the system property")
     String value;
 
-    private BundleContext bundleContext;
-
-    public void setBundleContext(BundleContext bundleContext) {
-        this.bundleContext = bundleContext;
-    }
-
     @Override
     protected Object doExecute() throws Exception {
         if (key == null && value == null) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/system/command/src/main/java/org/apache/karaf/system/commands/Version.java
----------------------------------------------------------------------
diff --git a/system/command/src/main/java/org/apache/karaf/system/commands/Version.java b/system/command/src/main/java/org/apache/karaf/system/commands/Version.java
index c331e72..4dd0d2c 100644
--- a/system/command/src/main/java/org/apache/karaf/system/commands/Version.java
+++ b/system/command/src/main/java/org/apache/karaf/system/commands/Version.java
@@ -17,8 +17,10 @@
 package org.apache.karaf.system.commands;
 
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
 
 @Command(scope = "system", name = "version", description = "Display the instance version")
+@Service
 public class Version extends AbstractSystemAction {
 
     protected Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/system/command/src/main/resources/OSGI-INF/blueprint/system-commands.xml
----------------------------------------------------------------------
diff --git a/system/command/src/main/resources/OSGI-INF/blueprint/system-commands.xml b/system/command/src/main/resources/OSGI-INF/blueprint/system-commands.xml
index 6ce751a..6c9f328 100644
--- a/system/command/src/main/resources/OSGI-INF/blueprint/system-commands.xml
+++ b/system/command/src/main/resources/OSGI-INF/blueprint/system-commands.xml
@@ -19,40 +19,7 @@
 -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
 
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
-        <command>
-            <action class="org.apache.karaf.system.commands.Shutdown">
-                <property name="systemService" ref="systemService"/>
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.system.commands.StartLevel">
-                <property name="systemService" ref="systemService"/>
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.system.commands.Name">
-                <property name="systemService" ref="systemService"/>
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.system.commands.Version">
-                <property name="systemService" ref="systemService"/>
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.system.commands.FrameworkOptions" >
-                <property name="systemService" ref="systemService"/>
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.system.commands.SystemProperty" >
-                <property name="systemService" ref="systemService"/>
-                <property name="bundleContext" ref="blueprintBundleContext"/>
-            </action>
-        </command>
-    </command-bundle>
-
-    <reference id="systemService" interface="org.apache.karaf.system.SystemService"/>
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+                    scan="org.apache.karaf.system.commands.*" />
 
 </blueprint>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/web/command/src/main/java/org/apache/karaf/web/commands/List.java
----------------------------------------------------------------------
diff --git a/web/command/src/main/java/org/apache/karaf/web/commands/List.java b/web/command/src/main/java/org/apache/karaf/web/commands/List.java
index 523d13c..c2508ad 100644
--- a/web/command/src/main/java/org/apache/karaf/web/commands/List.java
+++ b/web/command/src/main/java/org/apache/karaf/web/commands/List.java
@@ -19,6 +19,8 @@ package org.apache.karaf.web.commands;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.shell.table.Col;
 import org.apache.karaf.shell.table.ShellTable;
 import org.apache.karaf.web.WebBundle;
@@ -26,11 +28,13 @@ import org.apache.karaf.web.WebContainerService;
 
 
 @Command(scope = "web", name = "list", description = "Lists details for war bundles.")
+@Service
 public class List extends OsgiCommandSupport {
 
     @Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
     boolean noFormat;
-    
+
+    @Reference
     private WebContainerService webContainerService;
     
     public void setWebContainerService(WebContainerService webContainerService) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/web/command/src/main/java/org/apache/karaf/web/commands/Start.java
----------------------------------------------------------------------
diff --git a/web/command/src/main/java/org/apache/karaf/web/commands/Start.java b/web/command/src/main/java/org/apache/karaf/web/commands/Start.java
index ba62062..f87846e 100644
--- a/web/command/src/main/java/org/apache/karaf/web/commands/Start.java
+++ b/web/command/src/main/java/org/apache/karaf/web/commands/Start.java
@@ -19,14 +19,18 @@ package org.apache.karaf.web.commands;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.web.WebContainerService;
 
 @Command(scope = "web", name = "start", description = "Start the web context of given bundles.")
+@Service
 public class Start extends OsgiCommandSupport {
 
     @Argument(index = 0, name = "ids", description = "The list of bundle IDs separated by whitespaces", required = true, multiValued = true)
     java.util.List<Long> ids;
 
+    @Reference
     private WebContainerService webContainerService;
 
     public void setWebContainerService(WebContainerService webContainerService) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/web/command/src/main/java/org/apache/karaf/web/commands/Stop.java
----------------------------------------------------------------------
diff --git a/web/command/src/main/java/org/apache/karaf/web/commands/Stop.java b/web/command/src/main/java/org/apache/karaf/web/commands/Stop.java
index 8a68bf2..bff6180 100644
--- a/web/command/src/main/java/org/apache/karaf/web/commands/Stop.java
+++ b/web/command/src/main/java/org/apache/karaf/web/commands/Stop.java
@@ -19,6 +19,8 @@ package org.apache.karaf.web.commands;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.web.WebContainerService;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -26,15 +28,15 @@ import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 
 @Command(scope = "web", name = "stop", description = "Stop the web context of given bundles.")
+@Service
 public class Stop extends OsgiCommandSupport {
 
     @Argument(index = 0, name = "ids", description = "The list of bundle IDs separated by whitespaces", required = true, multiValued = true)
     java.util.List<Long> ids;
 
+    @Reference
     private WebContainerService webContainerService;
     
-    
-
     public void setWebContainerService(WebContainerService webContainerService) {
         this.webContainerService = webContainerService;
     }

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/web/command/src/main/resources/OSGI-INF/blueprint/web-commands.xml
----------------------------------------------------------------------
diff --git a/web/command/src/main/resources/OSGI-INF/blueprint/web-commands.xml b/web/command/src/main/resources/OSGI-INF/blueprint/web-commands.xml
index e1e5d3f..b00ac40 100644
--- a/web/command/src/main/resources/OSGI-INF/blueprint/web-commands.xml
+++ b/web/command/src/main/resources/OSGI-INF/blueprint/web-commands.xml
@@ -19,24 +19,7 @@
 -->        
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
 
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
-        <command>
-            <action class="org.apache.karaf.web.commands.List">
-                <property name="webContainerService" ref="webContainerService"/>
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.web.commands.Start">
-                <property name="webContainerService" ref="webContainerService"/>
-            </action>
-        </command>
-        <command>
-            <action class="org.apache.karaf.web.commands.Stop">
-                <property name="webContainerService" ref="webContainerService"/>
-            </action>
-        </command>
-    </command-bundle>
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+                    scan="org.apache.karaf.web.commands.*" />
 
-    <reference id="webContainerService" interface="org.apache.karaf.web.WebContainerService"/>
-    
 </blueprint>        
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/wrapper/command/src/main/java/org/apache/karaf/wrapper/commands/Install.java
----------------------------------------------------------------------
diff --git a/wrapper/command/src/main/java/org/apache/karaf/wrapper/commands/Install.java b/wrapper/command/src/main/java/org/apache/karaf/wrapper/commands/Install.java
index a7fffac..14c921a 100644
--- a/wrapper/command/src/main/java/org/apache/karaf/wrapper/commands/Install.java
+++ b/wrapper/command/src/main/java/org/apache/karaf/wrapper/commands/Install.java
@@ -21,6 +21,8 @@ import java.io.File;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.AbstractAction;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
 import org.apache.karaf.wrapper.WrapperService;
 import org.apache.karaf.wrapper.internal.WrapperServiceImpl;
 import org.fusesource.jansi.Ansi;
@@ -29,6 +31,7 @@ import org.fusesource.jansi.Ansi;
  * Installs the Karaf instance as a service in your operating system.
  */
 @Command(scope = "wrapper", name = "install", description = "Install the container as a system service in the OS.")
+@Service
 public class Install extends AbstractAction {
 
 	@Option(name = "-n", aliases = { "--name" }, description = "The service name that will be used when installing the service. (Default: karaf)", required = false, multiValued = false)
@@ -43,6 +46,7 @@ public class Install extends AbstractAction {
 	@Option(name = "-s", aliases = { "--start-type" }, description = "Mode in which the service is installed. AUTO_START or DEMAND_START (Default: AUTO_START)", required = false, multiValued = false)
 	private String startType = "AUTO_START";
 
+    @Reference
 	private WrapperService wrapperService = new WrapperServiceImpl();
 
 	public void setWrapperService(WrapperService wrapperService) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/wrapper/command/src/main/resources/OSGI-INF/blueprint/wrapper-commands.xml
----------------------------------------------------------------------
diff --git a/wrapper/command/src/main/resources/OSGI-INF/blueprint/wrapper-commands.xml b/wrapper/command/src/main/resources/OSGI-INF/blueprint/wrapper-commands.xml
index 7f4e9a8..f29e8a0 100644
--- a/wrapper/command/src/main/resources/OSGI-INF/blueprint/wrapper-commands.xml
+++ b/wrapper/command/src/main/resources/OSGI-INF/blueprint/wrapper-commands.xml
@@ -20,14 +20,7 @@
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
         default-activation="lazy">
 
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
-        <command>
-            <action class="org.apache.karaf.wrapper.commands.Install">
-                <property name="wrapperService" ref="wrapperService"/>
-            </action>
-        </command>
-    </command-bundle>
-
-    <reference id="wrapperService" interface="org.apache.karaf.wrapper.WrapperService"/>
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+                    scan="org.apache.karaf.wrapper.commands.*" />
 
 </blueprint>
\ No newline at end of file