Yes, varArgs work, but only for positional arguments. I'd like to have a
command with multiple optional parameters, each of which would take an
array or list as a value. But it seems it is not supported.

Best regards,
Dmitry.


On Thu, Feb 2, 2023 at 6:12 PM Alain Picard <apic...@benchmarkconsulting.com>
wrote:

> Can't really say about this exact case but I use the varArg form from Java
> and that works fine
>
> public void getById(
> @Parameter(names={"-t", "--tenant"}, absentValue="")
> @Descriptor(TENANT_DESCR + REQ) String tenantName,
> @Parameter(names="-ps", absentValue= "") @Descriptor(PS_DESCR) String
> psName,
> @Descriptor(IDS_DESCR) String... elementsId) {
> }
>
> Alain
>
> On Thu, Feb 2, 2023 at 5:12 AM Dmitry Savenko <dsave...@xored.com> wrote:
>
> > Hi,
> >
> > Is there a way to use arrays as @Parameters in GoGo? Consider this
> command:
> >
> >     @Descriptor("print array")
> >     public void print_array(@Parameter(names = { "--arr" }, absentValue =
> > "[5]") int[] arr, String header)
> >     {
> >         System.out.println(header);
> >         if (null != arr)
> >         {
> >             for (int i = 0; i < arr.length; ++i)
> >             {
> >                 System.out.println(arr[i]);
> >             }
> >         }
> >     }
> >
> > If I call it without --arr ("print_array a"), I get
> > java.lang.IllegalArgumentException: Cannot coerce print_array(Token) to
> any
> > of [(int[], String)]
> > at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:204)
> > at
> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:91)
> >
> > If I try to specify --arr ("print_array --arr [1 2] a"), I get
> > java.lang.ClassCastException: class [I cannot be cast to class
> > [Ljava.lang.Object; ([I is in module java.base of loader 'bootstrap')
> > at org.apache.felix.gogo.runtime.Reflective.coerce(Reflective.java:448)
> > at org.apache.felix.gogo.runtime.Reflective.docoerce(Reflective.java:367)
> > at org.apache.felix.gogo.runtime.Reflective.coerce(Reflective.java:306)
> > at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:116)
> > at
> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:91)
> >
> > Best regards,
> > Dmitry.
> >
>

Reply via email to