Hello

Looks like I was anticipating such problem by adding "TOCHECK: last rule
wins - no break!!!" :)
The diff looks good - if all existing tests pass, I think we can merge it.
Could you please create KARAF jira issue for this?

best regards
Grzegorz Grzybek

wt., 5 mar 2019 o 18:27 Jean-Baptiste Onofré <j...@nanthrax.net> napisał(a):

> Thanks for sharing Daniel.
>
> I gonna take a look.
>
> Regards
> JB
>
> On 05/03/2019 18:19, Daniel Estermann wrote:
> > Hi everybody,
> >
> > we have the following override.properties:
> >
> >
> mvn:com.seeburger.portal/portal-backend-sdk/2.69.0-SNAPSHOT;range="[0,99999)"
> >
> mvn:com.seeburger.portal/portal-backend-sdk/2.69.0-SNAPSHOT/jar/karaf-migration;range="[0,99999)"
> >
> > which are supposed to do the following replacements:
> >
> > portal-backend-sdk/2.68.3 -> portal-backend-sdk/2.69.0-SNAPSHOT
> >
> > and
> >
> > portal-backend-sdk/2.68.3/jar/karaf-migration ->
> > portal-backend-sdk/2.69.0-SNAPSHOT/jar/karaf-migration
> >
> > But the method
> >
> org.apache.karaf.features.internal.service.FeaturesProcessorImpl.staticOverrideBundle(Bundle)
> > <
> https://github.com/apache/karaf/blob/master/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessorImpl.java#L225
> >
> > replaces portal-backend-sdk/2.68.3/jar/karaf-migration with
> > mvn:com.seeburger.portal/portal-backend-sdk/2.69.0-SNAPSHOT, i.e. a
> > classified artifact gets replaced with an artifact without classifier.
> This
> > happens because the implementation of
> > org.apache.karaf.features.LocationPattern
> > <
> https://github.com/apache/karaf/blob/master/features/core/src/main/java/org/apache/karaf/features/LocationPattern.java#L151
> >
> > allows matching of classified URI by a non-classified pattern. The
> > LocationPatternTest indicates that this is an intentional behavior: see
> > line 112
> > <
> https://github.com/apache/karaf/blob/master/features/core/src/test/java/org/apache/karaf/features/internal/service/LocationPatternTest.java#L112
> >,
> > 115
> > <
> https://github.com/apache/karaf/blob/master/features/core/src/test/java/org/apache/karaf/features/internal/service/LocationPatternTest.java#L115
> >,
> > 116
> > <
> https://github.com/apache/karaf/blob/master/features/core/src/test/java/org/apache/karaf/features/internal/service/LocationPatternTest.java#L116
> >
> > .
> >
> > I can understand why LocationPattern is implemented like that. But then
> my
> > guess is that FeaturesProcessorImpl is incorrect. By the way an
> interesting
> > comment there: *TOCHECK: last rule wins - no break!!!* Last rule doesn't
> > work for us so looks like now the time has come to check it. I think what
> > is crucial there, is that we shouldn't rely on the order of overrides,
> but
> > rather on their quality. I.e. not the first/last match is appropriate,
> but
> > the best one. I propose to collect candidates to match and then determine
> > the best one using simply the length as criterion.
> >
> > My proposal is already implemented in our fork and tested on my local
> > system (for now). Here you can see it:
> >
> https://github.com/seeburger-ag/karaf/commit/940911e8a8ccdb97d5cebf976e41747f1e7716a4
> >
> > I would appreciate to receive any feedback on this.
> >
> > Regards,
> > Daniel
> >
>

Reply via email to