You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2016/06/24 05:25:24 UTC
karaf git commit: [KARAF-4519] If an action does not have a @Command
annotation,
fallback to calling a description() method via reflection to get an Action's
description
Repository: karaf
Updated Branches:
refs/heads/karaf-4.0.x 4ebe53009 -> 2027b3de2
[KARAF-4519] If an action does not have a @Command annotation, fallback to calling a description() method via reflection to get an Action's description
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/2027b3de
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/2027b3de
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/2027b3de
Branch: refs/heads/karaf-4.0.x
Commit: 2027b3de286390bb48b344a78bc28a5458c7cf25
Parents: 4ebe530
Author: lburgazzoli <lb...@gmail.com>
Authored: Thu May 5 17:24:58 2016 +0200
Committer: Jean-Baptiste Onofr� <jb...@apache.org>
Committed: Fri Jun 24 07:01:24 2016 +0200
----------------------------------------------------------------------
.../karaf/shell/compat/CommandTracker.java | 31 +++++++++++++++-----
1 file changed, 23 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/2027b3de/shell/console/src/main/java/org/apache/karaf/shell/compat/CommandTracker.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/compat/CommandTracker.java b/shell/console/src/main/java/org/apache/karaf/shell/compat/CommandTracker.java
index 072857f..8891135 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/compat/CommandTracker.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/compat/CommandTracker.java
@@ -18,6 +18,7 @@
*/
package org.apache.karaf.shell.compat;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -25,13 +26,13 @@ import org.apache.felix.gogo.runtime.CommandProxy;
import org.apache.felix.service.command.CommandProcessor;
import org.apache.felix.service.command.CommandSession;
import org.apache.felix.service.command.Function;
-import org.apache.karaf.shell.api.console.Parser;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.CommandWithAction;
import org.apache.karaf.shell.api.console.CommandLine;
import org.apache.karaf.shell.api.console.Completer;
+import org.apache.karaf.shell.api.console.Parser;
import org.apache.karaf.shell.api.console.Session;
import org.apache.karaf.shell.api.console.SessionFactory;
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.CommandWithAction;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Filter;
import org.osgi.framework.ServiceReference;
@@ -39,7 +40,6 @@ import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
public class CommandTracker implements ServiceTrackerCustomizer<Object, Object> {
-
SessionFactory sessionFactory;
BundleContext context;
ServiceTracker<?, ?> tracker;
@@ -66,6 +66,7 @@ public class CommandTracker implements ServiceTrackerCustomizer<Object, Object>
@Override
public Object addingService(final ServiceReference reference) {
Object service = context.getService(reference);
+
if (service instanceof CommandWithAction) {
final CommandWithAction oldCommand = (CommandWithAction) service;
final org.apache.karaf.shell.api.console.Command command = new org.apache.karaf.shell.api.console.Command() {
@@ -84,9 +85,16 @@ public class CommandTracker implements ServiceTrackerCustomizer<Object, Object>
final Command cmd = oldCommand.getActionClass().getAnnotation(Command.class);
if (cmd != null) {
return cmd.description();
- } else {
- return getName();
}
+
+ try {
+ Method method = oldCommand.getActionClass().getMethod("description");
+ method.setAccessible(true);
+ return (String) method.invoke(oldCommand.createNewAction());
+ } catch (Throwable ignore) {
+ }
+
+ return getName();
}
@Override
@@ -132,9 +140,16 @@ public class CommandTracker implements ServiceTrackerCustomizer<Object, Object>
final org.apache.felix.gogo.commands.Command cmd = oldCommand.getActionClass().getAnnotation(org.apache.felix.gogo.commands.Command.class);
if (cmd != null) {
return cmd.description();
- } else {
- return getName();
}
+
+ try {
+ Method method = oldCommand.getActionClass().getMethod("description");
+ method.setAccessible(true);
+ return (String) method.invoke(oldCommand.createNewAction());
+ } catch (Throwable ignore) {
+ }
+
+ return getName();
}
@Override