Add shell command support
Project: http://git-wip-us.apache.org/repos/asf/karaf-boot/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf-boot/commit/1683f3c2 Tree: http://git-wip-us.apache.org/repos/asf/karaf-boot/tree/1683f3c2 Diff: http://git-wip-us.apache.org/repos/asf/karaf-boot/diff/1683f3c2 Branch: refs/heads/master Commit: 1683f3c21489fd97eae4c5244cd65fe2f2e55c6a Parents: 8757712 Author: Jean-Baptiste Onofré <[email protected]> Authored: Tue Sep 29 15:38:51 2015 +0200 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Tue Sep 29 15:38:51 2015 +0200 ---------------------------------------------------------------------- .../README.md | 5 +- .../README.md | 2 + .../karaf-boot-sample-shell/README.md | 38 ++++++++++++++ .../karaf-boot-sample-shell/pom.xml | 53 ++++++++++++++++++++ .../main/java/sample/shell/HelloCommand.java | 47 +++++++++++++++++ .../karaf-boot-starter-shell/pom.xml | 41 +++++++++++++++ karaf-boot-starters/pom.xml | 1 + pom.xml | 1 + 8 files changed, 187 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf-boot/blob/1683f3c2/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/README.md ---------------------------------------------------------------------- diff --git a/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/README.md b/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/README.md index 93f69f7..f1f6370 100644 --- a/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/README.md +++ b/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/README.md @@ -24,7 +24,10 @@ To deploy in Karaf, you have to enable the DS support first. For that, you have feature:install scr -Once scr feature installed: +Once scr feature installed, you have to install a hello service provider. Please use any of karaf-boot-sample-service-provider-* +deployment first. + +Once the service provider is installed: * you can drop the generated jar file (target/karaf-boot-sample-service-consumer-ds-1.0.jar) in the Karaf deploy folder http://git-wip-us.apache.org/repos/asf/karaf-boot/blob/1683f3c2/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/README.md ---------------------------------------------------------------------- diff --git a/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/README.md b/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/README.md index 1684c81..02523d8 100644 --- a/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/README.md +++ b/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/README.md @@ -19,6 +19,8 @@ To build, simply do: = Deploy +You have to install a hello service provider first. Please deploy the karaf-boot-sample-service-provider-osgi first. + To deploy in Karaf: * you can drop the generated jar file (target/karaf-boot-sample-service-provider-osgi-1.0.jar) in the http://git-wip-us.apache.org/repos/asf/karaf-boot/blob/1683f3c2/karaf-boot-samples/karaf-boot-sample-shell/README.md ---------------------------------------------------------------------- diff --git a/karaf-boot-samples/karaf-boot-sample-shell/README.md b/karaf-boot-samples/karaf-boot-sample-shell/README.md new file mode 100644 index 0000000..5c9e40b --- /dev/null +++ b/karaf-boot-samples/karaf-boot-sample-shell/README.md @@ -0,0 +1,38 @@ +== karaf-boot-sample-shell == + +This sample provides new shell command in the Karaf shell console, that uses the hello service, provided by another +artifact (as karaf-boot-sample-service-provider-ds for instance). + += Design + +The shell commands are exposed using the Karaf shell annotations. + +A command is basically a class implementing Action interface, and we use @Service, @Command, @Argument, @Option Karaf +shell annotations. + +The @Reference annotation uses the hello service. + += Build + +To build, simply do: + + mvn clean install + += Deploy + +You have to install a hello service provider first. Please deploy karaf-boot-sample-service-provider-ds first. + +To deploy in Karaf: + +* you can drop the generated jar file (target/karaf-boot-sample-shell-1.0.jar) in the +Karaf deploy folder +* in the Karaf shell console, do: + + bundle:install -s mvn:karaf-boot-samples/karaf-boot-sample-shell/1.0 + += Usage + +Once deployed, you can use the sample:hello command like: + +karaf@root()> sample:hello world +Hello world ! http://git-wip-us.apache.org/repos/asf/karaf-boot/blob/1683f3c2/karaf-boot-samples/karaf-boot-sample-shell/pom.xml ---------------------------------------------------------------------- diff --git a/karaf-boot-samples/karaf-boot-sample-shell/pom.xml b/karaf-boot-samples/karaf-boot-sample-shell/pom.xml new file mode 100644 index 0000000..1df8632 --- /dev/null +++ b/karaf-boot-samples/karaf-boot-sample-shell/pom.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <!-- + + 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. + --> + + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.karaf.boot</groupId> + <artifactId>karaf-boot-sample-shell</artifactId> + <version>1.0.0-SNAPSHOT</version> + + <dependencies> + <dependency> + <groupId>org.apache.karaf.boot</groupId> + <artifactId>karaf-boot-starter-shell</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.boot</groupId> + <artifactId>karaf-boot-sample-service-provider-ds</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.karaf.boot</groupId> + <artifactId>karaf-boot-maven-plugin</artifactId> + <version>${project.version}</version> + <inherited>true</inherited> + <extensions>true</extensions> + </plugin> + </plugins> + </build> + +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/karaf-boot/blob/1683f3c2/karaf-boot-samples/karaf-boot-sample-shell/src/main/java/sample/shell/HelloCommand.java ---------------------------------------------------------------------- diff --git a/karaf-boot-samples/karaf-boot-sample-shell/src/main/java/sample/shell/HelloCommand.java b/karaf-boot-samples/karaf-boot-sample-shell/src/main/java/sample/shell/HelloCommand.java new file mode 100644 index 0000000..eb4a730 --- /dev/null +++ b/karaf-boot-samples/karaf-boot-sample-shell/src/main/java/sample/shell/HelloCommand.java @@ -0,0 +1,47 @@ +/** + * 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 sample.shell; + +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Option; +import org.apache.karaf.shell.api.action.lifecycle.Reference; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import sample.ds.service.provider.HelloService; + +@Service +@Command(scope = "sample", name = "hello", description = "The hello command") +public class HelloCommand implements Action { + + @Reference + public HelloService helloService; + + @Argument(index = 0, name = "arg", description = "This is the message argument", required = true, multiValued = false) + public String arg; + + @Option(name = "opt", description = "This is an option", required = false, multiValued = false) + public String opt; + + public Object execute() throws Exception { + if (opt != null) + System.out.println("Opt is " + opt); + System.out.println(helloService.hello(arg)); + return null; + } + +} http://git-wip-us.apache.org/repos/asf/karaf-boot/blob/1683f3c2/karaf-boot-starters/karaf-boot-starter-shell/pom.xml ---------------------------------------------------------------------- diff --git a/karaf-boot-starters/karaf-boot-starter-shell/pom.xml b/karaf-boot-starters/karaf-boot-starter-shell/pom.xml new file mode 100644 index 0000000..4c413a8 --- /dev/null +++ b/karaf-boot-starters/karaf-boot-starter-shell/pom.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <!-- + + 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. + --> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.karaf.boot</groupId> + <artifactId>karaf-boot-starters</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>karaf-boot-starter-shell</artifactId> + + <dependencies> + <dependency> + <groupId>org.apache.karaf.shell</groupId> + <artifactId>org.apache.karaf.shell.core</artifactId> + <version>${karaf.version}</version> + </dependency> + </dependencies> + +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/karaf-boot/blob/1683f3c2/karaf-boot-starters/pom.xml ---------------------------------------------------------------------- diff --git a/karaf-boot-starters/pom.xml b/karaf-boot-starters/pom.xml index 04f6ff4..379f140 100644 --- a/karaf-boot-starters/pom.xml +++ b/karaf-boot-starters/pom.xml @@ -34,6 +34,7 @@ <modules> <module>karaf-boot-starter</module> <module>karaf-boot-starter-ds</module> + <module>karaf-boot-starter-shell</module> </modules> </project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/karaf-boot/blob/1683f3c2/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 3650256..cb5e826 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,7 @@ <!-- blueprint --> <!-- cdi --> <!-- shell --> + <module>karaf-boot-samples/karaf-boot-sample-shell</module> <!-- config --> <!-- jpa --> <!-- servlet -->
