When using a provider that finds components that in turn have dependencies to other
components, we build a cspec that has dependencies. At present, the Maven provider will set
the versionType attributes in such dependencies is set to default, i.e. OSGi. This will
sometimes fail since components in a maven repository might use version representations that
doesn't comply. The way we resolve that today is to use a CQUERY that contains a version
type override for those components but that's far from ideal (the generated CSPEC is still
not correct). A better approach would be to somehow control the generation of the version type.
A possible solution:
A provider could be equipped with automatic recognition of version types. We add a method to
each version type that answers yes or no to if a version is recognized. Any given version
would then be recognized by 1-M types (there will always be one since the string type
accepts all representations). In cases where more then 1 version type would recognize a
given version, we would consult a table describing version type priority. Highest priority wins.
The table could either be defined on a per provider basis or in a broader scope using
properties (scoped by rmap, site, cquery).
I though about extending the version type extension point with a 'defaultPriority' but
priority conflicts may arise since we don't maintain a global repository of all version
types. Another con is that different users might have different preferences.