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:25 UTC
[1/6] git commit: [KARAF-2763] Define simple injection annotations
Repository: karaf
Updated Branches:
refs/heads/master 14429c940 -> 2bd28679e
[KARAF-2763] Define simple injection annotations
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/5acee177
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/5acee177
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/5acee177
Branch: refs/heads/master
Commit: 5acee1776d59c791c68d59fc786fe858cfd8eb56
Parents: 14429c9
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Tue Feb 18 09:15:58 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Tue Feb 18 09:15:58 2014 +0100
----------------------------------------------------------------------
shell/console/pom.xml | 1 +
.../org/apache/karaf/shell/inject/Destroy.java | 29 ++++++++++++++++++++
.../org/apache/karaf/shell/inject/Init.java | 29 ++++++++++++++++++++
.../apache/karaf/shell/inject/Reference.java | 29 ++++++++++++++++++++
.../org/apache/karaf/shell/inject/Service.java | 29 ++++++++++++++++++++
5 files changed, 117 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/5acee177/shell/console/pom.xml
----------------------------------------------------------------------
diff --git a/shell/console/pom.xml b/shell/console/pom.xml
index 2a44b8b..9a04677 100644
--- a/shell/console/pom.xml
+++ b/shell/console/pom.xml
@@ -149,6 +149,7 @@
org.apache.karaf.shell.console.commands;version=2.3.0,
org.apache.karaf.shell.console.completer;version=${project.version},
org.apache.karaf.shell.console.completer;version=2.3.0,
+ org.apache.karaf.shell.inject;version=${project.version},
org.apache.karaf.shell.util;version=${project.version},
org.apache.karaf.shell.util;version=2.3.0,
org.apache.felix.gogo*;version=${felix.gogo.version},
http://git-wip-us.apache.org/repos/asf/karaf/blob/5acee177/shell/console/src/main/java/org/apache/karaf/shell/inject/Destroy.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/Destroy.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/Destroy.java
new file mode 100644
index 0000000..4df9fe3
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/Destroy.java
@@ -0,0 +1,29 @@
+/*
+ * 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.shell.inject;
+
+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.METHOD})
+public @interface Destroy {
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/5acee177/shell/console/src/main/java/org/apache/karaf/shell/inject/Init.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/Init.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/Init.java
new file mode 100644
index 0000000..154b883
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/Init.java
@@ -0,0 +1,29 @@
+/*
+ * 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.shell.inject;
+
+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.METHOD})
+public @interface Init {
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/5acee177/shell/console/src/main/java/org/apache/karaf/shell/inject/Reference.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/Reference.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/Reference.java
new file mode 100644
index 0000000..b74d609
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/Reference.java
@@ -0,0 +1,29 @@
+/*
+ * 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.shell.inject;
+
+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.FIELD})
+public @interface Reference {
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/5acee177/shell/console/src/main/java/org/apache/karaf/shell/inject/Service.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/Service.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/Service.java
new file mode 100644
index 0000000..ff3f3a3
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/Service.java
@@ -0,0 +1,29 @@
+/*
+ * 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.shell.inject;
+
+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 Service {
+}
[5/6] git commit: [KARAF-2763] Leverage blueprint support for bundle,
config, http, instance, jdbc, mms, jndi, car, log, orb, package, region,
service, system, web and wrapper commands
Posted by gn...@apache.org.
[KARAF-2763] Leverage blueprint support for bundle, config, http, instance, jdbc, mms, jndi, car, log, orb, package, region, service, system, web and wrapper commands
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/e4f7bc4a
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/e4f7bc4a
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/e4f7bc4a
Branch: refs/heads/master
Commit: e4f7bc4ad48e378bb25c1829b21f422a33fedeab
Parents: 582bf1d
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Tue Feb 18 09:24:21 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Tue Feb 18 09:24:21 2014 +0100
----------------------------------------------------------------------
.../karaf/bundle/command/BundleCommand.java | 2 +
.../karaf/bundle/command/BundlesCommand.java | 6 +-
.../karaf/bundle/command/Capabilities.java | 2 +
.../apache/karaf/bundle/command/Classes.java | 2 +
.../org/apache/karaf/bundle/command/Diag.java | 2 +
.../karaf/bundle/command/DynamicImport.java | 2 +
.../apache/karaf/bundle/command/FindClass.java | 2 +
.../apache/karaf/bundle/command/Headers.java | 2 +
.../org/apache/karaf/bundle/command/Info.java | 2 +
.../apache/karaf/bundle/command/Install.java | 2 +
.../bundle/command/ListBundleServices.java | 2 +
.../karaf/bundle/command/ListBundles.java | 4 +
.../apache/karaf/bundle/command/LoadTest.java | 2 +
.../apache/karaf/bundle/command/Refresh.java | 2 +
.../karaf/bundle/command/Requirements.java | 2 +
.../apache/karaf/bundle/command/Resolve.java | 2 +
.../apache/karaf/bundle/command/Restart.java | 2 +
.../karaf/bundle/command/ShowBundleTree.java | 2 +
.../org/apache/karaf/bundle/command/Start.java | 2 +
.../apache/karaf/bundle/command/StartLevel.java | 2 +
.../org/apache/karaf/bundle/command/Stop.java | 2 +
.../apache/karaf/bundle/command/Uninstall.java | 2 +
.../org/apache/karaf/bundle/command/Update.java | 2 +
.../org/apache/karaf/bundle/command/Watch.java | 7 +-
.../OSGI-INF/blueprint/shell-bundles.xml | 116 +------------------
.../karaf/config/command/CancelCommand.java | 2 +
.../config/command/ConfigCommandSupport.java | 4 +
.../karaf/config/command/DeleteCommand.java | 2 +
.../karaf/config/command/EditCommand.java | 2 +
.../karaf/config/command/ListCommand.java | 2 +
.../karaf/config/command/PropAppendCommand.java | 2 +
.../karaf/config/command/PropDelCommand.java | 2 +
.../karaf/config/command/PropListCommand.java | 2 +
.../karaf/config/command/PropSetCommand.java | 2 +
.../karaf/config/command/UpdateCommand.java | 2 +
.../completers/ConfigurationCompleter.java | 8 +-
.../ConfigurationPropertyCompleter.java | 6 +-
.../OSGI-INF/blueprint/shell-config.xml | 62 +---------
.../karaf/http/command/ServletListCommand.java | 11 +-
.../resources/OSGI-INF/blueprint/blueprint.xml | 11 +-
.../instance/command/ChangeOptsCommand.java | 2 +
.../command/ChangeRmiRegistryPortCommand.java | 2 +
.../command/ChangeRmiServerPortCommand.java | 2 +
.../instance/command/ChangeSshPortCommand.java | 2 +
.../karaf/instance/command/CloneCommand.java | 2 +
.../karaf/instance/command/ConnectCommand.java | 2 +
.../karaf/instance/command/CreateCommand.java | 2 +
.../karaf/instance/command/DestroyCommand.java | 2 +
.../command/InstanceCommandSupport.java | 2 +
.../karaf/instance/command/ListCommand.java | 2 +
.../karaf/instance/command/RenameCommand.java | 2 +
.../karaf/instance/command/StartCommand.java | 2 +
.../karaf/instance/command/StatusCommand.java | 2 +
.../karaf/instance/command/StopCommand.java | 2 +
.../command/completers/InstanceCompleter.java | 4 +
.../OSGI-INF/blueprint/instance-command.xml | 80 +------------
.../org/apache/karaf/itests/RegionTest.java | 2 +-
.../karaf/jdbc/command/CreateCommand.java | 2 +
.../karaf/jdbc/command/DataSourcesCommand.java | 2 +
.../karaf/jdbc/command/DeleteCommand.java | 2 +
.../karaf/jdbc/command/ExecuteCommand.java | 2 +
.../apache/karaf/jdbc/command/InfoCommand.java | 2 +
.../karaf/jdbc/command/JdbcCommandSupport.java | 2 +
.../apache/karaf/jdbc/command/QueryCommand.java | 2 +
.../karaf/jdbc/command/TablesCommand.java | 2 +
.../DataSourcesFileNameCompleter.java | 4 +
.../completers/DataSourcesNameCompleter.java | 4 +
.../OSGI-INF/blueprint/jdbc-command.xml | 51 +-------
.../apache/karaf/jms/command/BrowseCommand.java | 2 +
.../jms/command/ConnectionFactoriesCommand.java | 2 +
.../karaf/jms/command/ConsumeCommand.java | 2 +
.../apache/karaf/jms/command/CountCommand.java | 2 +
.../apache/karaf/jms/command/CreateCommand.java | 2 +
.../apache/karaf/jms/command/DeleteCommand.java | 2 +
.../apache/karaf/jms/command/InfoCommand.java | 2 +
.../karaf/jms/command/JmsCommandSupport.java | 2 +
.../apache/karaf/jms/command/MoveCommand.java | 2 +
.../apache/karaf/jms/command/QueuesCommand.java | 2 +
.../apache/karaf/jms/command/SendCommand.java | 2 +
.../apache/karaf/jms/command/TopicsCommand.java | 2 +
.../ConnectionFactoriesFileNameCompleter.java | 4 +
.../ConnectionFactoriesNameCompleter.java | 4 +
.../OSGI-INF/blueprint/jms-command.xml | 71 +-----------
.../apache/karaf/jndi/command/AliasCommand.java | 2 +
.../apache/karaf/jndi/command/BindCommand.java | 2 +
.../karaf/jndi/command/ContextsCommand.java | 2 +
.../karaf/jndi/command/CreateCommand.java | 2 +
.../karaf/jndi/command/DeleteCommand.java | 2 +
.../karaf/jndi/command/JndiCommandSupport.java | 2 +
.../apache/karaf/jndi/command/NamesCommand.java | 2 +
.../karaf/jndi/command/UnbindCommand.java | 2 +
.../command/completers/ContextsCompleter.java | 4 +
.../jndi/command/completers/NamesCompleter.java | 4 +
.../command/completers/ServicesIdCompleter.java | 4 +
.../OSGI-INF/blueprint/jndi-command.xml | 56 +--------
.../karaf/kar/command/CreateKarCommand.java | 2 +
.../karaf/kar/command/InstallKarCommand.java | 2 +
.../karaf/kar/command/KarCommandSupport.java | 2 +
.../karaf/kar/command/ListKarCommand.java | 2 +
.../karaf/kar/command/UninstallKarCommand.java | 2 +
.../kar/command/completers/KarCompleter.java | 6 +-
.../OSGI-INF/blueprint/kar-command.xml | 31 +----
.../org/apache/karaf/log/command/ClearLog.java | 2 +
.../karaf/log/command/DisplayException.java | 2 +
.../apache/karaf/log/command/DisplayLog.java | 4 +
.../apache/karaf/log/command/GetLogLevel.java | 2 +
.../karaf/log/command/LogCommandSupport.java | 3 +
.../org/apache/karaf/log/command/LogEntry.java | 11 +-
.../org/apache/karaf/log/command/LogTail.java | 2 +
.../apache/karaf/log/command/SetLogLevel.java | 2 +
.../resources/OSGI-INF/blueprint/shell-log.xml | 45 +------
.../apache/karaf/obr/command/AddUrlCommand.java | 2 +
.../apache/karaf/obr/command/DeployCommand.java | 2 +
.../apache/karaf/obr/command/FindCommand.java | 2 +
.../apache/karaf/obr/command/InfoCommand.java | 2 +
.../apache/karaf/obr/command/ListCommand.java | 17 +--
.../karaf/obr/command/ListUrlCommand.java | 2 +
.../karaf/obr/command/ObrCommandSupport.java | 25 ++--
.../karaf/obr/command/RefreshUrlCommand.java | 2 +
.../karaf/obr/command/RemoveUrlCommand.java | 2 +
.../karaf/obr/command/ResolveCommand.java | 2 +
.../apache/karaf/obr/command/SourceCommand.java | 2 +
.../apache/karaf/obr/command/StartCommand.java | 2 +
.../resources/OSGI-INF/blueprint/blueprint.xml | 43 +------
.../karaf/obr/command/ListCommandTest.java | 2 +-
.../apache/karaf/packages/command/Exports.java | 11 +-
.../apache/karaf/packages/command/Imports.java | 7 +-
.../OSGI-INF/blueprint/shell-bundles.xml | 18 +--
.../karaf/region/commands/AddBundleCommand.java | 2 +
.../karaf/region/commands/AddFilterCommand.java | 2 +
.../karaf/region/commands/AddRegionCommand.java | 2 +
.../karaf/region/commands/InfoCommand.java | 2 +
.../OSGI-INF/blueprint/region-commands.xml | 24 +---
.../karaf/service/command/ListServices.java | 2 +
.../service/command/ObjectClassCompleter.java | 17 +--
.../org/apache/karaf/service/command/Wait.java | 2 +
.../OSGI-INF/blueprint/shell-services.xml | 14 +--
.../system/commands/AbstractSystemAction.java | 5 +-
.../karaf/system/commands/FrameworkOptions.java | 2 +
.../org/apache/karaf/system/commands/Name.java | 2 +
.../apache/karaf/system/commands/Shutdown.java | 2 +
.../karaf/system/commands/StartLevel.java | 10 +-
.../karaf/system/commands/SystemProperty.java | 8 +-
.../apache/karaf/system/commands/Version.java | 2 +
.../OSGI-INF/blueprint/system-commands.xml | 37 +-----
.../org/apache/karaf/web/commands/List.java | 6 +-
.../org/apache/karaf/web/commands/Start.java | 4 +
.../org/apache/karaf/web/commands/Stop.java | 6 +-
.../OSGI-INF/blueprint/web-commands.xml | 21 +---
.../apache/karaf/wrapper/commands/Install.java | 4 +
.../OSGI-INF/blueprint/wrapper-commands.xml | 11 +-
151 files changed, 389 insertions(+), 732 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundleCommand.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundleCommand.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundleCommand.java
index 78a4f2a..9aa6c89 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundleCommand.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundleCommand.java
@@ -19,6 +19,7 @@ package org.apache.karaf.bundle.command;
import org.apache.karaf.bundle.core.BundleService;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
import org.apache.karaf.shell.util.ShellUtil;
import org.osgi.framework.Bundle;
@@ -32,6 +33,7 @@ public abstract class BundleCommand extends OsgiCommandSupport {
boolean defaultAllBundles = true;
+ @Reference
BundleService bundleService;
public BundleCommand(boolean defaultAllBundles) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java
index 1adee6c..6a421fe 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.apache.karaf.bundle.core.BundleService;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
import org.apache.karaf.shell.util.ShellUtil;
import org.osgi.framework.Bundle;
@@ -31,6 +32,7 @@ public abstract class BundlesCommand extends OsgiCommandSupport {
boolean defaultAllBundles = true;
+ @Reference
BundleService bundleService;
public BundlesCommand(boolean defaultAllBundles) {
@@ -61,8 +63,8 @@ public abstract class BundlesCommand extends OsgiCommandSupport {
protected abstract void doExecute(List<Bundle> bundles) throws Exception;
- public void setBundleService(BundleService bundleSelector) {
- this.bundleService = bundleSelector;
+ public void setBundleService(BundleService bundleService) {
+ this.bundleService = bundleService;
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Capabilities.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Capabilities.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Capabilities.java
index 2ec9c31..4d8c694 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Capabilities.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Capabilities.java
@@ -24,6 +24,7 @@ import java.util.regex.Pattern;
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.shell.util.ShellUtil;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
@@ -33,6 +34,7 @@ import org.osgi.framework.wiring.BundleWire;
import org.osgi.framework.wiring.BundleWiring;
@Command(scope = "bundle", name = "capabilities", description = "Displays OSGi capabilities of a given bundles.")
+@Service
public class Capabilities extends BundlesCommand {
public static final String NONSTANDARD_SERVICE_NAMESPACE = "service";
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Classes.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Classes.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Classes.java
index 40bd0a4..3a9dc03 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Classes.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Classes.java
@@ -18,6 +18,7 @@ package org.apache.karaf.bundle.command;
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.Bundle;
import org.osgi.framework.wiring.BundleWiring;
@@ -25,6 +26,7 @@ import java.util.Collection;
import java.util.List;
@Command(scope = "bundle", name = "classes", description = "Displays a list of classes contained in the bundle")
+@Service
public class Classes extends BundlesCommand {
@Option(name = "-a", aliases={"--display-all-files"}, description="List all classes and files in the bundle", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java
index a1d4ee7..0a70d72 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java
@@ -21,10 +21,12 @@ import java.util.List;
import org.apache.karaf.bundle.core.BundleInfo;
import org.apache.karaf.bundle.core.BundleState;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.util.ShellUtil;
import org.osgi.framework.Bundle;
@Command(scope = "bundle", name = "diag", description = "Displays diagnostic information why a bundle is not Active")
+@Service
public class Diag extends BundlesCommand {
public Diag() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java
index eb5d27c..e2e4759 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java
@@ -18,6 +18,7 @@ package org.apache.karaf.bundle.command;
import org.apache.karaf.bundle.core.BundleService;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
/**
@@ -25,6 +26,7 @@ import org.osgi.framework.Bundle;
* wired imports.
*/
@Command(scope = "bundle", name = "dynamic-import", description = "Enables/disables dynamic-import for a given bundle.")
+@Service
public class DynamicImport extends BundleCommand {
public DynamicImport() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/FindClass.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/FindClass.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/FindClass.java
index 82047e8..afafd54 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/FindClass.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/FindClass.java
@@ -20,6 +20,7 @@ package org.apache.karaf.bundle.command;
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.shell.util.ShellUtil;
import org.osgi.framework.wiring.BundleWiring;
import org.osgi.framework.Bundle;
@@ -28,6 +29,7 @@ import java.util.Collection;
import java.util.List;
@Command(scope = "bundle", name = "find-class", description = "Locates a specified class in any deployed bundle")
+@Service
public class FindClass extends OsgiCommandSupport {
@Argument(index = 0, name = "className", description = "Class name or partial class name to be found", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Headers.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Headers.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Headers.java
index 6b1b90c..a173a90 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Headers.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Headers.java
@@ -35,6 +35,7 @@ import org.apache.felix.utils.version.VersionRange;
import org.apache.felix.utils.version.VersionTable;
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.shell.util.ShellUtil;
import org.fusesource.jansi.Ansi;
import org.osgi.framework.Bundle;
@@ -44,6 +45,7 @@ import org.osgi.framework.wiring.BundleRevision;
import org.osgi.framework.wiring.BundleWiring;
@Command(scope = "bundle", name = "headers", description = "Displays OSGi headers of a given bundles.")
+@Service
public class Headers extends BundlesCommand {
protected final static String BUNDLE_PREFIX = "Bundle-";
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Info.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Info.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Info.java
index 8d7c109..904c9d6 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Info.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Info.java
@@ -26,10 +26,12 @@ import org.apache.karaf.bundle.command.wikidoc.AnsiPrintingWikiVisitor;
import org.apache.karaf.bundle.command.wikidoc.WikiParser;
import org.apache.karaf.bundle.command.wikidoc.WikiVisitor;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.util.ShellUtil;
import org.osgi.framework.Bundle;
@Command(scope = "bundle", name = "info", description = "Displays detailed information of a given bundles.")
+@Service
public class Info extends BundlesCommand {
public Info() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Install.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Install.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Install.java
index 06aeb08..15604cc 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Install.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Install.java
@@ -24,9 +24,11 @@ import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.MultiException;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
@Command(scope = "bundle", name = "install", description = "Installs one or more bundles.")
+@Service
public class Install extends OsgiCommandSupport {
@Argument(index = 0, name = "urls", description = "Bundle URLs separated by whitespaces", required = true, multiValued = true)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java
index f9c234f..b813c52 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java
@@ -22,12 +22,14 @@ import org.apache.felix.service.command.Function;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.util.ShellUtil;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
@Command(scope = "bundle", name = "services", description = "Lists OSGi services per Bundle")
+@Service
public class ListBundleServices extends BundlesCommand {
@Option(name = "-a", aliases = {}, description = "Shows all services. (By default Karaf commands are hidden)", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
index db3ffa6..1cc87ef 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
@@ -22,11 +22,14 @@ import org.apache.karaf.bundle.core.BundleState;
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.ShellTable;
import org.osgi.framework.Bundle;
import org.osgi.framework.startlevel.FrameworkStartLevel;
@Command(scope = "bundle", name = "list", description = "Lists all installed bundles.")
+@Service
public class ListBundles extends OsgiCommandSupport {
@Option(name = "-l", aliases = {}, description = "Show the locations", required = false, multiValued = false)
@@ -44,6 +47,7 @@ public class ListBundles extends OsgiCommandSupport {
@Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
boolean noFormat;
+ @Reference
private BundleService bundleService;
public void setBundleService(BundleService bundleService) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/LoadTest.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/LoadTest.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/LoadTest.java
index fe36d52..6c8d6c3 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/LoadTest.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/LoadTest.java
@@ -29,6 +29,7 @@ import org.apache.felix.service.command.CommandSession;
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.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkEvent;
@@ -36,6 +37,7 @@ import org.osgi.framework.FrameworkListener;
import org.osgi.framework.wiring.FrameworkWiring;
@Command(scope = "bundle", name = "load-test", description = "Load test bundle lifecycle")
+@Service
public class LoadTest extends OsgiCommandSupport {
@Option(name = "--threads", description = "number of concurrent threads")
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Refresh.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Refresh.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Refresh.java
index 4e00b14..bfd0c2d 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Refresh.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Refresh.java
@@ -19,10 +19,12 @@ package org.apache.karaf.bundle.command;
import java.util.List;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
import org.osgi.framework.wiring.FrameworkWiring;
@Command(scope = "bundle", name = "refresh", description = "Refresh bundles.")
+@Service
public class Refresh extends BundlesCommandWithConfirmation {
public Refresh() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Requirements.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Requirements.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Requirements.java
index cd7ed88..3fdc004 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Requirements.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Requirements.java
@@ -24,6 +24,7 @@ import java.util.regex.Pattern;
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.shell.util.ShellUtil;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
@@ -34,6 +35,7 @@ import org.osgi.framework.wiring.BundleWire;
import org.osgi.framework.wiring.BundleWiring;
@Command(scope = "bundle", name = "requirements", description = "Displays OSGi requirements of a given bundles.")
+@Service
public class Requirements extends BundlesCommand {
public static final String NONSTANDARD_SERVICE_NAMESPACE = "service";
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Resolve.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Resolve.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Resolve.java
index afa8998..d72cfce 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Resolve.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Resolve.java
@@ -19,10 +19,12 @@ package org.apache.karaf.bundle.command;
import java.util.List;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
import org.osgi.framework.wiring.FrameworkWiring;
@Command(scope = "bundle", name = "resolve", description = "Resolve bundles.")
+@Service
public class Resolve extends BundlesCommand {
public Resolve() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Restart.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Restart.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Restart.java
index e71d901..16d9b02 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Restart.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Restart.java
@@ -21,9 +21,11 @@ import java.util.List;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.console.MultiException;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
@Command(scope = "bundle", name = "restart", description = "Restarts bundles.")
+@Service
public class Restart extends BundlesCommandWithConfirmation {
public Restart() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ShowBundleTree.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ShowBundleTree.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ShowBundleTree.java
index eb5795d..1e44a4d 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ShowBundleTree.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ShowBundleTree.java
@@ -32,6 +32,7 @@ import org.apache.felix.utils.version.VersionTable;
import org.apache.karaf.bundle.command.bundletree.Node;
import org.apache.karaf.bundle.command.bundletree.Tree;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
import org.osgi.framework.wiring.BundleCapability;
@@ -47,6 +48,7 @@ import org.slf4j.LoggerFactory;
* a given bundle.
*/
@Command(scope = "bundle", name = "tree-show", description = "Shows the tree of bundles based on the wiring information.")
+@Service
public class ShowBundleTree extends BundleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(ShowBundleTree.class);
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Start.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Start.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Start.java
index e6bab9e..c3f1882 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Start.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Start.java
@@ -17,9 +17,11 @@
package org.apache.karaf.bundle.command;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
@Command(scope = "bundle", name = "start", description = "Starts bundles.")
+@Service
public class Start extends BundlesCommandWithConfirmation {
@Override
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java
index 4097f98..117f21a 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java
@@ -19,10 +19,12 @@ package org.apache.karaf.bundle.command;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import jline.console.ConsoleReader;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
import org.osgi.framework.startlevel.BundleStartLevel;
@Command(scope = "bundle", name = "start-level", description = "Gets or sets the start level of a bundle.")
+@Service
public class StartLevel extends BundleCommandWithConfirmation {
@Argument(index = 1, name = "startLevel", description = "The bundle's new start level", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Stop.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Stop.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Stop.java
index 6fed683..c5408bc 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Stop.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Stop.java
@@ -18,9 +18,11 @@ package org.apache.karaf.bundle.command;
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.Bundle;
@Command(scope = "bundle", name = "stop", description = "Stop bundles.")
+@Service
public class Stop extends BundlesCommandWithConfirmation {
@Option(name = "-t", aliases={"--transient"}, description="Keep the bundle as auto-start", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Uninstall.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Uninstall.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Uninstall.java
index 1578e59..04f15f2 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Uninstall.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Uninstall.java
@@ -17,9 +17,11 @@
package org.apache.karaf.bundle.command;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
@Command(scope = "bundle", name = "uninstall", description = "Uninstall bundles.")
+@Service
public class Uninstall extends BundlesCommandWithConfirmation {
public Uninstall() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Update.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Update.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Update.java
index f882388..b19bed7 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Update.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Update.java
@@ -21,9 +21,11 @@ import java.net.URL;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
@Command(scope = "bundle", name = "update", description = "Update bundle.")
+@Service
public class Update extends BundleCommandWithConfirmation {
@Argument(index = 1, name = "location", description = "The bundles update location", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Watch.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Watch.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Watch.java
index 20ca504..715455b 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/Watch.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/Watch.java
@@ -23,11 +23,15 @@ 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.AbstractAction;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
@Command(scope = "bundle", name = "watch", description = "Watches and updates bundles", detailedDescription = "Watches the local maven repo for changes in snapshot jars and redploys changed jars")
-public class Watch extends AbstractAction {
+@Service
+public class Watch extends OsgiCommandSupport {
@Argument(index = 0, name = "urls", description = "The bundle IDs or URLs", required = false, multiValued = true)
List<String> urls;
@@ -47,6 +51,7 @@ public class Watch extends AbstractAction {
@Option(name = "--list", description = "Displays the watch list", required = false, multiValued = false)
protected boolean list;
+ @Reference
private BundleWatcher bundleWatcher;
public void setBundleWatcher(BundleWatcher bundleWatcher) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/bundle/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml b/bundle/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml
index bed5c0f..327becd 100644
--- a/bundle/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml
+++ b/bundle/command/src/main/resources/OSGI-INF/blueprint/shell-bundles.xml
@@ -19,119 +19,7 @@
-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
- <reference id="bundleService" interface="org.apache.karaf.bundle.core.BundleService" />
- <reference id="bundleWatcher" interface="org.apache.karaf.bundle.core.BundleWatcher"/>
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.bundle.command.*" />
- <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
- <command>
- <action class="org.apache.karaf.bundle.command.StartLevel">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Classes">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.FindClass">
- <property name="bundleContext" ref="blueprintBundleContext" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Headers">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Info">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Diag">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Install">
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.ListBundles">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.ListBundleServices">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Refresh">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Update">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Resolve">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Restart">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Start">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Stop">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Uninstall">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Capabilities">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Requirements">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.ShowBundleTree">
- <property name="bundleService" ref="bundleService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.DynamicImport">
- <property name="bundleService" ref="bundleService"/>
- <property name="bundleContext" ref="blueprintBundleContext" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.Watch" >
- <property name="bundleWatcher" ref="bundleWatcher"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.bundle.command.LoadTest" >
- </action>
- </command>
- </command-bundle>
-
</blueprint>
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java
index a62a39e..d3274dd 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java
@@ -17,8 +17,10 @@
package org.apache.karaf.config.command;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "config", name = "cancel", description = "Cancels the changes to the configuration being edited.")
+@Service
public class CancelCommand extends ConfigCommandSupport {
protected Object doExecute() throws Exception {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java b/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java
index bfd0c12..9111b53 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java
@@ -19,6 +19,7 @@ package org.apache.karaf.config.command;
import java.util.Dictionary;
import org.apache.karaf.config.core.ConfigRepository;
+import org.apache.karaf.shell.inject.Reference;
import org.apache.karaf.shell.console.OsgiCommandSupport;
/**
@@ -28,9 +29,12 @@ import org.apache.karaf.shell.console.OsgiCommandSupport;
* calling another method to actually process the command.
*/
public abstract class ConfigCommandSupport extends OsgiCommandSupport {
+
public static final String PROPERTY_CONFIG_PID = "ConfigCommand.PID";
public static final String PROPERTY_CONFIG_PROPS = "ConfigCommand.Props";
public static final String PROPERTY_FACTORY = "ConfigCommand.Factory";
+
+ @Reference
protected ConfigRepository configRepository;
@SuppressWarnings("rawtypes")
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
index 7e8b3d2..506ce48 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
@@ -21,8 +21,10 @@ import org.apache.karaf.shell.commands.Argument;
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.inject.Service;
@Command(scope = "config", name = "delete", description = "Delete a configuration.")
+@Service
public class DeleteCommand extends ConfigCommandSupport {
@Argument(index = 0, name = "pid", description = "PID of the configuration", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
index 3f494c7..aeaede3 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
@@ -23,9 +23,11 @@ import org.apache.karaf.shell.commands.Argument;
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.inject.Service;
import org.osgi.service.cm.Configuration;
@Command(scope = "config", name = "edit", description = "Creates or edits a configuration.", detailedDescription="classpath:edit.txt")
+@Service
public class EditCommand extends ConfigCommandSupport {
@Argument(index = 0, name = "pid", description = "PID of the configuration or of the factory if --factory is given. Pid can also be specified as ldap query", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java
index c6c7d57..8589e72 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java
@@ -21,9 +21,11 @@ import java.util.Enumeration;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.osgi.service.cm.Configuration;
@Command(scope = "config", name = "list", description = "Lists existing configurations.")
+@Service
public class ListCommand extends ConfigCommandSupport {
@Argument(index = 0, name = "query", description = "Query in LDAP syntax. Example: \"(service.pid=org.apache.karaf.log)\"", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
index 9c04638..6d13e13 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
@@ -22,8 +22,10 @@ import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "config", name = "property-append", description = "Appends the given value to an existing property or creates the property with the specified name and value.")
+@Service
public class PropAppendCommand extends ConfigPropertyCommandSupport {
@Argument(index = 0, name = "name", description = "The name of the property", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java
index 3ad82a5..3280454 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java
@@ -20,8 +20,10 @@ import java.util.Dictionary;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "config", name = "property-delete", description = "Deletes a property from the configuration being edited.")
+@Service
public class PropDelCommand extends ConfigPropertyCommandSupport {
@Argument(index = 0, name = "property", description = "The name of the property to delete", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java
index ec0b654..d0b208b 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java
@@ -19,8 +19,10 @@ package org.apache.karaf.config.command;
import java.util.Dictionary;
import java.util.Enumeration;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "config", name = "property-list", description = "Lists properties from the currently edited configuration.")
+@Service
public class PropListCommand extends ConfigPropertyCommandSupport {
@SuppressWarnings("rawtypes")
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
index 30135d8..16e58b9 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
@@ -22,8 +22,10 @@ import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "config", name = "property-set", description = "Sets a property in the currently edited configuration.")
+@Service
public class PropSetCommand extends ConfigPropertyCommandSupport {
@Argument(index = 0, name = "property", description = "The name of the property to set", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java
index 2c5a547..ae48722 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java
@@ -19,8 +19,10 @@ package org.apache.karaf.config.command;
import java.util.Dictionary;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "config", name = "update", description = "Saves and propagates changes from the configuration being edited.")
+@Service
public class UpdateCommand extends ConfigCommandSupport {
@SuppressWarnings({ "rawtypes", "unchecked" })
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
index 7fcbef5..3122ca2 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
@@ -23,6 +23,9 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import org.apache.karaf.shell.inject.Init;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.console.completer.StringsCompleter;
import org.apache.karaf.shell.console.Completer;
import org.osgi.service.cm.Configuration;
@@ -31,21 +34,24 @@ import org.osgi.service.cm.ConfigurationEvent;
import org.osgi.service.cm.ConfigurationListener;
/**
- * {@link jline.Completor} for Configuration Admin configurations.
+ * {@link Completer} for Configuration Admin configurations.
*
* Displays a list of existing config instance configurations for completion.
*
*/
+@Service
public class ConfigurationCompleter implements Completer, ConfigurationListener {
private final StringsCompleter delegate = new StringsCompleter();
+ @Reference
private ConfigurationAdmin admin;
public void setAdmin(ConfigurationAdmin admin) {
this.admin = admin;
}
+ @Init
public void init() {
Configuration[] configs;
try {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
index d182e02..2d98098 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
@@ -29,6 +29,8 @@ import java.util.Set;
import org.apache.felix.service.command.CommandSession;
import org.apache.karaf.config.command.ConfigCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.console.CommandSessionHolder;
import org.apache.karaf.shell.console.Completer;
import org.apache.karaf.shell.console.completer.ArgumentCompleter;
@@ -38,11 +40,12 @@ import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
/**
- * {@link jline.Completor} for Configuration Admin properties.
+ * {@link Completer} for Configuration Admin properties.
*
* Displays a list of existing properties based on the current configuration being edited.
*
*/
+@Service
public class ConfigurationPropertyCompleter implements Completer {
private final StringsCompleter delegate = new StringsCompleter();
@@ -50,6 +53,7 @@ public class ConfigurationPropertyCompleter implements Completer {
private static final String OPTION = "-p";
private static final String ALIAS = "--pid";
+ @Reference
private ConfigurationAdmin configAdmin;
@SuppressWarnings("rawtypes")
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
----------------------------------------------------------------------
diff --git a/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index def3594..4e91d25 100644
--- a/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -22,65 +22,7 @@
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
default-activation="lazy">
- <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
- <command>
- <action class="org.apache.karaf.config.command.CancelCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.config.command.DeleteCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.config.command.EditCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.config.command.ListCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.config.command.PropDelCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.config.command.PropListCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.config.command.PropSetCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.config.command.PropAppendCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.config.command.UpdateCommand">
- <property name="configRepository" ref="configRepo"/>
- </action>
- </command>
- </command-bundle>
-
- <bean id="configCompleter" class="org.apache.karaf.config.command.completers.ConfigurationCompleter" init-method="init">
- <property name="admin" ref="configAdmin"/>
- </bean>
- <service ref="configCompleter" auto-export="all-classes" />
-
- <bean id="configPropertyCompleter" class="org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter">
- <property name="configAdmin" ref="configAdmin"/>
- </bean>
- <service ref="configPropertyCompleter" auto-export="all-classes" />
-
- <reference id="configRepo" interface="org.apache.karaf.config.core.ConfigRepository" />
- <reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" />
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.config.command.*" />
</blueprint>
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
----------------------------------------------------------------------
diff --git a/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java b/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
index 0579aff..6fe7313 100644
--- a/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
+++ b/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
@@ -23,21 +23,21 @@ import org.apache.karaf.http.core.ServletService;
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;
@Command(scope = "http", name = "list", description = "Lists details for servlets.")
+@Service
public class ServletListCommand extends OsgiCommandSupport {
@Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
boolean noFormat;
+ @Reference
private ServletService servletService;
- public ServletListCommand(ServletService servletService) {
- this.servletService = servletService;
- }
-
@Override
protected Object doExecute() throws Exception {
ShellTable table = new ShellTable();
@@ -56,4 +56,7 @@ public class ServletListCommand extends OsgiCommandSupport {
return null;
}
+ public void setServletService(ServletService servletService) {
+ this.servletService = servletService;
+ }
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 7127f3c..4c9f164 100644
--- a/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -19,14 +19,7 @@
-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
- <reference id="servletService" interface="org.apache.karaf.http.core.ServletService" />
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.http.command.*" />
- <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
- <command>
- <action class="org.apache.karaf.http.command.ServletListCommand">
- <argument ref="servletService" />
- </action>
- </command>
- </command-bundle>
-
</blueprint>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java
index 3db7cec..e2faee1 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.instance.command.completers.InstanceCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "instance", name = "opts-change", description = "Changes the Java options of an existing container instance.")
+@Service
public class ChangeOptsCommand extends InstanceCommandSupport {
@Argument(index = 0, name = "name", description="The name of the container instance", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java
index d889fa2..148bc93 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.instance.command.completers.InstanceCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "instance", name = "rmi-registry-port-change", description = "Changes the RMI registry port (used by management layer) of an existing container instance.")
+@Service
public class ChangeRmiRegistryPortCommand extends InstanceCommandSupport {
@Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java
index 1bef267..3b6fdc4 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.instance.command.completers.InstanceCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "instance", name = "rmi-server-port-change", description = "Changes the RMI server port (used by management layer) of an existing instance.")
+@Service
public class ChangeRmiServerPortCommand extends InstanceCommandSupport {
@Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java
index 9977971..01df8ae 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.instance.command.completers.InstanceCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "instance", name = "ssh-port-change", description = "Changes the secure shell port of an existing container instance.")
+@Service
public class ChangeSshPortCommand extends InstanceCommandSupport {
@Argument(index = 0, name = "name", description="The name of the container instance", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java
index 5e6b2b4..e5626e0 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java
@@ -22,11 +22,13 @@ 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.instance.core.InstanceSettings;
+import org.apache.karaf.shell.inject.Service;
/**
* Clone an existing instance.
*/
@Command(scope = "instance", name = "clone", description = "Clones an existing container instance.")
+@Service
public class CloneCommand extends InstanceCommandSupport {
@Option(name = "-s", aliases = {"--ssh-port"}, description = "Port number for remote secure shell connection", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java
index 6c909e9..294c348 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java
@@ -25,8 +25,10 @@ import org.apache.karaf.shell.commands.Completer;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "instance", name = "connect", description = "Connects to an existing container instance.")
+@Service
public class ConnectCommand extends InstanceCommandSupport {
@Option(name="-u", aliases={"--username"}, description="Remote user name", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
index a3c8595..af3aebd 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
@@ -25,11 +25,13 @@ 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.instance.core.InstanceSettings;
+import org.apache.karaf.shell.inject.Service;
/**
* Creates a new instance.
*/
@Command(scope = "instance", name = "create", description = "Creates a new container instance.")
+@Service
public class CreateCommand extends InstanceCommandSupport
{
@Option(name = "-s", aliases = {"--ssh-port"}, description = "Port number for remote secure shell connection", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java
index 3e41be0..dbb1659 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java
@@ -20,11 +20,13 @@ import org.apache.karaf.instance.command.completers.InstanceCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
/**
* Destroy an existing instance.
*/
@Command(scope = "instance", name = "destroy", description = "Destroys an existing container instance.")
+@Service
public class DestroyCommand extends InstanceCommandSupport
{
@Argument(index = 0, name = "name", description= "The name of the container instance to destroy", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/InstanceCommandSupport.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/InstanceCommandSupport.java b/instance/command/src/main/java/org/apache/karaf/instance/command/InstanceCommandSupport.java
index 6c1d3fb..b320b3c 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/InstanceCommandSupport.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/InstanceCommandSupport.java
@@ -19,9 +19,11 @@ package org.apache.karaf.instance.command;
import org.apache.karaf.instance.core.Instance;
import org.apache.karaf.instance.core.InstanceService;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
public abstract class InstanceCommandSupport extends OsgiCommandSupport {
+ @Reference
private InstanceService instanceService;
public InstanceService getInstanceService() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
index fe33ab5..b15f8b1 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
@@ -19,9 +19,11 @@ package org.apache.karaf.instance.command;
import org.apache.karaf.instance.core.Instance;
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.shell.table.ShellTable;
@Command(scope = "instance", name = "list", description = "Lists all existing container instances.")
+@Service
public class ListCommand extends InstanceCommandSupport {
@Option(name = "-l", aliases = { "--location" }, description = "Displays the location of the container instances", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java
index 5b57774..872d954 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java
@@ -21,8 +21,10 @@ import org.apache.karaf.shell.commands.Argument;
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.inject.Service;
@Command(scope = "instance", name = "rename", description = "Rename an existing container instance.")
+@Service
public class RenameCommand extends InstanceCommandSupport {
@Option(name = "-v", aliases = {"--verbose"}, description = "Display actions performed by the command (disabled by default)", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java
index 1f3c13b..9b6e464 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java
@@ -22,8 +22,10 @@ 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.instance.core.Instance;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "instance", name = "start", description = "Start an existing container instance.")
+@Service
public class StartCommand extends InstanceCommandSupport {
@Option(name = "-d", aliases = { "--debug"}, description = "Start the instance in debug mode", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java
index fce8d5f..760dffb 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java
@@ -22,8 +22,10 @@ import org.apache.karaf.shell.commands.Argument;
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.inject.Service;
@Command(scope = "instance", name = "status", description = "Check the current status of an instance.")
+@Service
public class StatusCommand extends InstanceCommandSupport {
@Argument(index = 0, name = "name", description = "The name of the instance", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java
index ad4cce5..4d540b2 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.instance.command.completers.InstanceCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "instance", name = "stop", description = "Stop an existing container instance.")
+@Service
public class StopCommand extends InstanceCommandSupport {
@Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/java/org/apache/karaf/instance/command/completers/InstanceCompleter.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/completers/InstanceCompleter.java b/instance/command/src/main/java/org/apache/karaf/instance/command/completers/InstanceCompleter.java
index 1170ebf..5d8cc71 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/completers/InstanceCompleter.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/completers/InstanceCompleter.java
@@ -22,13 +22,17 @@ import org.apache.karaf.instance.core.Instance;
import org.apache.karaf.instance.core.InstanceService;
import org.apache.karaf.shell.console.completer.StringsCompleter;
import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
/**
* Displays a list of configured server instances for the instance commands.
*
*/
+@Service
public class InstanceCompleter implements Completer {
+ @Reference
private InstanceService instanceService;
public void setInstanceService(InstanceService instanceService) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml
----------------------------------------------------------------------
diff --git a/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml b/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml
index 1db1a0e..4bb3520 100644
--- a/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml
+++ b/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml
@@ -20,83 +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.instance.command.CreateCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.ConnectCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.ListCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.StartCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.StopCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.DestroyCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.RenameCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.CloneCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.ChangeSshPortCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.ChangeRmiRegistryPortCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.ChangeRmiServerPortCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.ChangeOptsCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.instance.command.StatusCommand">
- <property name="instanceService" ref="instanceService" />
- </action>
- </command>
- </command-bundle>
-
- <!-- Services -->
-
- <reference id="instanceService" interface="org.apache.karaf.instance.core.InstanceService" />
-
- <!-- Completers -->
-
- <bean id="instanceCompleter" class="org.apache.karaf.instance.command.completers.InstanceCompleter">
- <property name="instanceService" ref="instanceService" />
- </bean>
- <service ref="instanceCompleter" auto-export="all-classes"/>
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.instance.command.*" />
</blueprint>
[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
Posted by gn...@apache.org.
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
[6/6] git commit: [KARAF-2763] Provide a standalone extender to
support the new annotations
Posted by gn...@apache.org.
[KARAF-2763] Provide a standalone extender to support the new annotations
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/2bd28679
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/2bd28679
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/2bd28679
Branch: refs/heads/master
Commit: 2bd28679e01f3800a2d686fcc214c850f0a3c2c5
Parents: e4f7bc4
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Tue Feb 18 09:24:43 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Tue Feb 18 09:24:43 2014 +0100
----------------------------------------------------------------------
shell/console/pom.xml | 9 +
.../shell/inject/impl/InjectionExtender.java | 100 ++++++
.../shell/inject/impl/InjectionExtension.java | 350 +++++++++++++++++++
.../shell/inject/impl/MultiServiceTracker.java | 89 +++++
.../karaf/shell/inject/impl/Satisfiable.java | 30 ++
.../shell/inject/impl/SingleServiceTracker.java | 160 +++++++++
.../OSGI-INF/blueprint/karaf-console.xml | 7 +
7 files changed, 745 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/2bd28679/shell/console/pom.xml
----------------------------------------------------------------------
diff --git a/shell/console/pom.xml b/shell/console/pom.xml
index 9a04677..0e39177 100644
--- a/shell/console/pom.xml
+++ b/shell/console/pom.xml
@@ -82,6 +82,11 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.utils</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
</dependency>
@@ -129,6 +134,7 @@
<instructions>
<Import-Package>
!org.apache.felix.gogo.runtime.*,
+ !org.apache.karaf.shell.inject.impl,
org.osgi.service.event;resolution:=optional,
org.apache.karaf.branding;resolution:=optional,
org.apache.sshd.agent*;resolution:=optional,
@@ -159,6 +165,9 @@
<Private-Package>
org.apache.karaf.shell.console.impl*,
org.apache.karaf.shell.security.impl*,
+ org.apache.karaf.shell.inject.impl*,
+ org.apache.felix.utils.extender,
+ org.apache.felix.utils.manifest
</Private-Package>
<Main-Class>
org.apache.karaf.shell.console.impl.Main
http://git-wip-us.apache.org/repos/asf/karaf/blob/2bd28679/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/InjectionExtender.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/InjectionExtender.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/InjectionExtender.java
new file mode 100644
index 0000000..6177390
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/InjectionExtender.java
@@ -0,0 +1,100 @@
+/*
+ * 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.shell.inject.impl;
+
+import org.apache.felix.utils.extender.AbstractExtender;
+import org.apache.felix.utils.extender.Extension;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Bundle extender scanning for command classes.
+ */
+public class InjectionExtender extends AbstractExtender {
+
+ public static final String KARAF_COMMANDS = "Karaf-Injection";
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(InjectionExtender.class);
+
+ //
+ // Adapt BundleActivator to make it blueprint friendly
+ //
+
+ private BundleContext bundleContext;
+
+ public void setBundleContext(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ public void init() throws Exception {
+ start(bundleContext);
+ }
+
+ public void destroy() throws Exception {
+ stop(bundleContext);
+ }
+
+ //
+ // Extender implementation
+ //
+
+ @Override
+ protected Extension doCreateExtension(Bundle bundle) throws Exception {
+ if (bundle.getHeaders().get(KARAF_COMMANDS) != null) {
+ return new InjectionExtension(bundle);
+ }
+ return null;
+ }
+
+ @Override
+ protected void debug(Bundle bundle, String msg) {
+ StringBuilder buf = new StringBuilder();
+ if ( bundle != null )
+ {
+ buf.append( bundle.getSymbolicName() );
+ buf.append( " (" );
+ buf.append( bundle.getBundleId() );
+ buf.append( "): " );
+ }
+ buf.append(msg);
+ LOGGER.debug(buf.toString());
+ }
+
+ @Override
+ protected void warn(Bundle bundle, String msg, Throwable t) {
+ StringBuilder buf = new StringBuilder();
+ if ( bundle != null )
+ {
+ buf.append( bundle.getSymbolicName() );
+ buf.append( " (" );
+ buf.append( bundle.getBundleId() );
+ buf.append( "): " );
+ }
+ buf.append(msg);
+ LOGGER.warn(buf.toString(), t);
+ }
+
+ @Override
+ protected void error(String msg, Throwable t) {
+ LOGGER.error(msg, t);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/2bd28679/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/InjectionExtension.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/InjectionExtension.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/InjectionExtension.java
new file mode 100644
index 0000000..fd807a3
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/InjectionExtension.java
@@ -0,0 +1,350 @@
+/*
+ * 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.shell.inject.impl;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.felix.gogo.commands.Action;
+import org.apache.felix.service.command.CommandProcessor;
+import org.apache.felix.service.command.Function;
+import org.apache.felix.utils.extender.Extension;
+import org.apache.felix.utils.manifest.Clause;
+import org.apache.felix.utils.manifest.Parser;
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.CommandWithAction;
+import org.apache.karaf.shell.inject.Destroy;
+import org.apache.karaf.shell.inject.Init;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.commands.basic.AbstractCommand;
+import org.apache.karaf.shell.console.BundleContextAware;
+import org.apache.karaf.shell.console.CompletableFunction;
+import org.apache.karaf.shell.console.Completer;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.framework.wiring.BundleWiring;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Commands extension
+ */
+public class InjectionExtension implements Extension, Satisfiable {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(InjectionExtension.class);
+
+ private final Bundle bundle;
+ private final CountDownLatch started;
+ private final MultiServiceTracker tracker;
+ private final List<Satisfiable> satisfiables = new ArrayList<Satisfiable>();
+
+
+ public InjectionExtension(Bundle bundle) {
+ this.bundle = bundle;
+ this.started = new CountDownLatch(1);
+ this.tracker = new MultiServiceTracker(bundle.getBundleContext(), this);
+ }
+
+ @Override
+ public void found() {
+ for (Satisfiable s : satisfiables) {
+ s.found();
+ }
+ }
+
+ @Override
+ public void updated() {
+ for (Satisfiable s : satisfiables) {
+ s.updated();
+ }
+ }
+
+ @Override
+ public void lost() {
+ for (Satisfiable s : satisfiables) {
+ s.lost();
+ }
+ }
+
+ public void start() throws Exception {
+ try {
+ String header = bundle.getHeaders().get(InjectionExtender.KARAF_COMMANDS);
+ Clause[] clauses = Parser.parseHeader(header);
+ BundleWiring wiring = bundle.adapt(BundleWiring.class);
+ for (Clause clause : clauses) {
+ String name = clause.getName();
+ int options = BundleWiring.LISTRESOURCES_LOCAL;
+ name = name.replace('.', '/');
+ if (name.endsWith("*")) {
+ options |= BundleWiring.LISTRESOURCES_RECURSE;
+ name = name.substring(0, name.length() - 1);
+ }
+ if (!name.startsWith("/")) {
+ name = "/" + name;
+ }
+ if (name.endsWith("/")) {
+ name = name.substring(0, name.length() - 1);
+ }
+ Collection<String> classes = wiring.listResources(name, "*.class", options);
+ for (String className : classes) {
+ className = className.replace('/', '.').replace(".class", "");
+ inspectClass(bundle.loadClass(className));
+ }
+ }
+ tracker.open();
+ } finally {
+ started.countDown();
+ }
+ }
+
+ public void destroy() {
+ try {
+ started.await(5000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ LOGGER.warn("The wait for bundle being started before destruction has been interrupted.", e);
+ }
+ tracker.close();
+ }
+
+ private void inspectClass(final Class<?> clazz) throws Exception {
+ Service reg = clazz.getAnnotation(Service.class);
+ if (reg == null) {
+ return;
+ }
+ if (Action.class.isAssignableFrom(clazz)) {
+ final Command cmd = clazz.getAnnotation(Command.class);
+ if (cmd == null) {
+ throw new IllegalArgumentException("Command " + clazz.getName() + " is not annotated with @Command");
+ }
+ // Create trackers
+ for (Class<?> cl = clazz; cl != Object.class; cl = cl.getSuperclass()) {
+ for (Field field : cl.getDeclaredFields()) {
+ if (field.getAnnotation(Reference.class) != null) {
+ if (field.getType() != BundleContext.class) {
+ tracker.track(field.getType());
+ }
+ }
+ }
+ }
+ satisfiables.add(new AutoRegisterCommand((Class<? extends Action>) clazz));
+ }
+ if (Completer.class.isAssignableFrom(clazz)) {
+ // Create trackers
+ for (Class<?> cl = clazz; cl != Object.class; cl = cl.getSuperclass()) {
+ for (Field field : cl.getDeclaredFields()) {
+ if (field.getAnnotation(Reference.class) != null) {
+ if (field.getType() != BundleContext.class) {
+ tracker.track(field.getType());
+ }
+ }
+ }
+ }
+ satisfiables.add(new AutoRegisterService(clazz));
+ }
+ }
+
+ public class AutoRegisterService implements Satisfiable {
+
+ private final Class<?> clazz;
+ private Object service;
+ private ServiceRegistration registration;
+
+ public AutoRegisterService(Class<?> clazz) {
+ this.clazz = clazz;
+ }
+
+ @Override
+ public void found() {
+ try {
+ // Create completer
+ service = clazz.newInstance();
+ Set<String> classes = new HashSet<String>();
+ // Inject services
+ for (Class<?> cl = clazz; cl != Object.class; cl = cl.getSuperclass()) {
+ classes.add(cl.getName());
+ for (Class c : cl.getInterfaces()) {
+ classes.add(c.getName());
+ }
+ for (Field field : cl.getDeclaredFields()) {
+ if (field.getAnnotation(Reference.class) != null) {
+ Object value;
+ if (field.getType() == BundleContext.class) {
+ value = InjectionExtension.this.bundle.getBundleContext();
+ } else {
+ value = InjectionExtension.this.tracker.getService(field.getType());
+ }
+ if (value == null) {
+ throw new RuntimeException("No OSGi service matching " + field.getType().getName());
+ }
+ field.setAccessible(true);
+ field.set(service, value);
+ }
+ }
+ }
+ for (Method method : clazz.getDeclaredMethods()) {
+ Init ann = method.getAnnotation(Init.class);
+ if (ann != null && method.getParameterTypes().length == 0 && method.getReturnType() == void.class) {
+ method.setAccessible(true);
+ method.invoke(service);
+ }
+ }
+ Hashtable<String, String> props = new Hashtable<String, String>();
+ registration = bundle.getBundleContext().registerService(classes.toArray(new String[classes.size()]), service, props);
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to creation service " + clazz.getName(), e);
+ }
+ }
+
+ @Override
+ public void updated() {
+ lost();
+ found();
+ }
+
+ @Override
+ public void lost() {
+ if (registration != null) {
+ for (Method method : clazz.getDeclaredMethods()) {
+ Destroy ann = method.getAnnotation(Destroy.class);
+ if (ann != null && method.getParameterTypes().length == 0 && method.getReturnType() == void.class) {
+ method.setAccessible(true);
+ try {
+ method.invoke(service);
+ } catch (Exception e) {
+ LOGGER.warn("Error destroying service", e);
+ }
+ }
+ }
+ registration.unregister();
+ registration = null;
+ }
+ }
+
+ }
+
+ public class AutoRegisterCommand extends AbstractCommand implements Satisfiable, CompletableFunction {
+
+ private final Class<? extends Action> actionClass;
+ private ServiceRegistration registration;
+
+ public AutoRegisterCommand(Class<? extends Action> actionClass) {
+ this.actionClass = actionClass;
+ }
+
+ @Override
+ public void found() {
+ // Register command
+ Command cmd = actionClass.getAnnotation(Command.class);
+ Hashtable<String, String> props = new Hashtable<String, String>();
+ props.put(CommandProcessor.COMMAND_SCOPE, cmd.scope());
+ props.put(CommandProcessor.COMMAND_FUNCTION, cmd.name());
+ String[] classes = {
+ Function.class.getName(),
+ CompletableFunction.class.getName(),
+ CommandWithAction.class.getName(),
+ AbstractCommand.class.getName()
+ };
+ registration = bundle.getBundleContext().registerService(classes, this, props);
+ }
+
+ @Override
+ public void updated() {
+
+ }
+
+ @Override
+ public void lost() {
+ if (registration != null) {
+ registration.unregister();
+ registration = null;
+ }
+ }
+
+ @Override
+ public Action createNewAction() {
+ try {
+ Action action = actionClass.newInstance();
+ // Inject services
+ for (Class<?> cl = actionClass; cl != Object.class; cl = cl.getSuperclass()) {
+ for (Field field : cl.getDeclaredFields()) {
+ if (field.getAnnotation(Reference.class) != null) {
+ Object value;
+ if (field.getType() == BundleContext.class) {
+ value = InjectionExtension.this.bundle.getBundleContext();
+ } else {
+ value = InjectionExtension.this.tracker.getService(field.getType());
+ }
+ if (value == null) {
+ throw new RuntimeException("No OSGi service matching " + field.getType().getName());
+ }
+ field.setAccessible(true);
+ field.set(action, value);
+ }
+ }
+ }
+ if (action instanceof BundleContextAware) {
+ ((BundleContextAware) action).setBundleContext(bundle.getBundleContext());
+ }
+ for (Method method : actionClass.getDeclaredMethods()) {
+ Init ann = method.getAnnotation(Init.class);
+ if (ann != null && method.getParameterTypes().length == 0 && method.getReturnType() == void.class) {
+ method.setAccessible(true);
+ method.invoke(action);
+ }
+ }
+ return action;
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to creation command action " + actionClass.getName(), e);
+ }
+ }
+
+ @Override
+ public void releaseAction(Action action) throws Exception {
+ for (Method method : actionClass.getDeclaredMethods()) {
+ Destroy ann = method.getAnnotation(Destroy.class);
+ if (ann != null && method.getParameterTypes().length == 0 && method.getReturnType() == void.class) {
+ method.setAccessible(true);
+ method.invoke(action);
+ }
+ }
+ super.releaseAction(action);
+ }
+
+ @Override
+ public List<Completer> getCompleters() {
+ return null;
+ }
+
+ @Override
+ public Map<String, Completer> getOptionalCompleters() {
+ return null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/2bd28679/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/MultiServiceTracker.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/MultiServiceTracker.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/MultiServiceTracker.java
new file mode 100644
index 0000000..5394dca
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/MultiServiceTracker.java
@@ -0,0 +1,89 @@
+/*
+ * 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.shell.inject.impl;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.osgi.framework.BundleContext;
+
+/**
+ * Track multiple services by their type
+ */
+public class MultiServiceTracker {
+
+ private final BundleContext bundleContext;
+ private final Satisfiable satisfiable;
+ private final ConcurrentMap<Class, SingleServiceTracker> trackers = new ConcurrentHashMap<Class, SingleServiceTracker>();
+ private final AtomicInteger count = new AtomicInteger();
+
+ public MultiServiceTracker(BundleContext bundleContext, Satisfiable satisfiable) {
+ this.bundleContext = bundleContext;
+ this.satisfiable = satisfiable;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void track(Class service) {
+ if (trackers.get(service) == null) {
+ SingleServiceTracker tracker = new SingleServiceTracker(bundleContext, service, new Satisfiable() {
+ @Override
+ public void found() {
+ if (count.incrementAndGet() == trackers.size()) {
+ satisfiable.found();
+ }
+ }
+
+ @Override
+ public void updated() {
+ if (count.get() == trackers.size()) {
+ satisfiable.updated();
+ }
+ }
+
+ @Override
+ public void lost() {
+ if (count.getAndDecrement() == trackers.size()) {
+ satisfiable.lost();
+ }
+ }
+
+ });
+ trackers.putIfAbsent(service, tracker);
+ }
+ }
+
+ public <T> T getService(Class<T> clazz) {
+ SingleServiceTracker tracker = trackers.get(clazz);
+ return tracker != null ? clazz.cast(tracker.getService()) : null;
+ }
+
+ public void open() {
+ for (SingleServiceTracker tracker : trackers.values()) {
+ tracker.open();
+ }
+ }
+
+ public void close() {
+ for (SingleServiceTracker tracker : trackers.values()) {
+ tracker.close();
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/2bd28679/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/Satisfiable.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/Satisfiable.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/Satisfiable.java
new file mode 100644
index 0000000..ed5ceb6
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/Satisfiable.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.shell.inject.impl;
+
+/**
+ * Interface to be called with a boolean satisfaction status.
+ */
+public interface Satisfiable {
+
+ void found();
+ void updated();
+ void lost();
+
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/2bd28679/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/SingleServiceTracker.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/SingleServiceTracker.java b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/SingleServiceTracker.java
new file mode 100644
index 0000000..9ecec4d
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/inject/impl/SingleServiceTracker.java
@@ -0,0 +1,160 @@
+/*
+ * 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.shell.inject.impl;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Track a single service by its type.
+ *
+ * @param <T>
+ */
+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 AtomicBoolean open = new AtomicBoolean(false);
+ private final Satisfiable serviceListener;
+ private 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, Satisfiable sl) {
+ ctx = context;
+ this.className = clazz.getName();
+ serviceListener = sl;
+ }
+
+ public T getService() {
+ return service.get();
+ }
+
+ public ServiceReference getServiceReference() {
+ return ref.get();
+ }
+
+ public void open() {
+ if (open.compareAndSet(false, true)) {
+ try {
+ String filterString = '(' + Constants.OBJECTCLASS + '=' + className + ')';
+ if (filter != null) filterString = "(&" + filterString + filter + ')';
+ ctx.addServiceListener(listener, filterString);
+ findMatchingReference(null);
+ } catch (InvalidSyntaxException e) {
+ // this can never happen. (famous last words :)
+ }
+ }
+ }
+
+ private void findMatchingReference(ServiceReference original) {
+ boolean clear = true;
+ ServiceReference ref = ctx.getServiceReference(className);
+ if (ref != null && (filter == null || filter.match(ref))) {
+ @SuppressWarnings("unchecked")
+ T service = (T) ctx.getService(ref);
+ if (service != null) {
+ clear = false;
+
+ // We do the unget out of the lock so we don't exit this class while holding a lock.
+ if (!!!update(original, ref, service)) {
+ ctx.ungetService(ref);
+ }
+ }
+ } else if (original == null) {
+ clear = false;
+ }
+
+ if (clear) {
+ update(original, null, null);
+ }
+ }
+
+ private boolean update(ServiceReference deadRef, ServiceReference newRef, T service) {
+ boolean result = false;
+ int foundLostReplaced = -1;
+
+ // Make sure we don't try to get a lock on null
+ Object lock;
+
+ // we have to choose our lock.
+ if (newRef != null) lock = newRef;
+ else if (deadRef != null) lock = deadRef;
+ else lock = this;
+
+ // This lock is here to ensure that no two threads can set the ref and service
+ // at the same time.
+ synchronized (lock) {
+ if (open.get()) {
+ result = this.ref.compareAndSet(deadRef, newRef);
+ if (result) {
+ this.service.set(service);
+
+ if (deadRef == null && newRef != null) foundLostReplaced = 0;
+ if (deadRef != null && newRef == null) foundLostReplaced = 1;
+ if (deadRef != null && newRef != null) foundLostReplaced = 2;
+ }
+ }
+ }
+
+ if (serviceListener != null) {
+ if (foundLostReplaced == 0) serviceListener.found();
+ else if (foundLostReplaced == 1) serviceListener.lost();
+ else if (foundLostReplaced == 2) serviceListener.updated();
+ }
+
+ return result;
+ }
+
+ public void close() {
+ if (open.compareAndSet(true, false)) {
+ ctx.removeServiceListener(listener);
+
+ synchronized (this) {
+ ServiceReference deadRef = ref.getAndSet(null);
+ service.set(null);
+ if (deadRef != null) ctx.ungetService(deadRef);
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/2bd28679/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml
----------------------------------------------------------------------
diff --git a/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml b/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml
index bbe0c5b..1abeb1e 100644
--- a/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml
+++ b/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml
@@ -82,4 +82,11 @@
</bean>
<service ref="secureCommandConfigTransformer" interface="org.osgi.service.cm.ConfigurationListener"/>
+ <!-- Console commands extender -->
+ <bean id="consoleExtender"
+ class="org.apache.karaf.shell.inject.impl.InjectionExtender"
+ init-method="init" destroy-method="destroy">
+ <property name="bundleContext" ref="blueprintBundleContext"/>
+ </bean>
+
</blueprint>
[4/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
Posted by gn...@apache.org.
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/itests/src/test/java/org/apache/karaf/itests/RegionTest.java
----------------------------------------------------------------------
diff --git a/itests/src/test/java/org/apache/karaf/itests/RegionTest.java b/itests/src/test/java/org/apache/karaf/itests/RegionTest.java
index 07e05fd..3d7d6b0 100644
--- a/itests/src/test/java/org/apache/karaf/itests/RegionTest.java
+++ b/itests/src/test/java/org/apache/karaf/itests/RegionTest.java
@@ -35,7 +35,7 @@ public class RegionTest extends KarafTestSupport {
@Test
public void addRegionCommand() throws Exception {
- System.out.println(executeCommand("region:addregion itest"));
+ System.out.println(executeCommand("region:region-add itest"));
String infoOutput = executeCommand("region:info");
System.out.println(infoOutput);
assertTrue("Region itest should be present", infoOutput.contains("itest"));
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java
index 775f9ad..fa629da 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java
@@ -21,8 +21,10 @@ 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.completer.StringsCompleter;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jdbc", name = "create", description = "Create a JDBC datasource")
+@Service
public class CreateCommand extends JdbcCommandSupport {
@Argument(index = 0, name = "name", description = "The JDBC datasource name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java
index 36df691..e314c9c 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java
@@ -17,12 +17,14 @@
package org.apache.karaf.jdbc.command;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
import java.util.List;
import java.util.Map;
@Command(scope = "jdbc", name = "datasources", description = "List the JDBC datasources")
+@Service
public class DataSourcesCommand extends JdbcCommandSupport {
public Object doExecute() throws Exception {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java
index 20982bb..3b6aa16 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.jdbc.command.completers.DataSourcesFileNameCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jdbc", name = "delete", description = "Delete a JDBC datasource")
+@Service
public class DeleteCommand extends JdbcCommandSupport {
@Argument(index = 0, name = "name", description = "The JDBC datasource name (the one used at creation time)", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java
index 42f0a76..48bd412 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jdbc", name = "execute", description = "Execute a SQL command on a given JDBC datasource")
+@Service
public class ExecuteCommand extends JdbcCommandSupport {
@Argument(index = 0, name = "datasource", description = "The JDBC datasource", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java
index 89bca19..14df91b 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java
@@ -20,11 +20,13 @@ import org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
import java.util.Map;
@Command(scope = "jdbc", name = "info", description = "Display details about a JDBC datasource")
+@Service
public class InfoCommand extends JdbcCommandSupport {
@Argument(index = 0, name = "datasource", description = "The JDBC datasource name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/JdbcCommandSupport.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/JdbcCommandSupport.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/JdbcCommandSupport.java
index 6fb8bfc..f274cfb 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/JdbcCommandSupport.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/JdbcCommandSupport.java
@@ -18,9 +18,11 @@ package org.apache.karaf.jdbc.command;
import org.apache.karaf.jdbc.JdbcService;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
public abstract class JdbcCommandSupport extends OsgiCommandSupport {
+ @Reference
private JdbcService jdbcService;
public abstract Object doExecute() throws Exception;
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java
index 7fc641a..f591cd9 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java
@@ -20,6 +20,7 @@ import org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.Row;
import org.apache.karaf.shell.table.ShellTable;
@@ -27,6 +28,7 @@ import java.util.List;
import java.util.Map;
@Command(scope = "jdbc", name = "query", description = "Execute a SQL query on a JDBC datasource")
+@Service
public class QueryCommand extends JdbcCommandSupport {
@Argument(index = 0, name = "datasource", description = "The JDBC datasource to use", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java
index 6256cbc..8a7acdd 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java
@@ -20,6 +20,7 @@ import org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.Row;
import org.apache.karaf.shell.table.ShellTable;
@@ -27,6 +28,7 @@ import java.util.List;
import java.util.Map;
@Command(scope = "jdbc", name = "tables", description = "List the tables on a given JDBC datasource")
+@Service
public class TablesCommand extends JdbcCommandSupport {
@Argument(index = 0, name = "datasource", description = "The JDBC datasource to use", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesFileNameCompleter.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesFileNameCompleter.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesFileNameCompleter.java
index b99b57a..3eb7eb6 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesFileNameCompleter.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesFileNameCompleter.java
@@ -19,14 +19,18 @@ package org.apache.karaf.jdbc.command.completers;
import org.apache.karaf.jdbc.JdbcService;
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 java.util.List;
/**
* Completer on the JDBC datasources file name.
*/
+@Service
public class DataSourcesFileNameCompleter implements Completer {
+ @Reference
private JdbcService jdbcService;
@Override
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesNameCompleter.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesNameCompleter.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesNameCompleter.java
index e0adb31..af4c0e3 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesNameCompleter.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/completers/DataSourcesNameCompleter.java
@@ -19,14 +19,18 @@ package org.apache.karaf.jdbc.command.completers;
import org.apache.karaf.jdbc.JdbcService;
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 java.util.List;
/**
* Completer on the JDBC datasources name (JNDI or OSGi service property).
*/
+@Service
public class DataSourcesNameCompleter implements Completer {
+ @Reference
private JdbcService jdbcService;
@Override
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml b/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml
index 2433e00..fe843fc 100644
--- a/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml
+++ b/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml
@@ -17,54 +17,7 @@
-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
- <reference id="jdbcService" interface="org.apache.karaf.jdbc.JdbcService" />
-
- <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
- <command>
- <action class="org.apache.karaf.jdbc.command.CreateCommand">
- <property name="jdbcService" ref="jdbcService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jdbc.command.DeleteCommand">
- <property name="jdbcService" ref="jdbcService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jdbc.command.DataSourcesCommand">
- <property name="jdbcService" ref="jdbcService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jdbc.command.QueryCommand">
- <property name="jdbcService" ref="jdbcService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jdbc.command.ExecuteCommand">
- <property name="jdbcService" ref="jdbcService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jdbc.command.InfoCommand">
- <property name="jdbcService" ref="jdbcService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jdbc.command.TablesCommand">
- <property name="jdbcService" ref="jdbcService"/>
- </action>
- </command>
- </command-bundle>
-
- <bean id="dataSourcesNameCompleter" class="org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter">
- <property name="jdbcService" ref="jdbcService" />
- </bean>
- <service ref="dataSourcesNameCompleter" auto-export="all-classes"/>
-
- <bean id="dataSourcesFileNameCompleter" class="org.apache.karaf.jdbc.command.completers.DataSourcesFileNameCompleter">
- <property name="jdbcService" ref="jdbcService" />
- </bean>
- <service ref="dataSourcesFileNameCompleter" auto-export="all-classes"/>
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.jdbc.command.*" />
</blueprint>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/BrowseCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/BrowseCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/BrowseCommand.java
index c99374a..49bd545 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/BrowseCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/BrowseCommand.java
@@ -20,11 +20,13 @@ import org.apache.karaf.jms.JmsMessage;
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.shell.table.ShellTable;
import java.util.List;
@Command(scope = "jms", name = "browse", description = "Browse a JMS queue")
+@Service
public class BrowseCommand extends JmsConnectionCommandSupport {
@Argument(index = 1, name = "queue", description = "The JMS queue to browse", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/ConnectionFactoriesCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/ConnectionFactoriesCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/ConnectionFactoriesCommand.java
index 8142449..91182e7 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/ConnectionFactoriesCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/ConnectionFactoriesCommand.java
@@ -17,11 +17,13 @@
package org.apache.karaf.jms.command;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
import java.util.List;
@Command(scope = "jms", name = "connectionfactories", description = "List the JMS connection factories")
+@Service
public class ConnectionFactoriesCommand extends JmsCommandSupport {
public Object doExecute() throws Exception {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java
index 84e1d19..a1b3855 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java
@@ -19,8 +19,10 @@ package org.apache.karaf.jms.command;
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;
@Command(scope = "jms", name = "consume", description = "Consume messages from a JMS queue.")
+@Service
public class ConsumeCommand extends JmsConnectionCommandSupport {
@Argument(index = 1, name = "queue", description = "The JMS queue where to consume messages", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/CountCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/CountCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/CountCommand.java
index 016d6cd..600477a 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/CountCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/CountCommand.java
@@ -18,9 +18,11 @@ package org.apache.karaf.jms.command;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
@Command(scope = "jms", name = "count", description = "Count the number of messages on a JMS queue.")
+@Service
public class CountCommand extends JmsConnectionCommandSupport {
@Argument(index = 1, name = "queue", description = "The JMS queue name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
index dcea101..0750a57 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
@@ -21,8 +21,10 @@ 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.completer.StringsCompleter;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jms", name = "create", description = "Create a JMS connection factory.")
+@Service
public class CreateCommand extends JmsCommandSupport {
@Argument(index = 0, name = "name", description = "The JMS connection factory name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java
index 882c318..2cd701f 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.jms.command.completers.ConnectionFactoriesFileNameComple
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jms", name = "delete", description = "Delete a JMS connection factory")
+@Service
public class DeleteCommand extends JmsCommandSupport {
@Argument(index = 0, name = "name", description = "The JMS connection factory name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/InfoCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/InfoCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/InfoCommand.java
index 8b25130..732a164 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/InfoCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/InfoCommand.java
@@ -19,9 +19,11 @@ package org.apache.karaf.jms.command;
import java.util.Map;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
@Command(scope = "jms", name = "info", description = "Provides details about a JMS connection factory.")
+@Service
public class InfoCommand extends JmsConnectionCommandSupport {
public Object doExecute() throws Exception {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/JmsCommandSupport.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/JmsCommandSupport.java b/jms/command/src/main/java/org/apache/karaf/jms/command/JmsCommandSupport.java
index 86b99a7..e4d514c 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/JmsCommandSupport.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/JmsCommandSupport.java
@@ -18,9 +18,11 @@ package org.apache.karaf.jms.command;
import org.apache.karaf.jms.JmsService;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
public abstract class JmsCommandSupport extends OsgiCommandSupport {
+ @Reference
private JmsService jmsService;
public JmsService getJmsService() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java
index 4ab8b46..8afe253 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java
@@ -19,8 +19,10 @@ package org.apache.karaf.jms.command;
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;
@Command(scope = "jms", name = "move", description = "Move messages from one JMS queue to another one.")
+@Service
public class MoveCommand extends JmsConnectionCommandSupport {
@Argument(index = 1, name = "source", description = "The source JMS queue", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/QueuesCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/QueuesCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/QueuesCommand.java
index 8ae4cab..105eeb2 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/QueuesCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/QueuesCommand.java
@@ -17,9 +17,11 @@
package org.apache.karaf.jms.command;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
@Command(scope = "jms", name = "queues", description = "List the JMS queues.")
+@Service
public class QueuesCommand extends JmsConnectionCommandSupport {
public Object doExecute() throws Exception {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/SendCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/SendCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/SendCommand.java
index 792de7f..3af7436 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/SendCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/SendCommand.java
@@ -19,8 +19,10 @@ package org.apache.karaf.jms.command;
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;
@Command(scope = "jms", name = "send", description = "Send a message to ")
+@Service
public class SendCommand extends JmsConnectionCommandSupport {
@Argument(index = 1, name = "queue", description = "The JMS queue name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/TopicsCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/TopicsCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/TopicsCommand.java
index bd27dcf..7a0b707 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/TopicsCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/TopicsCommand.java
@@ -17,9 +17,11 @@
package org.apache.karaf.jms.command;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
@Command(scope = "jms", name = "topics", description = "List the JMS topics.")
+@Service
public class TopicsCommand extends JmsConnectionCommandSupport {
public Object doExecute() throws Exception {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesFileNameCompleter.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesFileNameCompleter.java b/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesFileNameCompleter.java
index e5cfabf..12c42bd 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesFileNameCompleter.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesFileNameCompleter.java
@@ -19,14 +19,18 @@ package org.apache.karaf.jms.command.completers;
import org.apache.karaf.jms.JmsService;
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 java.util.List;
/**
* Completer on the JMS connection factory file names.
*/
+@Service
public class ConnectionFactoriesFileNameCompleter implements Completer {
+ @Reference
private JmsService jmsService;
@Override
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java b/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java
index 2d19e76..3437c8e 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java
@@ -19,14 +19,18 @@ package org.apache.karaf.jms.command.completers;
import org.apache.karaf.jms.JmsService;
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 java.util.List;
/**
* Completer on the JMS connection factories name.
*/
+@Service
public class ConnectionFactoriesNameCompleter implements Completer {
+ @Reference
private JmsService jmsService;
@Override
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml
----------------------------------------------------------------------
diff --git a/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml b/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml
index be81647..b5a912f 100644
--- a/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml
+++ b/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml
@@ -17,74 +17,7 @@
-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
- <reference id="jmsService" interface="org.apache.karaf.jms.JmsService"/>
-
- <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
- <command>
- <action class="org.apache.karaf.jms.command.BrowseCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.ConnectionFactoriesCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.ConsumeCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.CountCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.CreateCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.DeleteCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.InfoCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.MoveCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.QueuesCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.SendCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jms.command.TopicsCommand">
- <property name="jmsService" ref="jmsService"/>
- </action>
- </command>
- </command-bundle>
-
- <bean id="connectionFactoriesNameCompleter" class="org.apache.karaf.jms.command.completers.ConnectionFactoriesNameCompleter">
- <property name="jmsService" ref="jmsService"/>
- </bean>
- <service ref="connectionFactoriesNameCompleter" auto-export="all-classes"/>
-
- <bean id="connectionFactoriesFileNameCompleter" class="org.apache.karaf.jms.command.completers.ConnectionFactoriesFileNameCompleter">
- <property name="jmsService" ref="jmsService"/>
- </bean>
- <service ref="connectionFactoriesFileNameCompleter" auto-export="all-classes"/>
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.jms.command.*" />
</blueprint>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java
index 86a126e..3733858 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java
@@ -21,8 +21,10 @@ import org.apache.karaf.jndi.command.completers.NamesCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jndi", name = "alias", description = "Create a JNDI alias on a given name.")
+@Service
public class AliasCommand extends JndiCommandSupport {
@Argument(index = 0, name = "name", description = "The JNDI name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java
index a0560d3..5192853 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java
@@ -21,8 +21,10 @@ import org.apache.karaf.jndi.command.completers.ServicesIdCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jndi", name = "bind", description = "Bind an OSGi service in the JNDI context")
+@Service
public class BindCommand extends JndiCommandSupport {
@Argument(index = 0, name = "service", description = "The ID of the OSGi service to bind", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java
index b50f3c3..34def8f 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java
@@ -20,11 +20,13 @@ import org.apache.karaf.jndi.command.completers.ContextsCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
import java.util.List;
@Command(scope = "jndi", name = "contexts", description = "List the JNDI sub-contexts.")
+@Service
public class ContextsCommand extends JndiCommandSupport {
@Argument(index = 0, name = "context", description = "The base JNDI context", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java
index dfaa108..d8627a3 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.jndi.command.completers.ContextsCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jndi", name = "create", description = "Create a new JNDI sub-context.")
+@Service
public class CreateCommand extends JndiCommandSupport {
@Argument(index = 0, name = "context", description = "The JNDI sub-context name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java
index 0370859..7e8a631 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.jndi.command.completers.ContextsCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jndi", name = "delete", description = "Delete a JNDI sub-context.")
+@Service
public class DeleteCommand extends JndiCommandSupport {
@Argument(index = 0, name = "context", description = "The JNDI sub-context name", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/JndiCommandSupport.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/JndiCommandSupport.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/JndiCommandSupport.java
index 0e46be3..e3e4e48 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/JndiCommandSupport.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/JndiCommandSupport.java
@@ -18,9 +18,11 @@ package org.apache.karaf.jndi.command;
import org.apache.karaf.jndi.JndiService;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
public abstract class JndiCommandSupport extends OsgiCommandSupport {
+ @Reference
private JndiService jndiService;
public JndiService getJndiService() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java
index 661dbbf..c893843 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java
@@ -20,11 +20,13 @@ import org.apache.karaf.jndi.command.completers.ContextsCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
import java.util.Map;
@Command(scope = "jndi", name = "names", description = "List the JNDI names.")
+@Service
public class NamesCommand extends JndiCommandSupport {
@Argument(index = 0, name = "context", description = "The JNDI context to display the names", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java
index 10b9740..058a822 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.jndi.command.completers.NamesCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "jndi", name = "unbind", description = "Unbind a JNDI name.")
+@Service
public class UnbindCommand extends JndiCommandSupport {
@Argument(index = 0, name = "name", description = "The JNDI name to unbind", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ContextsCompleter.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ContextsCompleter.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ContextsCompleter.java
index 88705c0..deab19b 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ContextsCompleter.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ContextsCompleter.java
@@ -19,14 +19,18 @@ package org.apache.karaf.jndi.command.completers;
import org.apache.karaf.jndi.JndiService;
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 java.util.List;
/**
* Completers on the JNDI contexts.
*/
+@Service
public class ContextsCompleter implements Completer {
+ @Reference
private JndiService jndiService;
public int complete(String buffer, int cursor, List candidates) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/NamesCompleter.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/NamesCompleter.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/NamesCompleter.java
index 33aef6b..618977a 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/NamesCompleter.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/NamesCompleter.java
@@ -19,14 +19,18 @@ package org.apache.karaf.jndi.command.completers;
import org.apache.karaf.jndi.JndiService;
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 java.util.List;
/**
* Completer to the JNDI names.
*/
+@Service
public class NamesCompleter implements Completer {
+ @Reference
private JndiService jndiService;
public int complete(String buffer, int cursor, List candidates) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ServicesIdCompleter.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ServicesIdCompleter.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ServicesIdCompleter.java
index e1673cd..c56490b 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ServicesIdCompleter.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/completers/ServicesIdCompleter.java
@@ -18,6 +18,8 @@ package org.apache.karaf.jndi.command.completers;
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.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
@@ -28,8 +30,10 @@ import java.util.List;
/**
* Completer on the OSGi services ID.
*/
+@Service
public class ServicesIdCompleter implements Completer {
+ @Reference
private BundleContext bundleContext;
public int complete(String buffer, int cursor, List candidates) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml b/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml
index d9b9f14..f59750b 100644
--- a/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml
+++ b/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml
@@ -17,59 +17,7 @@
-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
- <reference id="jndiService" interface="org.apache.karaf.jndi.JndiService" />
-
- <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
- <command>
- <action class="org.apache.karaf.jndi.command.AliasCommand">
- <property name="jndiService" ref="jndiService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jndi.command.ContextsCommand">
- <property name="jndiService" ref="jndiService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jndi.command.NamesCommand">
- <property name="jndiService" ref="jndiService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jndi.command.CreateCommand">
- <property name="jndiService" ref="jndiService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jndi.command.DeleteCommand">
- <property name="jndiService" ref="jndiService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jndi.command.BindCommand">
- <property name="jndiService" ref="jndiService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.jndi.command.UnbindCommand">
- <property name="jndiService" ref="jndiService" />
- </action>
- </command>
- </command-bundle>
-
- <bean id="namesCompleter" class="org.apache.karaf.jndi.command.completers.NamesCompleter">
- <property name="jndiService" ref="jndiService" />
- </bean>
- <service ref="namesCompleter" auto-export="all-classes"/>
-
- <bean id="contextsCompleter" class="org.apache.karaf.jndi.command.completers.ContextsCompleter">
- <property name="jndiService" ref="jndiService" />
- </bean>
- <service ref="contextsCompleter" auto-export="all-classes"/>
-
- <bean id="servicesIdCompleter" class="org.apache.karaf.jndi.command.completers.ServicesIdCompleter">
- <property name="bundleContext" ref="blueprintBundleContext" />
- </bean>
- <service ref="servicesIdCompleter" auto-export="all-classes"/>
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.jndi.command.*" />
</blueprint>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java
----------------------------------------------------------------------
diff --git a/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java b/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java
index 96c99c7..dbc34a6 100644
--- a/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java
+++ b/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java
@@ -22,8 +22,10 @@ import org.apache.karaf.features.command.completers.InstalledRepoNameCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "kar", name = "create", description = "Create a kar file for a list of feature repos")
+@Service
public class CreateKarCommand extends KarCommandSupport {
@Argument(index = 0, name = "repoName", description = "Repository name. The kar will contain all features of the named repository by default", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/kar/command/src/main/java/org/apache/karaf/kar/command/InstallKarCommand.java
----------------------------------------------------------------------
diff --git a/kar/command/src/main/java/org/apache/karaf/kar/command/InstallKarCommand.java b/kar/command/src/main/java/org/apache/karaf/kar/command/InstallKarCommand.java
index 8deff2f..1053e74 100644
--- a/kar/command/src/main/java/org/apache/karaf/kar/command/InstallKarCommand.java
+++ b/kar/command/src/main/java/org/apache/karaf/kar/command/InstallKarCommand.java
@@ -18,10 +18,12 @@ package org.apache.karaf.kar.command;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import java.net.URI;
@Command(scope = "kar", name = "install", description = "Installs a KAR file.")
+@Service
public class InstallKarCommand extends KarCommandSupport {
@Argument(index = 0, name = "url", description = "The URL of the KAR file to install.", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/kar/command/src/main/java/org/apache/karaf/kar/command/KarCommandSupport.java
----------------------------------------------------------------------
diff --git a/kar/command/src/main/java/org/apache/karaf/kar/command/KarCommandSupport.java b/kar/command/src/main/java/org/apache/karaf/kar/command/KarCommandSupport.java
index 16c250a..3af6622 100644
--- a/kar/command/src/main/java/org/apache/karaf/kar/command/KarCommandSupport.java
+++ b/kar/command/src/main/java/org/apache/karaf/kar/command/KarCommandSupport.java
@@ -18,9 +18,11 @@ package org.apache.karaf.kar.command;
import org.apache.karaf.kar.KarService;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
public abstract class KarCommandSupport extends OsgiCommandSupport {
+ @Reference
private KarService karService;
public KarService getKarService() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/kar/command/src/main/java/org/apache/karaf/kar/command/ListKarCommand.java
----------------------------------------------------------------------
diff --git a/kar/command/src/main/java/org/apache/karaf/kar/command/ListKarCommand.java b/kar/command/src/main/java/org/apache/karaf/kar/command/ListKarCommand.java
index 1a8902a..e1b59bb 100644
--- a/kar/command/src/main/java/org/apache/karaf/kar/command/ListKarCommand.java
+++ b/kar/command/src/main/java/org/apache/karaf/kar/command/ListKarCommand.java
@@ -18,9 +18,11 @@ package org.apache.karaf.kar.command;
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.shell.table.ShellTable;
@Command(scope = "kar", name = "list", description = "List the installed KAR files.")
+@Service
public class ListKarCommand extends KarCommandSupport {
@Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java
----------------------------------------------------------------------
diff --git a/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java b/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java
index a02efb5..ce5664d 100644
--- a/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java
+++ b/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java
@@ -20,8 +20,10 @@ import org.apache.karaf.kar.command.completers.KarCompleter;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "kar", name = "uninstall", description = "Uninstall a KAR file.")
+@Service
public class UninstallKarCommand extends KarCommandSupport {
@Argument(index = 0, name = "name", description = "The name of the KAR file to uninstall.", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/kar/command/src/main/java/org/apache/karaf/kar/command/completers/KarCompleter.java
----------------------------------------------------------------------
diff --git a/kar/command/src/main/java/org/apache/karaf/kar/command/completers/KarCompleter.java b/kar/command/src/main/java/org/apache/karaf/kar/command/completers/KarCompleter.java
index e7e556a..460a21b 100644
--- a/kar/command/src/main/java/org/apache/karaf/kar/command/completers/KarCompleter.java
+++ b/kar/command/src/main/java/org/apache/karaf/kar/command/completers/KarCompleter.java
@@ -19,14 +19,18 @@ package org.apache.karaf.kar.command.completers;
import org.apache.karaf.kar.KarService;
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 java.util.List;
/**
* Completer on all installed KAR files.
*/
+@Service
public class KarCompleter implements Completer {
-
+
+ @Reference
private KarService karService;
public int complete(String buffer, int cursor, @SuppressWarnings("rawtypes") List candidates) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml
----------------------------------------------------------------------
diff --git a/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml b/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml
index 17acba1..53d56d7 100644
--- a/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml
+++ b/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml
@@ -17,34 +17,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.kar.command.ListKarCommand">
- <property name="karService" ref="karService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.kar.command.InstallKarCommand">
- <property name="karService" ref="karService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.kar.command.UninstallKarCommand">
- <property name="karService" ref="karService"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.kar.command.CreateKarCommand">
- <property name="karService" ref="karService"/>
- </action>
- </command>
- </command-bundle>
-
- <reference id="karService" interface="org.apache.karaf.kar.KarService"/>
-
- <bean id="karCompleter" class="org.apache.karaf.kar.command.completers.KarCompleter">
- <property name="karService" ref="karService"/>
- </bean>
- <service ref="karCompleter" auto-export="all-classes"/>
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.kar.command.*" />
</blueprint>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/java/org/apache/karaf/log/command/ClearLog.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/ClearLog.java b/log/command/src/main/java/org/apache/karaf/log/command/ClearLog.java
index 24454cb..8733568 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/ClearLog.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/ClearLog.java
@@ -17,11 +17,13 @@
package org.apache.karaf.log.command;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
/**
* Clear the last log entries.
*/
@Command(scope = "log", name = "clear", description = "Clear log entries.")
+@Service
public class ClearLog extends LogCommandSupport {
protected Object doExecute() throws Exception {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/java/org/apache/karaf/log/command/DisplayException.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/DisplayException.java b/log/command/src/main/java/org/apache/karaf/log/command/DisplayException.java
index 2cbf406..d8cb4b5 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/DisplayException.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/DisplayException.java
@@ -18,9 +18,11 @@ package org.apache.karaf.log.command;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.ops4j.pax.logging.spi.PaxLoggingEvent;
@Command(scope = "log", name = "exception-display", description = "Displays the last occurred exception from the log.")
+@Service
public class DisplayException extends LogCommandSupport {
@Argument(index = 0, name = "logger", description = "The name of the logger. This can be ROOT, ALL, or the name of a logger specified in the org.ops4j.pax.logger.cfg file.", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/java/org/apache/karaf/log/command/DisplayLog.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/DisplayLog.java b/log/command/src/main/java/org/apache/karaf/log/command/DisplayLog.java
index 1a5a845..f17e775 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/DisplayLog.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/DisplayLog.java
@@ -22,12 +22,15 @@ import org.apache.karaf.log.core.LogEventFormatter;
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.Reference;
+import org.apache.karaf.shell.inject.Service;
import org.ops4j.pax.logging.spi.PaxLoggingEvent;
/**
* Displays the last log entries
*/
@Command(scope = "log", name = "display", description = "Displays log entries.")
+@Service
public class DisplayLog extends LogCommandSupport {
@Option(name = "-n", aliases = {}, description="Number of entries to display", required = false, multiValued = false)
@@ -42,6 +45,7 @@ public class DisplayLog extends LogCommandSupport {
@Argument(index = 0, name = "logger", description = "The name of the logger. This can be ROOT, ALL, or the name of a logger specified in the org.ops4j.pax.logger.cfg file.", required = false, multiValued = false)
String logger;
+ @Reference
protected LogEventFormatter formatter;
public void setFormatter(LogEventFormatter formatter) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/java/org/apache/karaf/log/command/GetLogLevel.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/GetLogLevel.java b/log/command/src/main/java/org/apache/karaf/log/command/GetLogLevel.java
index 4b32913..290fffb 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/GetLogLevel.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/GetLogLevel.java
@@ -19,6 +19,7 @@ package org.apache.karaf.log.command;
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.shell.table.ShellTable;
import java.util.Enumeration;
@@ -29,6 +30,7 @@ import java.util.Map;
* Get the log level
*/
@Command(scope = "log", name = "get", description = "Shows the currently set log level.")
+@Service
public class GetLogLevel extends LogCommandSupport {
@Argument(index = 0, name = "logger", description = "The name of the logger, ALL or ROOT (default)", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/java/org/apache/karaf/log/command/LogCommandSupport.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/LogCommandSupport.java b/log/command/src/main/java/org/apache/karaf/log/command/LogCommandSupport.java
index 8a8f979..9ce0f8c 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/LogCommandSupport.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/LogCommandSupport.java
@@ -18,8 +18,11 @@ package org.apache.karaf.log.command;
import org.apache.karaf.log.core.LogService;
import org.apache.karaf.shell.console.AbstractAction;
+import org.apache.karaf.shell.inject.Reference;
public abstract class LogCommandSupport extends AbstractAction {
+
+ @Reference
protected LogService logService;
public void setLogService(LogService logService) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java b/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java
index 4bb53d0..d2c1786 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java
@@ -22,12 +22,15 @@ import org.apache.karaf.shell.commands.Completer;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.AbstractAction;
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.service.log.LogService;
import java.util.HashMap;
import java.util.Map;
@Command(scope = "log", name = "log", description = "Log a message.")
+@Service
public class LogEntry extends AbstractAction {
@Argument(index = 0, name = "message", description = "The message to log", required = true, multiValued = false)
@@ -37,13 +40,12 @@ public class LogEntry extends AbstractAction {
@Completer(value = StringsCompleter.class, values = { "DEBUG", "INFO", "WARNING", "ERROR" })
private String level = "INFO";
+ @Reference
private LogService logService;
private final Map<String,Integer> mappings = new HashMap<String,Integer>();
- public LogEntry(LogService logService) {
- this.logService = logService;
-
+ public LogEntry() {
mappings.put("ERROR",1);
mappings.put("WARNING",2);
mappings.put("INFO",3);
@@ -65,4 +67,7 @@ public class LogEntry extends AbstractAction {
return level;
}
+ public void setLogService(LogService logService) {
+ this.logService = logService;
+ }
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/java/org/apache/karaf/log/command/LogTail.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/LogTail.java b/log/command/src/main/java/org/apache/karaf/log/command/LogTail.java
index 93ae14a..a79b8a9 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/LogTail.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/LogTail.java
@@ -21,10 +21,12 @@ import java.io.PrintStream;
import java.util.concurrent.*;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import org.ops4j.pax.logging.spi.PaxAppender;
import org.ops4j.pax.logging.spi.PaxLoggingEvent;
@Command(scope = "log", name = "tail", description = "Continuously display log entries. Use ctrl-c to quit this command")
+@Service
public class LogTail extends DisplayLog {
private ExecutorService executorService = Executors.newSingleThreadExecutor();
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java b/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
index ae41b7d..4bdf5d8 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
@@ -20,11 +20,13 @@ import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Completer;
import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.apache.karaf.shell.inject.Service;
/**
* Set the log level for a given logger
*/
@Command(scope = "log", name = "set", description = "Sets the log level.")
+@Service
public class SetLogLevel extends LogCommandSupport {
@Argument(index = 0, name = "level", description = "The log level to set (TRACE, DEBUG, INFO, WARN, ERROR) or DEFAULT to unset", required = true, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml
----------------------------------------------------------------------
diff --git a/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml b/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml
index 0b94658..d074489 100644
--- a/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml
+++ b/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml
@@ -21,48 +21,7 @@
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
default-activation="lazy">
- <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
- <command>
- <action class="org.apache.karaf.log.command.DisplayLog">
- <property name="logService" ref="logService" />
- <property name="formatter" ref="formatter"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.log.command.DisplayException">
- <property name="logService" ref="logService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.log.command.ClearLog">
- <property name="logService" ref="logService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.log.command.GetLogLevel">
- <property name="logService" ref="logService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.log.command.SetLogLevel" >
- <property name="logService" ref="logService" />
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.log.command.LogTail">
- <property name="logService" ref="logService" />
- <property name="formatter" ref="formatter"/>
- </action>
- </command>
- <command>
- <action class="org.apache.karaf.log.command.LogEntry">
- <argument ref="osgiLogService" />
- </action>
- </command>
- </command-bundle>
-
- <reference id="formatter" interface="org.apache.karaf.log.core.LogEventFormatter"/>
- <reference id="logService" interface="org.apache.karaf.log.core.LogService"/>
- <reference id="osgiLogService" interface="org.osgi.service.log.LogService"/>
+ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ scan="org.apache.karaf.log.command.*" />
</blueprint>
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/AddUrlCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/AddUrlCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/AddUrlCommand.java
index 112a2fc..416639f 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/AddUrlCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/AddUrlCommand.java
@@ -21,8 +21,10 @@ import java.util.List;
import org.apache.felix.bundlerepository.RepositoryAdmin;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "obr", name = "url-add", description = "Adds a list of repository URLs to the OBR service.")
+@Service
public class AddUrlCommand extends ObrCommandSupport {
@Argument(index = 0, name = "urls", description = "Repository URLs to add to the OBR service separated by whitespaces", required = true, multiValued = true)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/DeployCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/DeployCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/DeployCommand.java
index a008004..48e42d6 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/DeployCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/DeployCommand.java
@@ -22,8 +22,10 @@ import org.apache.felix.bundlerepository.RepositoryAdmin;
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;
@Command(scope = "obr", name = "deploy", description = "Deploys a list of bundles using OBR service.")
+@Service
public class DeployCommand extends ObrCommandSupport {
@Argument(index = 0, name = "bundles", description = "List of bundle names to deploy (separated by whitespaces)", required = true, multiValued = true)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/FindCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/FindCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/FindCommand.java
index c442285..cfa4c53 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/FindCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/FindCommand.java
@@ -22,6 +22,7 @@ import org.apache.felix.bundlerepository.Requirement;
import org.apache.felix.bundlerepository.Resource;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
import java.io.PrintStream;
import java.lang.reflect.Array;
@@ -30,6 +31,7 @@ import java.util.List;
import java.util.Map;
@Command(scope = "obr", name = "find", description = "Find OBR bundles for a given filter.")
+@Service
public class FindCommand extends ObrCommandSupport {
@Argument(index = 0, name = "requirements", description = "Requirement", required = true, multiValued = true)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/InfoCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/InfoCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/InfoCommand.java
index d91830a..e2efa16 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/InfoCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/InfoCommand.java
@@ -28,8 +28,10 @@ import org.apache.felix.bundlerepository.Requirement;
import org.apache.felix.bundlerepository.Resource;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Service;
@Command(scope = "obr", name = "info", description = "Prints information about OBR bundles.")
+@Service
public class InfoCommand extends ObrCommandSupport {
@Argument(index = 0, name = "bundles", description = "Specify bundles to query for information (separated by whitespaces)", required = true, multiValued = true)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/ListCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/ListCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/ListCommand.java
index ca17ba2..71df53f 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/ListCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/ListCommand.java
@@ -25,10 +25,13 @@ import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.felix.service.command.CommandSession;
import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
import org.apache.karaf.shell.table.ShellTable;
@Command(scope = "obr", name = "list", description = "Lists OBR bundles, optionally providing the given packages.")
-public class ListCommand implements Action {
+@Service
+public class ListCommand extends ObrCommandSupport {
@Argument(index = 0, name = "packages", description = "A list of packages separated by whitespaces.", required = false, multiValued = true)
List<String> packages;
@@ -36,14 +39,8 @@ public class ListCommand implements Action {
@Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
boolean noFormat;
- RepositoryAdmin repoAdmin;
-
- public void setRepoAdmin(RepositoryAdmin repoAdmin) {
- this.repoAdmin = repoAdmin;
- }
-
@Override
- public Object execute(CommandSession session) throws Exception {
+ void doExecute(RepositoryAdmin admin) throws Exception {
StringBuilder substr = new StringBuilder();
if (packages != null) {
@@ -59,7 +56,7 @@ public class ListCommand implements Action {
} else {
query = "(|(presentationname=*" + substr + "*)(symbolicname=*" + substr + "*))";
}
- Resource[] resources = repoAdmin.discoverResources(query);
+ Resource[] resources = admin.discoverResources(query);
int maxPName = 4;
int maxSName = 13;
int maxVersion = 7;
@@ -82,8 +79,6 @@ public class ListCommand implements Action {
}
table.print(System.out, !noFormat);
-
- return null;
}
private String emptyIfNull(Object st) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/ListUrlCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/ListUrlCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/ListUrlCommand.java
index 07767ce..e03477b 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/ListUrlCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/ListUrlCommand.java
@@ -20,9 +20,11 @@ import org.apache.felix.bundlerepository.Repository;
import org.apache.felix.bundlerepository.RepositoryAdmin;
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.shell.table.ShellTable;
@Command(scope = "obr", name = "url-list", description = "Displays the repository URLs currently associated with the OBR service.")
+@Service
public class ListUrlCommand extends ObrCommandSupport {
@Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/ObrCommandSupport.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/ObrCommandSupport.java b/obr/command/src/main/java/org/apache/karaf/obr/command/ObrCommandSupport.java
index 0a9d0fe..9b70875 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/ObrCommandSupport.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/ObrCommandSupport.java
@@ -33,6 +33,7 @@ import org.apache.felix.bundlerepository.Requirement;
import org.apache.felix.bundlerepository.Resolver;
import org.apache.felix.bundlerepository.Resource;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.inject.Reference;
import org.osgi.framework.Bundle;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
@@ -42,23 +43,15 @@ public abstract class ObrCommandSupport extends OsgiCommandSupport {
protected static final char VERSION_DELIM = ',';
- protected Object doExecute() throws Exception {
- ServiceReference<RepositoryAdmin> ref = getBundleContext().getServiceReference(RepositoryAdmin.class);
- if (ref == null) {
- System.out.println("RepositoryAdmin service is unavailable.");
- return null;
- }
- try {
- RepositoryAdmin admin = getBundleContext().getService(ref);
- if (admin == null) {
- System.out.println("RepositoryAdmin service is unavailable.");
- return null;
- }
+ @Reference
+ private RepositoryAdmin repositoryAdmin;
- doExecute(admin);
- } finally {
- getBundleContext().ungetService(ref);
- }
+ public void setRepositoryAdmin(RepositoryAdmin repositoryAdmin) {
+ this.repositoryAdmin = repositoryAdmin;
+ }
+
+ protected Object doExecute() throws Exception {
+ doExecute(repositoryAdmin);
return null;
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/RefreshUrlCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/RefreshUrlCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/RefreshUrlCommand.java
index ce8607a..9610b97 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/RefreshUrlCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/RefreshUrlCommand.java
@@ -23,8 +23,10 @@ import org.apache.felix.bundlerepository.RepositoryAdmin;
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;
@Command(scope = "obr", name = "url-refresh", description = "Reloads the repositories to obtain a fresh list of bundles.")
+@Service
public class RefreshUrlCommand extends ObrCommandSupport {
@Option(name = "-i", aliases = { "--index" }, description = "Use index to identify URL", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/RemoveUrlCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/RemoveUrlCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/RemoveUrlCommand.java
index 771d3d6..dd183d1 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/RemoveUrlCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/RemoveUrlCommand.java
@@ -23,8 +23,10 @@ import org.apache.felix.bundlerepository.RepositoryAdmin;
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;
@Command(scope = "obr", name = "url-remove", description = "Removes a list of repository URLs from the OBR service.")
+@Service
public class RemoveUrlCommand extends ObrCommandSupport {
@Option(name = "-i", aliases = { "--index" }, description = "Use index to identify URL", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/ResolveCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/ResolveCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/ResolveCommand.java
index 30ef4ca..edbf11f 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/ResolveCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/ResolveCommand.java
@@ -29,8 +29,10 @@ import org.apache.felix.bundlerepository.Resource;
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;
@Command(scope = "obr", name = "resolve", description = "Shows the resolution output for a given set of requirements.")
+@Service
public class ResolveCommand extends ObrCommandSupport {
@Option(name = "-w", aliases = "--why", description = "Display the reason of the inclusion of the resource")
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/SourceCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/SourceCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/SourceCommand.java
index 307cbad..8c2eb89 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/SourceCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/SourceCommand.java
@@ -25,8 +25,10 @@ import org.apache.karaf.obr.command.util.FileUtil;
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;
@Command(scope = "obr", name = "source", description = "Downloads the sources for an OBR bundle.")
+@Service
public class SourceCommand extends ObrCommandSupport {
@Option(name = "-x", aliases = {}, description = "Extract the archive", required = false, multiValued = false)
http://git-wip-us.apache.org/repos/asf/karaf/blob/e4f7bc4a/obr/command/src/main/java/org/apache/karaf/obr/command/StartCommand.java
----------------------------------------------------------------------
diff --git a/obr/command/src/main/java/org/apache/karaf/obr/command/StartCommand.java b/obr/command/src/main/java/org/apache/karaf/obr/command/StartCommand.java
index ec631d6..9947986 100644
--- a/obr/command/src/main/java/org/apache/karaf/obr/command/StartCommand.java
+++ b/obr/command/src/main/java/org/apache/karaf/obr/command/StartCommand.java
@@ -20,10 +20,12 @@ import org.apache.felix.bundlerepository.RepositoryAdmin;
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 java.util.List;
@Command(scope = "obr", name = "start", description = "Deploys and starts a list of bundles using OBR.")
+@Service
public class StartCommand extends ObrCommandSupport {
@Argument(index = 0, name = "bundles", description = "List of bundles to deploy (separated by whitespaces)", required = true, multiValued = true)
[2/6] git commit: [KARAF-2763] Enhance blueprint namespace to support
the injection annotations
Posted by gn...@apache.org.
[KARAF-2763] Enhance blueprint namespace to support the injection annotations
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/582bf1d8
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/582bf1d8
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/582bf1d8
Branch: refs/heads/master
Commit: 582bf1d88c52528a9222984091a6075b5ddeb9b1
Parents: 5acee17
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Tue Feb 18 09:18:19 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Tue Feb 18 09:23:30 2014 +0100
----------------------------------------------------------------------
.../console/commands/NamespaceHandler.java | 286 +++++++++++++++----
.../blueprint/shell-namespacehandler.xml | 6 +
.../console/commands/karaf-shell-1.2.0.xsd | 225 +++++++++++++++
3 files changed, 467 insertions(+), 50 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/582bf1d8/shell/console/src/main/java/org/apache/karaf/shell/console/commands/NamespaceHandler.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/console/commands/NamespaceHandler.java b/shell/console/src/main/java/org/apache/karaf/shell/console/commands/NamespaceHandler.java
index 8330872..b700957 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/console/commands/NamespaceHandler.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/console/commands/NamespaceHandler.java
@@ -18,22 +18,36 @@
*/
package org.apache.karaf.shell.console.commands;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.net.URL;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.aries.blueprint.ParserContext;
+import org.apache.aries.blueprint.PassThroughMetadata;
import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
import org.apache.aries.blueprint.mutable.MutableCollectionMetadata;
import org.apache.aries.blueprint.mutable.MutableIdRefMetadata;
import org.apache.aries.blueprint.mutable.MutablePassThroughMetadata;
import org.apache.aries.blueprint.mutable.MutableRefMetadata;
+import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
import org.apache.aries.blueprint.mutable.MutableServiceMetadata;
import org.apache.aries.blueprint.mutable.MutableValueMetadata;
+import org.apache.felix.gogo.commands.Action;
+import org.apache.karaf.shell.console.Completer;
import org.apache.karaf.shell.console.SubShellAction;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.inject.Destroy;
+import org.apache.karaf.shell.inject.Init;
+import org.apache.karaf.shell.inject.Reference;
+import org.apache.karaf.shell.inject.Service;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.wiring.BundleWiring;
import org.osgi.service.blueprint.container.ComponentDefinitionException;
import org.osgi.service.blueprint.reflect.BeanArgument;
import org.osgi.service.blueprint.reflect.BeanMetadata;
@@ -44,9 +58,12 @@ import org.osgi.service.blueprint.reflect.MapMetadata;
import org.osgi.service.blueprint.reflect.Metadata;
import org.osgi.service.blueprint.reflect.NullMetadata;
import org.osgi.service.blueprint.reflect.RefMetadata;
+import org.osgi.service.blueprint.reflect.ReferenceMetadata;
import org.osgi.service.blueprint.reflect.ServiceMetadata;
import org.osgi.service.blueprint.reflect.ValueMetadata;
+import org.w3c.dom.Attr;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -57,6 +74,7 @@ public class NamespaceHandler implements org.apache.aries.blueprint.NamespaceHan
public static final String ACTION = "action";
public static final String ACTION_ID = "actionId";
public static final String COMMAND_BUNDLE = "command-bundle";
+ public static final String SCAN = "scan";
public static final String NAME = "name";
public static final String COMMAND = "command";
public static final String COMPLETERS = "completers";
@@ -71,6 +89,7 @@ public class NamespaceHandler implements org.apache.aries.blueprint.NamespaceHan
public static final String SHELL_NAMESPACE_1_0_0 = "http://karaf.apache.org/xmlns/shell/v1.0.0";
public static final String SHELL_NAMESPACE_1_1_0 = "http://karaf.apache.org/xmlns/shell/v1.1.0";
+ public static final String SHELL_NAMESPACE_1_2_0 = "http://karaf.apache.org/xmlns/shell/v1.2.0";
private int nameCounter = 0;
@@ -79,8 +98,10 @@ public class NamespaceHandler implements org.apache.aries.blueprint.NamespaceHan
return getClass().getResource("karaf-shell-1.0.0.xsd");
} else if(SHELL_NAMESPACE_1_1_0.equals(namespace)) {
return getClass().getResource("karaf-shell-1.1.0.xsd");
+ } else if(SHELL_NAMESPACE_1_2_0.equals(namespace)) {
+ return getClass().getResource("karaf-shell-1.2.0.xsd");
}
- return getClass().getResource("karaf-shell-1.1.0.xsd");
+ return getClass().getResource("karaf-shell-1.2.0.xsd");
}
public Set<Class> getManagedClasses() {
@@ -95,6 +116,14 @@ public class NamespaceHandler implements org.apache.aries.blueprint.NamespaceHan
public Metadata parse(Element element, ParserContext context) {
if (nodeNameEquals(element, COMMAND_BUNDLE)) {
+ NamedNodeMap attrs = element.getAttributes();
+ for (int i = 0; i < attrs.getLength(); i++) {
+ Node child = attrs.item(i);
+ if (child instanceof Attr) {
+ Attr childAttr = (Attr) child;
+ parseChildAttr(childAttr, context);
+ }
+ }
NodeList children = element.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node child = children.item(i);
@@ -110,6 +139,167 @@ public class NamespaceHandler implements org.apache.aries.blueprint.NamespaceHan
}
}
+ private void parseChildAttr(Attr attr, ParserContext context) {
+ if (nodeNameEquals(attr, SCAN)) {
+ scan(attr, context);
+ }
+ }
+
+ private void scan(Attr attr, ParserContext context) {
+ try {
+ Bundle bundle = getBundle(context);
+ BundleWiring wiring = bundle.adapt(BundleWiring.class);
+ for (String pkg : attr.getValue().split(" ")) {
+ String name = pkg;
+ int options = BundleWiring.LISTRESOURCES_LOCAL;
+ name = name.replace('.', '/');
+ if (name.endsWith("*")) {
+ options |= BundleWiring.LISTRESOURCES_RECURSE;
+ name = name.substring(0, name.length() - 1);
+ }
+ if (!name.startsWith("/")) {
+ name = "/" + name;
+ }
+ if (name.endsWith("/")) {
+ name = name.substring(0, name.length() - 1);
+ }
+ Collection<String> classes = wiring.listResources(name, "*.class", options);
+ for (String className : classes) {
+ className = className.replace('/', '.').replace(".class", "");
+ inspectClass(context, bundle.loadClass(className));
+ }
+ }
+ } catch (ComponentDefinitionException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ComponentDefinitionException("Unable to scan commands", e);
+ }
+ }
+
+ private void inspectClass(ParserContext context, Class<?> clazz) throws Exception {
+ Service reg = clazz.getAnnotation(Service.class);
+ if (reg == null) {
+ return;
+ }
+ if (Action.class.isAssignableFrom(clazz)) {
+ final Command cmd = clazz.getAnnotation(Command.class);
+ if (cmd == null) {
+ throw new IllegalArgumentException("Command " + clazz.getName() + " is not annotated with @Command");
+ }
+ String scope = cmd.scope();
+ String function = cmd.name();
+ // Create action
+ MutableBeanMetadata action = context.createMetadata(MutableBeanMetadata.class);
+ action.setId(getName());
+ action.setActivation(MutableBeanMetadata.ACTIVATION_LAZY);
+ action.setScope(MutableBeanMetadata.SCOPE_PROTOTYPE);
+ action.setRuntimeClass(clazz);
+ for (Class<?> cl = clazz; cl != Object.class; cl = cl.getSuperclass()) {
+ for (Field field : cl.getDeclaredFields()) {
+ if (field.getAnnotation(Reference.class) != null) {
+ if (field.getType() == BundleContext.class) {
+ action.addProperty(field.getName(), createRef(context, "blueprintBundleContext"));
+ } else {
+ action.addProperty(field.getName(), createRef(context, createServiceRef(context, field.getType()).getId()));
+ }
+ }
+ }
+ for (Method method : cl.getDeclaredMethods()) {
+ if (method.getAnnotation(Init.class) != null) {
+ if (action.getInitMethod() == null) {
+ action.setInitMethod(method.getName());
+ }
+ }
+ if (method.getAnnotation(Destroy.class) != null) {
+ if (action.getDestroyMethod() == null) {
+ action.setDestroyMethod(method.getName());
+ }
+ }
+ }
+ }
+ context.getComponentDefinitionRegistry().registerComponentDefinition(action);
+ // Create command
+ MutableBeanMetadata command = context.createMetadata(MutableBeanMetadata.class);
+ command.setRuntimeClass(BlueprintCommand.class);
+ command.addProperty(BLUEPRINT_CONTAINER, createRef(context, BLUEPRINT_CONTAINER));
+ command.addProperty(BLUEPRINT_CONVERTER, createRef(context, BLUEPRINT_CONVERTER));
+ command.addProperty(ACTION_ID, createIdRef(context, action.getId()));
+ // Create command service
+ MutableServiceMetadata commandService = context.createMetadata(MutableServiceMetadata.class);
+ commandService.setActivation(MutableServiceMetadata.ACTIVATION_LAZY);
+ commandService.setId(getName());
+ commandService.setAutoExport(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES);
+ commandService.setServiceComponent(command);
+ commandService.addServiceProperty(createStringValue(context, "osgi.command.scope"),
+ createStringValue(context, scope));
+ commandService.addServiceProperty(createStringValue(context, "osgi.command.function"),
+ createStringValue(context, function));
+ context.getComponentDefinitionRegistry().registerComponentDefinition(commandService);
+
+ // create the sub-shell action
+ createSubShell(context, scope);
+ }
+ if (Completer.class.isAssignableFrom(clazz)) {
+ MutableBeanMetadata completer = context.createMetadata(MutableBeanMetadata.class);
+ completer.setId(getName());
+ completer.setActivation(MutableBeanMetadata.ACTIVATION_LAZY);
+ completer.setScope(MutableBeanMetadata.SCOPE_SINGLETON);
+ completer.setRuntimeClass(clazz);
+ // Create completer
+ for (Class<?> cl = clazz; cl != Object.class; cl = cl.getSuperclass()) {
+ for (Field field : cl.getDeclaredFields()) {
+ if (field.getType() == BundleContext.class) {
+ completer.addProperty(field.getName(), createRef(context, "blueprintBundleContext"));
+ } else {
+ completer.addProperty(field.getName(), createRef(context, createServiceRef(context, field.getType()).getId()));
+ }
+ }
+ for (Method method : cl.getDeclaredMethods()) {
+ if (method.getAnnotation(Init.class) != null) {
+ if (completer.getInitMethod() == null) {
+ completer.setInitMethod(method.getName());
+ }
+ }
+ if (method.getAnnotation(Destroy.class) != null) {
+ if (completer.getDestroyMethod() == null) {
+ completer.setDestroyMethod(method.getName());
+ }
+ }
+ }
+ }
+ context.getComponentDefinitionRegistry().registerComponentDefinition(completer);
+ // Create completer service
+ MutableServiceMetadata completerService = context.createMetadata(MutableServiceMetadata.class);
+ completerService.setActivation(MutableServiceMetadata.ACTIVATION_LAZY);
+ completerService.setId(getName());
+ completerService.setAutoExport(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES);
+ completerService.setServiceComponent(createRef(context, completer.getId()));
+ context.getComponentDefinitionRegistry().registerComponentDefinition(completerService);
+ }
+ }
+
+ private ComponentMetadata createServiceRef(ParserContext context, Class<?> cls) {
+ String id = ".serviceref." + cls.getName();
+ ComponentMetadata metadata = context.getComponentDefinitionRegistry().getComponentDefinition(id);
+ if (metadata == null) {
+ MutableReferenceMetadata m = context.createMetadata(MutableReferenceMetadata.class);
+ m.setRuntimeInterface(cls);
+ m.setInterface(cls.getName());
+ m.setActivation(ReferenceMetadata.ACTIVATION_EAGER);
+ m.setAvailability(ReferenceMetadata.AVAILABILITY_MANDATORY);
+ m.setId(id);
+ context.getComponentDefinitionRegistry().registerComponentDefinition(m);
+ return m;
+ } else {
+ return metadata;
+ }
+ }
+
+ private Bundle getBundle(ParserContext context) {
+ PassThroughMetadata ptm = (PassThroughMetadata) context.getComponentDefinitionRegistry().getComponentDefinition("blueprintBundle");
+ return (Bundle) ptm.getObject();
+ }
+
private void parseChildElement(Element element, ParserContext context) {
if (nodeNameEquals(element, COMMAND)) {
parseCommand(element, context);
@@ -160,11 +350,11 @@ public class NamespaceHandler implements org.apache.aries.blueprint.NamespaceHan
commandService.setAutoExport(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES);
commandService.setServiceComponent(command);
- String scope = null;
+ String scope;
+ String function;
if (SHELL_NAMESPACE_1_0_0.equals(element.getNamespaceURI())) {
String location = element.getAttribute(NAME);
location = location.replace('/', ':');
- String function;
if (location.lastIndexOf(':') >= 0) {
scope = location.substring(0, location.lastIndexOf(':'));
function = location.substring(location.lastIndexOf(':') + 1);
@@ -172,59 +362,55 @@ public class NamespaceHandler implements org.apache.aries.blueprint.NamespaceHan
scope = "";
function = location;
}
- commandService.addServiceProperty(createStringValue(context, "osgi.command.scope"),
- createStringValue(context, scope));
- commandService.addServiceProperty(createStringValue(context, "osgi.command.function"),
- createStringValue(context, function));
} else {
- commandService.addServiceProperty(createStringValue(context, "osgi.command.scope"),
- getInvocationValue(context, "getScope", action.getClassName()));
- commandService.addServiceProperty(createStringValue(context, "osgi.command.function"),
- getInvocationValue(context, "getName", action.getClassName()));
+ try {
+ Class actionClass = getBundle(context).loadClass(action.getClassName());
+ scope = getScope(actionClass);
+ function = getName(actionClass);
+ } catch (Throwable e) {
+ throw new ComponentDefinitionException("Unable to introspect action " + action.getClassName(), e);
+ }
}
-
+ commandService.addServiceProperty(createStringValue(context, "osgi.command.scope"),
+ createStringValue(context, scope));
+ commandService.addServiceProperty(createStringValue(context, "osgi.command.function"),
+ createStringValue(context, function));
+
context.getComponentDefinitionRegistry().registerComponentDefinition(commandService);
+ // create the sub-shell action
+ createSubShell(context, scope);
+ }
+
+ private void createSubShell(ParserContext context, String scope) {
String subShellName = ".subshell." + scope;
- if (!context.getComponentDefinitionRegistry().containsComponentDefinition(subShellName)) {
- // create the sub-shell action
- MutableBeanMetadata subShellAction = context.createMetadata(MutableBeanMetadata.class);
- subShellAction.setRuntimeClass(SubShellAction.class);
- subShellAction.setActivation(MutableBeanMetadata.ACTIVATION_LAZY);
- subShellAction.setScope(MutableBeanMetadata.SCOPE_PROTOTYPE);
- subShellAction.setId(getName());
- if (scope != null && !scope.isEmpty()) {
- // it's shell 1.0.0 schema, scope is contained in the descriptor itself
- subShellAction.addProperty("subShell", createStringValue(context, scope));
- } else {
- // it's shell 1.1.0 schema, we inject the scope from the command
- subShellAction.addProperty("subShell", getInvocationValue(context, "getScope", action.getClassName()));
- }
- context.getComponentDefinitionRegistry().registerComponentDefinition(subShellAction);
- // generate the sub-shell command
- MutableBeanMetadata subShellCommand = context.createMetadata(MutableBeanMetadata.class);
- subShellCommand.setId(getName());
- subShellCommand.setRuntimeClass(BlueprintCommand.class);
- subShellCommand.addProperty(BLUEPRINT_CONTAINER, createRef(context, BLUEPRINT_CONTAINER));
- subShellCommand.addProperty(BLUEPRINT_CONVERTER, createRef(context, BLUEPRINT_CONVERTER));
- subShellCommand.addProperty(ACTION_ID, createIdRef(context, subShellAction.getId()));
- context.getComponentDefinitionRegistry().registerComponentDefinition(subShellCommand);
- // generate the sub-shell OSGi service
- MutableServiceMetadata subShellCommandService = context.createMetadata(MutableServiceMetadata.class);
- subShellCommandService.setActivation(MutableServiceMetadata.ACTIVATION_LAZY);
- subShellCommandService.setId(subShellName);
- subShellCommandService.setAutoExport(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES);
- subShellCommandService.setServiceComponent(subShellCommand);
- subShellCommandService.addServiceProperty(createStringValue(context, "osgi.command.scope"), createStringValue(context, "*"));
- if (scope != null && !scope.isEmpty()) {
- // it's shell 1.0.0 schema, scope is contained in the descriptor itself
- subShellCommandService.addServiceProperty(createStringValue(context, "osgi.command.function"), createStringValue(context, scope));
- } else {
- // it's shell 1.1.0 schema, we inject the scope from the command
- subShellCommandService.addServiceProperty(createStringValue(context, "osgi.command.function"), getInvocationValue(context, "getScope", action.getClassName()));
- }
- context.getComponentDefinitionRegistry().registerComponentDefinition(subShellCommandService);
+ if (context.getComponentDefinitionRegistry().containsComponentDefinition(subShellName)) {
+ return;
}
+ MutableBeanMetadata subShellAction = context.createMetadata(MutableBeanMetadata.class);
+ subShellAction.setRuntimeClass(SubShellAction.class);
+ subShellAction.setActivation(MutableBeanMetadata.ACTIVATION_LAZY);
+ subShellAction.setScope(MutableBeanMetadata.SCOPE_PROTOTYPE);
+ subShellAction.setId(getName());
+ subShellAction.addProperty("subShell", createStringValue(context, scope));
+ context.getComponentDefinitionRegistry().registerComponentDefinition(subShellAction);
+ // generate the sub-shell command
+ MutableBeanMetadata subShellCommand = context.createMetadata(MutableBeanMetadata.class);
+ subShellCommand.setId(getName());
+ subShellCommand.setRuntimeClass(BlueprintCommand.class);
+ subShellCommand.addProperty(BLUEPRINT_CONTAINER, createRef(context, BLUEPRINT_CONTAINER));
+ subShellCommand.addProperty(BLUEPRINT_CONVERTER, createRef(context, BLUEPRINT_CONVERTER));
+ subShellCommand.addProperty(ACTION_ID, createIdRef(context, subShellAction.getId()));
+ context.getComponentDefinitionRegistry().registerComponentDefinition(subShellCommand);
+ // generate the sub-shell OSGi service
+ MutableServiceMetadata subShellCommandService = context.createMetadata(MutableServiceMetadata.class);
+ subShellCommandService.setActivation(MutableServiceMetadata.ACTIVATION_LAZY);
+ subShellCommandService.setId(subShellName);
+ subShellCommandService.setAutoExport(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES);
+ subShellCommandService.setServiceComponent(subShellCommand);
+ subShellCommandService.addServiceProperty(createStringValue(context, "osgi.command.scope"), createStringValue(context, "*"));
+ subShellCommandService.addServiceProperty(createStringValue(context, "osgi.command.function"), createStringValue(context, scope));
+ context.getComponentDefinitionRegistry().registerComponentDefinition(subShellCommandService);
}
private MutableBeanMetadata getInvocationValue(ParserContext context, String method, String className) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/582bf1d8/shell/console/src/main/resources/OSGI-INF/blueprint/shell-namespacehandler.xml
----------------------------------------------------------------------
diff --git a/shell/console/src/main/resources/OSGI-INF/blueprint/shell-namespacehandler.xml b/shell/console/src/main/resources/OSGI-INF/blueprint/shell-namespacehandler.xml
index be1dd92..b2b5566 100644
--- a/shell/console/src/main/resources/OSGI-INF/blueprint/shell-namespacehandler.xml
+++ b/shell/console/src/main/resources/OSGI-INF/blueprint/shell-namespacehandler.xml
@@ -33,4 +33,10 @@
</service-properties>
</service>
+ <service ref="namespaceHandler" interface="org.apache.aries.blueprint.NamespaceHandler">
+ <service-properties>
+ <entry key="osgi.service.blueprint.namespace" value="http://karaf.apache.org/xmlns/shell/v1.2.0" />
+ </service-properties>
+ </service>
+
</blueprint>
http://git-wip-us.apache.org/repos/asf/karaf/blob/582bf1d8/shell/console/src/main/resources/org/apache/karaf/shell/console/commands/karaf-shell-1.2.0.xsd
----------------------------------------------------------------------
diff --git a/shell/console/src/main/resources/org/apache/karaf/shell/console/commands/karaf-shell-1.2.0.xsd b/shell/console/src/main/resources/org/apache/karaf/shell/console/commands/karaf-shell-1.2.0.xsd
new file mode 100644
index 0000000..afc00f4
--- /dev/null
+++ b/shell/console/src/main/resources/org/apache/karaf/shell/console/commands/karaf-shell-1.2.0.xsd
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<!-- $Rev: 699828 $ $Date: 2008-09-28 16:35:27 +0200 (Sun, 28 Sep 2008) $ -->
+
+<xsd:schema xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ targetNamespace="http://karaf.apache.org/xmlns/shell/v1.2.0"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xsd:import namespace="http://www.osgi.org/xmlns/blueprint/v1.0.0"/>
+
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines the configuration elements for Apache Karaf commands support.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="command-bundle">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines a command bundle.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element ref="command" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="scan" type="Tscan"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="Tscan">
+ <xsd:restriction>
+ <xsd:simpleType>
+ <xsd:list itemType="Tpackage" />
+ </xsd:simpleType>
+ <xsd:minLength value="1" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="Tpackage">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\*|[a-z]+(\.[a-z]+)+(\.\*)?" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="command">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines a command.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <!--
+ NOTE: Not using an xsd:choice here, as I can't seem to figure out how to get it to properly
+ validate the min/max of the containted elements. W/o the xsd:choice the validation
+ works, though have to define elements in order :-(
+ -->
+ <xsd:element ref="action" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="documenter" minOccurs="0" maxOccurs="1"/>
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element ref="completer"/>
+ <xsd:element ref="completers"/>
+ </xsd:choice>
+ <xsd:element ref="optional-completers" minOccurs="0" maxOccurs="1"/>
+ <xsd:element ref="message-source" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:group name="commandComponentElements">
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines the valid elements for command components. This is based on beans:beanElements,
+ stripping off the bits which are not valid in the command component context.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="argument" type="bp:Targument"/>
+ <xsd:element name="property" type="bp:Tproperty"/>
+ <!--
+ NOTE: This seems to cause schema validation problems... not really sure why
+ <xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
+ -->
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:attributeGroup name="commandComponentAttributes">
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines the valid attributes for command components. This is based on beans:beanAttributes,
+ stripping off the bits which are not valid in the command component context.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="class" type="xsd:string"/>
+ <xsd:attribute name="depends-on" type="xsd:string"/>
+ <xsd:attribute name="init-method" type="xsd:string"/>
+ <xsd:attribute name="factory-method" type="xsd:string"/>
+ <xsd:attribute name="factory-bean" type="xsd:string"/>
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:attributeGroup>
+
+ <xsd:complexType name="commandComponent" abstract="true">
+ <xsd:annotation>
+ <xsd:documentation>
+ Support for command component elements, which are all basically just beans.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:group ref="commandComponentElements"/>
+ <xsd:attributeGroup ref="commandComponentAttributes"/>
+ </xsd:complexType>
+
+ <xsd:element name="action">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines a command action.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexContent>
+ <xsd:extension base="commandComponent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documenter">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines a command documenter.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexContent>
+ <xsd:extension base="commandComponent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="completer">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines a command completer.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexContent>
+ <xsd:extension base="commandComponent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="completers">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines a configurable command completer with a set of completers.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="bean" type="bp:Tbean"/>
+ <xsd:element name="ref" type="bp:Tref"/>
+ <xsd:element name="null" type="bp:Tnull"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="optional-completers">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines a configurable command completer with a set of completers.
+ These completers are used for option value completion.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexContent>
+ <xsd:extension base="bp:TtypedCollection">
+ <xsd:sequence>
+ <xsd:element name="entry" type="bp:TmapEntry" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="key-type" type="bp:Ttype" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="message-source">
+ <xsd:complexType>
+ <xsd:annotation>
+ <xsd:documentation>
+ Defines a command message source.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexContent>
+ <xsd:extension base="commandComponent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema>