felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Derek Baum <derek.b...@paremus.com>
Subject Re: Framework release coming soon
Date Fri, 28 May 2010 14:35:23 GMT
This solution seems to work OK.

I've just committed it as the fix for FELIX-2337.

Derek



On 28 May 2010 12:59, Derek Baum <derek.baum@paremus.com> wrote:

> 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 <heavy@ungoverned.org> 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<heavy@ungoverned.org>  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<heavy@ungoverned.org>
>>>>
>>>>
>>>>>  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
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message