karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Denis Jouvin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KARAF-5202) Groovy and groovysh integration into Karaf console
Date Mon, 12 Jun 2017 16:18:00 GMT

    [ https://issues.apache.org/jira/browse/KARAF-5202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16046735#comment-16046735

Denis Jouvin commented on KARAF-5202:

Here is the help from the Groovy side, including help on the 3 OSGi and Karaf related Groovy
commands introduced in my prototype implementation ({{:osgi-service}}, {{:blueprint}} and

The 2 first commands (prefixed with {{get}} and in camel-case), are also available as Groovy
closures (accessible from the current Groovysh session binding).

groovy:000> :help

Available commands:
  :help          (:h ) Display this help message
  ?              (:? ) Alias to: :help
  :exit          (:x ) Exit the shell
  :quit          (:q ) Alias to: :exit
  import         (:i ) Import a class into the namespace
  :display       (:d ) Display the current buffer
  :clear         (:c ) Clear the buffer and reset the prompt counter
  :show          (:S ) Show variables, classes or imports
  :inspect       (:n ) Inspect a variable or the last result with the GUI object browser
  :purge         (:p ) Purge variables, classes, imports or preferences
  :edit          (:e ) Edit the current buffer
  :load          (:l ) Load a file or URL into the buffer
  .              (:. ) Alias to: :load
  :save          (:s ) Save the current buffer to a file
  :record        (:r ) Record the current session to a file
  :history       (:H ) Display, manage and recall edit-line history
  :alias         (:a ) Create an alias
  :set           (:= ) Set (or list) preferences
  :register      (:rc) Register a new command with the shell
  :doc           (:D ) Open a browser window displaying the doc for the argument
  :osgi-service  (:os) Resolve an OSGi service and assign it to a variable
  :blueprint     (:bp) Resolve a blueprint container and assign it to a variable
  :karaf         (:k ) Executes a Karaf command (from current Karaf session)

For help on a specific command type:
    :help command

groovy:000> :help :karaf

usage: :karaf [<arg1> [<arg2> [...]]]

Executes a Karaf command from the current Karaf session.Arguments are passed through without
 (un)escaping or (un)quoting that may happen atGroovy or Karaf side. A trick is to escape
 arguments in single-quotes and vice versa.

groovy:000> :help :osgi-service

usage: :osgi-service <variableName> <serviceInterface> [<ldapFilter>]

Resolve the best matching OSGi service with the given interface, (i.e. with the highest ranking
 if equal, lowest ID), possibly using the given LDAP filter if any, and bind it a local variable

groovy:000> :help :blueprint

usage: :blueprint <variableName> <bundleSymbolicName> [<bundleVersion>]

Resolves the blueprint container OSGi service for the given bundle  symbolic name (and version
 if specified), and binds it to a shell variable.

> Groovy and groovysh integration into Karaf console
> --------------------------------------------------
>                 Key: KARAF-5202
>                 URL: https://issues.apache.org/jira/browse/KARAF-5202
>             Project: Karaf
>          Issue Type: New Feature
>          Components: karaf-shell
>            Reporter: Denis Jouvin
>            Assignee: Jean-Baptiste Onofré
>            Priority: Minor
>              Labels: Groovy, Groovysh, Karaf, ShellCommands
> The idea is to integrate Groovy into Karaf as an alternative scripting and/or interactive
shell language. Since Groovysh also uses JLine, integration is quite easy (pass the current
Jline console/session instance to Groovysh at construction time). There are some class loading
issues though since Groovy uses sometimes the TCCL even when we instruct it to use a given
class loader (I opened a Groovy JIRA issue about that).
> The Groovysh shell then would allow to get OSGi service reference or Blueprint/Spring
context references, or execute Karaf commands. Groovysh has a very nice command completion
feature that enable to discover any objet (including OSGi service instance) API at runtime,
which makes it very easy to play with in a dynamic environment like Karaf. In addition, its
native closures and set operations, and very concise syntaxe, facilitates its use as a shell
> This open nice possibilites like exploratory programming on a live running Karaf instance,
scripting, tests or analysis, etc.
> Another common use case is to modify a not yet parameterized value in a Blueprint or
Spring context at runtime (you can browse or access the Blueprint context components, and
reinstaciate them or inject properties).

This message was sent by Atlassian JIRA

View raw message