yes.
Currently gogo converts any array result into a list (Closure.java:228):
if (last.result instanceof Object[])
{
return Arrays.asList((Object[]) last.result);
}
If it didn't do this, then
g! headers (bundles)
will work directly with any extra coercion being needed.
We would also need to allow a method to access arrays:
b = (bundles)
b1 = $b 1
(currently this is 'b1 = $b get 1', because b is converted to an array
list).
I'll test this locally, to check it doesn't break the tests or have any
obvious bad side effects.
Derek
On 28 May 2010 00:39, Richard S. Hall <[email protected]> wrote:
> Do you have a suggestion for a quick fix before we try to release?
>
> The plan was to cut a release on Sunday...
>
> -> richard
>
>
> On 5/27/10 7:33 PM, Derek Baum wrote:
>
>> Further investigation shows:
>>
>> g! type bundles
>> bundles is Bundle[] context:bundles()
>> true
>>
>> g! type headers
>> headers is void felix:headers(Bundle[])
>> true
>>
>> // so bundles appears to return the Bundle[] type required by the headers
>> command
>>
>> g! b = (bundles)
>> 0|Active | 0|org.apache.felix.framework (2.0.4)
>> 1|Active | 1|org.apache.felix.gogo.command (0.5.0.SNAPSHOT)
>> 2|Active | 1|org.apache.felix.gogo.runtime (0.5.0.SNAPSHOT)
>> 3|Active | 1|org.apache.felix.gogo.shell (0.5.0.SNAPSHOT)
>>
>> g! set b
>> ArrayList b [org.apache.felix.framework [0],
>> org.apache.f...
>>
>>
>> // but the result is actually converted into an ArrayList
>> // and the current coercion mechanism is failing to convert the ArrayList
>> back to the required Array[]
>>
>> // explicit conversion works, but should not be necessary:
>>
>> g! ba = $b toarray
>> 0|Active | 0|org.apache.felix.framework (2.0.4)
>> 1|Active | 1|org.apache.felix.gogo.command (0.5.0.SNAPSHOT)
>> 2|Active | 1|org.apache.felix.gogo.runtime (0.5.0.SNAPSHOT)
>> 3|Active | 1|org.apache.felix.gogo.shell (0.5.0.SNAPSHOT)
>>
>> g! set ba
>> Bundle[] ba [Lorg.osgi.framework.Bundle;@67d225a7
>> g! headers $ba
>>
>> System Bundle (0)
>> -----------------
>> Bundle-Description = This bundle is system specific; it implements various
>> system services.
>> // etc
>>
>>
>> Note: https://issues.apache.org/jira/browse/FELIX-2337 is also related to
>> this, as
>>
>> x = command args
>>
>> can set x to an array[], while
>>
>> x = (command args)
>>
>> will always convert the result to an ArrayList.
>>
>> ArrayLists are undoubtedly more "useful", but I wonder whether array[]
>> results should be automatically converted to ArrayLists, rather than just
>> coerced as needed, like any other type.
>>
>>
>> Derek
>>
>> On 28 May 2010 00:12, Richard S. Hall<[email protected]> wrote:
>>
>>
>>
>>> On 5/27/10 7:10 PM, Guillaume Nodet wrote:
>>>
>>>
>>>
>>>> It seems the new coercion mechanism is a bit flawed:
>>>>
>>>> g! headers (bundles)
>>>> gogo: IllegalArgumentException: Cannot coerce
>>>> headers[[org.apache.felix.framework [0],
>>>> org.apache.felix.bundlerepository
>>>> [1], org.apache.felix.gogo.command [2], org.apache.felix.gogo.runtime
>>>> [3],
>>>> org.apache.felix.gogo.shell [4]]] to any of [(Bundle[])]
>>>>
>>>> That should work without problems. The coercer needs to be enhacned with
>>>> the
>>>> following code:
>>>>
>>>>
>>>>
>>>> http://svn.apache.org/repos/asf/felix/trunk/gogo/commands/src/main/java/org/apache/felix/gogo/commands/converter/DefaultConverter.java
>>>>
>>>>
>>>>
>>>>
>>> Thanks. I will try to look into it tomorrow.
>>>
>>> -> richard
>>>
>>>
>>> On Thu, May 27, 2010 at 20:49, Richard S. Hall<[email protected]>
>>>
>>>
>>>> wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> So, we are gearing up to release the 3.0 version of the framework. As
>>>>> part
>>>>> of this release, we're going to include Gogo as the default shell in
>>>>> the
>>>>> framework binary distribution. Gogo requires Java 5 or later, but don't
>>>>> worry, the framework still targets lesser JREs. :-)
>>>>>
>>>>> I've uploaded a snapshot of the distribution in tar.gz and zip if
>>>>> anyone
>>>>> wants to play with it:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> https://repository.apache.org/content/groups/snapshots-group/org/apache/felix/org.apache.felix.main.distribution/2.1.0-SNAPSHOT/
>>>>>
>>>>> Word of warning, the "ps" command has been renamed to "lb" (i.e., list
>>>>> bundles)...type "help" to see available commands.
>>>>>
>>>>> -> richard
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>