[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] Strange issue with GoGo + java8 and Oxygen

Hello again,

I've discovered that the problem is only occurring while running Equinox inside Eclipse IDE using both bundlerepository 2.0.8 and 2.0.9-SNAPSHOT.Â

I have setup an external environment and used the contents below in the config.ini:

osgi.bundles=bundles/org.eclipse.equinox.console@start, bundles/org.apache.felix.gogo.command@start, bundles/org.apache.felix.gogo.shell@start, bundles/org.apache.felix.gogo.runtime@start, bundles/org.apache.felix.bundlerepository@start
osgi.noShutdown=true
eclipse.ignoreApp=true

Then I added a couple of R5 repositories with "obr:repos add file:/repositoryR5.zip" and then called "obr:list" and the error is not occurring at all...

Why would Java8 SDK's method.getParameterAnnotations() calls would give different result while running at IDE? =-O

best,

Cristiano
On 17/04/2017 15:40, Cristiano GaviÃo wrote:

Hello,

Today I needed to use console in order to do some debug at IDE. So, I started an OSGi Framework launch and used obr:list command from bundlerepository bundle.

Strangely, I received this: "gogo: IllegalArgumentException: Cannot coerce list() to any of [(boolean, String[])]"

I did some investigation and discovered that the cause of such error is in org.apache.felix.gogo.runtime.Reflective class. Specifically here:

ÂÂÂ

ÂÂÂ private static List<Object> transformParameters(Method method, List<Object> in)
ÂÂÂ {
ÂÂÂÂÂÂÂ Annotation[][] pas = method.getParameterAnnotations();
ÂÂÂÂÂÂÂ ArrayList<Object> out = new ArrayList<Object>();


The matrix returned by method.getParameterAnnotations() contains two empty arrays ! So any transformation can be done and then the command fails.

Has anyone seen an issue like that before ?


PS. I was not able to experiment with a more recent GoGo version because since its 1.0.0 version, a different export-package is provided (without 'status=provisional') and is not accepted by equinox.


best,

Cristiano