From 76328e15a369311d847c1674e4779675ef615948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Mon, 11 Apr 2022 19:48:24 +0200 Subject: [PATCH] Fix #876 - [2.7.1][regression] Neither raw version nor format was specified --- .../packaging/FeatureXmlTransformer.java | 55 +++++++------------ 1 file changed, 19 insertions(+), 36 deletions(-) diff --git a/tycho-packaging-plugin/src/main/java/org/eclipse/tycho/packaging/FeatureXmlTransformer.java b/tycho-packaging-plugin/src/main/java/org/eclipse/tycho/packaging/FeatureXmlTransformer.java index 276156b61d..c6f45451e0 100644 --- a/tycho-packaging-plugin/src/main/java/org/eclipse/tycho/packaging/FeatureXmlTransformer.java +++ b/tycho-packaging-plugin/src/main/java/org/eclipse/tycho/packaging/FeatureXmlTransformer.java @@ -77,8 +77,8 @@ public Feature expandReferences(Feature feature, TargetPlatform targetPlatform) String version = pluginRef.getVersion(); if (Version.emptyVersion.toString().equals(version)) { ImportRef importRef = pluginImports.get(pluginRef.getId()); - if (importRef != null) { - version = importRef.getVersion() + "|" + importRef.getMatch(); + if (isVersionedRef(importRef)) { + version = String.format("%s|%s", importRef.getVersion(), importRef.getMatch()); } } ArtifactKey plugin = resolvePluginReference(targetPlatform, pluginRef, version); @@ -95,8 +95,8 @@ public Feature expandReferences(Feature feature, TargetPlatform targetPlatform) String version = featureRef.getVersion(); if (Version.emptyVersion.toString().equals(version)) { ImportRef importRef = featureImports.get(featureRef.getId()); - if (importRef != null) { - version = importRef.getVersion() + "|" + importRef.getMatch(); + if (isVersionedRef(importRef)) { + version = String.format("%s|%s", importRef.getVersion(), importRef.getMatch()); } } ArtifactKey includedFeature = resolveFeatureReference(targetPlatform, featureRef, version); @@ -105,38 +105,21 @@ public Feature expandReferences(Feature feature, TargetPlatform targetPlatform) return feature; } -//from features action.... -// protected VersionRange getVersionRange(FeatureEntry entry) { -// String versionSpec = entry.getVersion(); -// if (versionSpec == null) -// return VersionRange.emptyRange; -// String match = entry.getMatch(); -// if ("versionRange".equals(match)) //$NON-NLS-1$ -// return VersionRange.create(versionSpec); -// Version version = Version.parseVersion(versionSpec); -// if (version.equals(Version.emptyVersion)) -// return VersionRange.emptyRange; -// if (!entry.isRequires()) -// return new VersionRange(version, true, version, true); -// if (match == null) -// // TODO should really be returning VersionRange.emptyRange here... -// return null; -// if (match.equals("perfect")) //$NON-NLS-1$ -// return new VersionRange(version, true, version, true); -// -// org.osgi.framework.Version osgiVersion = PublisherHelper.toOSGiVersion(version); -// if (match.equals("equivalent")) { //$NON-NLS-1$ -// Version upper = Version.createOSGi(osgiVersion.getMajor(), osgiVersion.getMinor() + 1, 0); -// return new VersionRange(version, true, upper, false); -// } -// if (match.equals("compatible")) { //$NON-NLS-1$ -// Version upper = Version.createOSGi(osgiVersion.getMajor() + 1, 0, 0); -// return new VersionRange(version, true, upper, false); -// } -// if (match.equals("greaterOrEqual")) //$NON-NLS-1$ -// return new VersionRange(version, true, Version.MAX_VERSION, true); -// return null; -// } + + private boolean isVersionedRef(ImportRef importRef) { + if (importRef == null) { + return false; + } + String version = importRef.getVersion(); + if (version == null || version.isEmpty()) { + return false; + } + String match = importRef.getMatch(); + if (match == null || match.isEmpty()) { + return false; + } + return true; + } private ArtifactKey resolvePluginReference(TargetPlatform targetPlatform, PluginRef pluginRef, String version) throws MojoFailureException {