[ 
https://issues.apache.org/jira/browse/FELIX-5970?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16726854#comment-16726854
 ] 

Timothy Ward commented on FELIX-5970:
-------------------------------------

{quote}I've implemented it slightly differently. There's a gogo specific 
namespace called {{org.apache.felix.gogo}} and it is used to resolve the Gogo 
_love triangle_ (runtime, shell impl, command.)
{quote}
 

I'm not sure why this approach was taken. Gogo commands use a whiteboard model 
and so as someone contributing a Gogo command I would expect to use the 
osgi.implementation namespace to pull in a whiteboard implementation. 

I can understand that if you want to start doing *deep shell* work with live 
input or changing the colour of the text then you need something more akin to 
the model that you have defined, but what if I just want to provide a command 
that could be used with vanilla Gogo or JLine Gogo?

 

For something nicely usable I would expect to see the following annotations:

{{@Requirement(namespace="osgi.implementation" name="felix.gogo.command", 
version=1.0.0)}}

{{public @interface RequireCommandWhiteboard \{ }}}

 

{{@RequireCommandWhiteboard}}

{{@ComponentPropertyType}}

{{public @interface GogoCommand {}}{{    }}

{{    public static final String _PREFIX = "osgi.command.";}}{{    }}

{{    public String scope();}}{{    }}

{{    public String[] function();}}

{{}}}

 

These would then be used as follows:

 

{{@GogoCommand(scope="foo" function=\{"bar", "baz"})}}

{{@Component(service=MyCommand.class)}}

{{public class MyCommand {}}

{{    public String bar() \{ ... }}}

{{    public String baz(int n) \{ ... }}}

{{}}}

> Add requirement & capabilities model so gogo can be resolved
> ------------------------------------------------------------
>
>                 Key: FELIX-5970
>                 URL: https://issues.apache.org/jira/browse/FELIX-5970
>             Project: Felix
>          Issue Type: Improvement
>          Components: Gogo Command, Gogo JLine, Gogo Runtime, Gogo Shell
>            Reporter: Raymond Augé
>            Assignee: Raymond Augé
>            Priority: Major
>             Fix For: gogo.command-1.1.0, gogo.runtime-1.1.2, 
> gogo.shell-1.1.2, gogo.jline-1.1.2
>
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to