All Downloads are FREE. Search and download functionalities are using the official Maven repository.

aQute.bnd.version.MavenVersionRange Maven / Gradle / Ivy

package aQute.bnd.version;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MavenVersionRange {
	static final Pattern	RESTRICTION_P	= Pattern.compile(""

			+ "\\s*("											//
			+ "("												//
			+ "(?
  • \\[|\\()\\s*" // + "(?[^,\\s\\]\\[()]*)\\s*" // + ",\\s*" // + "(?[^,\\s\\[\\]()]*)\\s*" // + "(?\\]|\\))" // + ")" // + "|" // + "(?[^,\\s\\]\\[()]+)" // + ")\\s*" // + "(?,)?\\s*", Pattern.COMMENTS); final boolean li; final boolean hi; final MavenVersion low; final MavenVersion high; MavenVersionRange nextOr; public MavenVersionRange(String range) { this(RESTRICTION_P.matcher(range == null ? "0" : range)); } private MavenVersionRange(Matcher m) { if (!m.lookingAt()) throw new IllegalArgumentException("Invalid version range " + m); String single = m.group("single"); if (single != null) { li = true; low = new MavenVersion(single); high = MavenVersion.HIGHEST; hi = true; } else { li = m.group("li").equals("["); hi = m.group("hi").equals("]"); low = MavenVersion.parseMavenString(m.group("low")); high = MavenVersion.parseMavenString(m.group("high")); } if (m.group("comma") != null) { m.region(m.end(), m.regionEnd()); nextOr = new MavenVersionRange(m); } else nextOr = null; } public boolean includes(MavenVersion mvr) { int l = mvr.compareTo(low); int h = mvr.compareTo(high); boolean lowOk = l > 0 || (li && l == 0); boolean highOk = h < 0 || (hi && h == 0); if (lowOk && highOk) return true; if (nextOr != null) return nextOr.includes(mvr); return false; } public String toString() { StringBuilder sb = new StringBuilder(); toString(sb); return sb.toString(); } private void toString(StringBuilder sb) { if (li) sb.append("["); else sb.append("("); sb.append(low); sb.append(","); sb.append(high); if (hi) sb.append("]"); else sb.append(")"); if (nextOr != null) { sb.append(","); nextOr.toString(sb); } } public static MavenVersionRange parseRange(String version) { try { return new MavenVersionRange(version); } catch (Exception e) { // ignore } return null; } public boolean wasSingle() { return (li && !hi && high == MavenVersion.HIGHEST && nextOr == null); } public static boolean isRange(String version) { if (version == null) return false; version = version.trim(); return version.startsWith("[") || version.startsWith("("); } }




  • © 2015 - 2025 Weber Informatics LLC | Privacy Policy