A few things that would be missing imho to make that interesting:
  * parameters annotation to mark parameters as optional or multi-valued
  * flag and option could be merged (they are the same, maybe use an enum
value on the annotation to differentiate them and maybe have a smart default
value based on the fact that the annotated parameter is a boolean or not)
  * option should support a list of value
  * options should have multiple names (annotations support String[] quite
well)
  * if we want to add some help information, we need an annotation on the
method
  * we have a nice coercion mechanism defined in blueprint (handling
generics, collections and such), we should  reuse it (without having a
dependency to blueprint)

On Mon, May 3, 2010 at 23:25, Richard S. Hall <he...@ungoverned.org> wrote:

> On 5/3/10 16:56, Guillaume Nodet wrote:
>
>> On Mon, May 3, 2010 at 21:17, Richard S. Hall<he...@ungoverned.org>
>>  wrote:
>>
>>
>>
>>> On 5/3/10 14:51, Guillaume Nodet wrote:
>>>
>>>
>>>
>>>> What are those annotations suppose to actually provide ?  It seems all
>>>> they
>>>> can do is provide some basic help to the user, but does not really help
>>>> the
>>>> user writing complex commands and dealing with complex arguments.
>>>>
>>>> Have a look at an existing example:
>>>>
>>>>
>>>>
>>>> http://svn.apache.org/repos/asf/felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/GrepAction.java
>>>>
>>>> I think those annotations would not provide the slightest help in
>>>> analyzing
>>>> such a command line.
>>>>
>>>>
>>>>
>>>>
>>> I don't think there will ever be a single solution that can help everyone
>>> implement any possible command. If people need to do something that is
>>> super
>>> complex, then they can always fall back to parsing their own arguments.
>>>
>>>
>>>
>> I can agree to that, but then I don't see why it has to be in the proposed
>> spec.  Having it as a separate module might be a better approach then.
>>
>>
>
> The issue is you cannot easily do what we are trying to achieve in a
> separate module since it is modifying how the runtime coerces arguments when
> invoking methods. There is no place to hook into this externally. However, I
> agree that it could be just an implementation-specific feature of the Gogo
> runtime.
>
> I actually talked with Peter specifically about this and he felt the
> feature might be worthwhile for the spec, which is why he committed it
> there, but nothing is set in stone at this point.
>
> -> richard
>
>
>
>>
>>
>>> At this point, we're just messing around with allowing optional method
>>> parameters and out of order specification of arguments.
>>>
>>> ->  richard
>>>
>>>
>>>  On Mon, May 3, 2010 at 19:01,<pkri...@apache.org>   wrote:
>>>
>>>
>>>>
>>>>
>>>>
>>>>
>>>>> Author: pkriens
>>>>> Date: Mon May  3 17:01:53 2010
>>>>> New Revision: 940514
>>>>>
>>>>> URL: http://svn.apache.org/viewvc?rev=940514&view=rev
>>>>> Log:
>>>>> Annotations for parameters
>>>>>
>>>>> Added:
>>>>>
>>>>>
>>>>>
>>>>>  felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Flag.java
>>>>>
>>>>>
>>>>>
>>>>>  
>>>>> felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Option.java
>>>>>
>>>>> Added:
>>>>>
>>>>> felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Flag.java
>>>>> URL:
>>>>>
>>>>>
>>>>> http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Flag.java?rev=940514&view=auto
>>>>>
>>>>>
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>>
>>>>> felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Flag.java
>>>>> (added)
>>>>> +++
>>>>>
>>>>> felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Flag.java
>>>>> Mon May  3 17:01:53 2010
>>>>> @@ -0,0 +1,6 @@
>>>>> +package org.osgi.service.command;
>>>>> +
>>>>> +public @interface Flag {
>>>>> +       String name();
>>>>> +       String help() default "no help";
>>>>> +}
>>>>>
>>>>> Added:
>>>>>
>>>>>
>>>>> felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Option.java
>>>>> URL:
>>>>>
>>>>>
>>>>> http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Option.java?rev=940514&view=auto
>>>>>
>>>>>
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>>
>>>>>
>>>>> felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Option.java
>>>>> (added)
>>>>> +++
>>>>>
>>>>>
>>>>> felix/trunk/gogo/runtime/src/main/java/org/osgi/service/command/Option.java
>>>>> Mon May  3 17:01:53 2010
>>>>> @@ -0,0 +1,6 @@
>>>>> +package org.osgi.service.command;
>>>>> +
>>>>> +public @interface Option {
>>>>> +       String name();
>>>>> +       String dflt();
>>>>> +}
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>>
>


-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to