blob: 8c41b7fb886eb340e55e0cb8e57291e4c3ca1030 [file] [log] [blame]
tom0eb04ca2014-08-25 14:34:51 -07001package org.onlab.onos.cli;
2
3import org.apache.karaf.shell.console.OsgiCommandSupport;
tom0872a172014-09-23 11:24:26 -07004import org.onlab.osgi.DefaultServiceDirectory;
5import org.onlab.osgi.ServiceNotFoundException;
tom0eb04ca2014-08-25 14:34:51 -07006
7/**
8 * Base abstraction of Karaf shell commands.
9 */
10public abstract class AbstractShellCommand extends OsgiCommandSupport {
11
12 /**
tom6d2a43e2014-09-08 01:50:20 -070013 * Returns the reference to the implementation of the specified service.
tom0eb04ca2014-08-25 14:34:51 -070014 *
15 * @param serviceClass service class
16 * @param <T> type of service
17 * @return service implementation
18 */
tom6d2a43e2014-09-08 01:50:20 -070019 public static <T> T get(Class<T> serviceClass) {
tom0872a172014-09-23 11:24:26 -070020 return DefaultServiceDirectory.getService(serviceClass);
tom0eb04ca2014-08-25 14:34:51 -070021 }
22
tom6d2a43e2014-09-08 01:50:20 -070023 /**
24 * Prints the arguments using the specified format.
25 *
26 * @param format format string; see {@link String#format}
27 * @param args arguments
28 */
29 public static void print(String format, Object... args) {
30 System.out.println(String.format(format, args));
31 }
32
tom9eb57fb2014-09-11 19:42:38 -070033 /**
34 * Prints the arguments using the specified format to error stream.
35 *
36 * @param format format string; see {@link String#format}
37 * @param args arguments
38 */
39 public static void error(String format, Object... args) {
40 System.err.println(String.format(format, args));
41 }
42
tom0872a172014-09-23 11:24:26 -070043 /**
44 * Executes this command.
45 */
46 protected abstract void execute();
47
48 @Override
49 protected Object doExecute() throws Exception {
50 try {
51 execute();
52 } catch (ServiceNotFoundException e) {
53 error(e.getMessage());
54 }
55 return null;
56 }
57
tom0eb04ca2014-08-25 14:34:51 -070058}