diff --git a/src/main/java/eu/europa/ted/eforms/sdk/SdkVersion.java b/src/main/java/eu/europa/ted/eforms/sdk/SdkVersion.java index d539f00..d7971f4 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/SdkVersion.java +++ b/src/main/java/eu/europa/ted/eforms/sdk/SdkVersion.java @@ -14,11 +14,15 @@ public class SdkVersion implements Comparable { private final Semver version; + private static final String SDK_PREFIX = "eforms-sdk-"; + public SdkVersion(final String version) { Validate.notBlank(version, "Undefined version"); + String normalized = version.startsWith(SDK_PREFIX) ? version.substring(SDK_PREFIX.length()) : version; + // LOOSE because we need to accept MAJOR.MINOR - this.version = new Semver(version, SemverType.LOOSE); + this.version = new Semver(normalized, SemverType.LOOSE); // Check that we did get a MINOR part Validate.notNull(this.version.getMinor()); diff --git a/src/main/java/eu/europa/ted/eforms/sdk/component/SdkComponentFactory.java b/src/main/java/eu/europa/ted/eforms/sdk/component/SdkComponentFactory.java index 5c91764..80a3482 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/component/SdkComponentFactory.java +++ b/src/main/java/eu/europa/ted/eforms/sdk/component/SdkComponentFactory.java @@ -10,6 +10,7 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Stream; +import eu.europa.ted.eforms.sdk.SdkVersion; import org.reflections.Reflections; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; @@ -174,19 +175,11 @@ protected T getComponentImpl(String sdkVersion, final SdkComponentType compo } private static String normalizeVersion(final String sdkVersion) { - String normalizedVersion = sdkVersion; - - if (normalizedVersion.startsWith("eforms-sdk-")) { - normalizedVersion = normalizedVersion.substring(11); + SdkVersion version = new SdkVersion(sdkVersion); + int major = Integer.parseInt(version.getMajor()); + if (major > 0) { + return version.getMajor(); } - - String[] numbers = normalizedVersion.split("\\.", -2); - - if (numbers.length < 1) { - throw new IllegalArgumentException("Invalid SDK version: " + sdkVersion); - } - - return numbers[0] - + ((numbers.length > 1 && Integer.parseInt(numbers[0]) > 0) ? "" : "." + numbers[1]); + return version.getMajor() + "." + version.getMinor(); } }