if (isCeilingInclusive) { return floorVersion.equals(ceilingVersion); } else { new Version(floorVersion.getMajor(), floorVersion.getMinor(), floorVersion .getMicro(), floorVersion.getRevision() + 1); return adjacent1.compareTo(ceilingVersion) >= 0; new Version(floorVersion.getMajor(), floorVersion.getMinor(), floorVersion .getMicro(), floorVersion.getRevision() + 1); return adjacent1.equals(ceilingVersion); } else { new Version(floorVersion.getMajor(), floorVersion.getMinor(), floorVersion .getMicro(), floorVersion.getRevision() + 2); return adjacent2.compareTo(ceilingVersion) >= 0;
public String toString() { if (ceilingVersion != null) { StringBuilder sb = new StringBuilder(); sb.append(isFloorInclusive ? LEFT_CLOSED : LEFT_OPEN); sb.append(floorVersion.getVersion()).append(ENDPOINT_DELIMITER).append( ceilingVersion.getVersion()); sb.append(isCeilingInclusive ? RIGHT_CLOSED : RIGHT_OPEN); return sb.toString(); } else { return floorVersion.getVersion(); } } }
/** * Returns this version as a string. * * @return this version as a string. */ public String getVersion() { StringBuilder builder = new StringBuilder(); appendTo(builder); return builder.toString(); }
/** * Parses the passed version string. The string can contain up to * four numeric component separated by a dot, followed by an alphanumberic * qualifier prepended by a dash. For example, the following are valid * versions: * <ul> * <li>1</li> * <li>1.1</li> * <li>1.1.0</li> * <li>1.2.3-alpha</li> * <li>1.2.3.4-SNAPSHOT</li> * </ul> * * @param version the version string. */ public static Version parse(String version) { return new Version(parseInternal(version)); }
/** * Parses the manifest. * @return The manifest. Note that the classes/classloaders will * not be populated yet. That is to be done at a higher-level. * @throws ConfigurationException If there were any structural problems. */ public ConnectorBundleManifest parse() throws ConfigurationException { String frameworkVersion = getRequiredAttribute(ATT_FRAMEWORK_VERSION); String bundleName = getRequiredAttribute(ATT_BUNDLE_NAME); String bundleVersion =getRequiredAttribute(ATT_BUNDLE_VERSION); if (FrameworkUtil.getFrameworkVersion().compareTo(Version.parse(frameworkVersion)) < 0) { String message = "Bundle " + _fileName + " requests an unrecognized " + "framework version " + frameworkVersion + " but available is " + FrameworkUtil.getFrameworkVersion().getVersion(); throw new ConfigurationException(message); } ConnectorBundleManifest rv = new ConnectorBundleManifest(); rv.setFrameworkVersion(frameworkVersion); rv.setBundleName(bundleName); rv.setBundleVersion(bundleVersion); return rv; }
@Test public void testComponents() { Version v = Version.parse("1.2.3.4"); assertEquals(v.getMajor(), Integer.valueOf(1)); assertEquals(v.getMinor(), Integer.valueOf(2)); assertEquals(v.getMicro(), Integer.valueOf(3)); assertEquals(v.getRevision(), Integer.valueOf(4)); }
@Override public boolean equals(Object o) { if (o instanceof Version) { return compareTo((Version) o) == 0; } return false; }
/** * Parse version component into a Version. * * @param version * version component string * @param range * Complete range string for exception message, if any * @return Version */ private static Version parseVersion(String version, String range) { try { return Version.parse(version); } catch (IllegalArgumentException e) { throw new IllegalArgumentException( "invalid range \"" + range + "\": " + e.getMessage(), e); } }
@Test public void testParse() { assertEquals(new Version(1), Version.parse("1")); assertEquals(new Version(1), Version.parse("1-alpha")); assertEquals(new Version(1, 2), Version.parse("1.2")); assertEquals(new Version(1, 2), Version.parse("1.2-alpha")); assertEquals(new Version(1, 2, 3), Version.parse("1.2.3")); assertEquals(new Version(1, 2, 3), Version.parse("1.2.3-alpha")); assertEquals(new Version(1, 2, 3, 4), Version.parse("1.2.3.4")); assertEquals(new Version(1, 2, 3, 4), Version.parse("1.2.3.4-alpha")); }
/** * Returns this version number's minor component. * * @return the minor component or <code>null</code> if this version * number doesn't have a minor component. */ public Integer getMicro() { return getComponent(MICRO); }
/** * Creates a new version from components. * * @param components the components */ public static Version create(Integer... components) { return new Version(components); }
/** * Parses the manifest. * * @return The manifest. Note that the classes/classloaders will not be populated yet. That is to be done at a * higher-level. * @throws ConfigurationException if there were any structural problems. */ public ConnectorBundleManifest parse() throws ConfigurationException { String frameworkVersion = getRequiredAttribute(ATT_FRAMEWORK_VERSION); String bundleName = getRequiredAttribute(ATT_BUNDLE_NAME); String bundleVersion = getRequiredAttribute(ATT_BUNDLE_VERSION); if (FrameworkUtil.getFrameworkVersion().compareTo(Version.parse(frameworkVersion)) < 0) { String message = "Bundle " + fileName + " requests an unrecognized " + "framework version " + frameworkVersion + " but available is " + FrameworkUtil.getFrameworkVersion().getVersion(); throw new ConfigurationException(message); } ConnectorBundleManifest rv = new ConnectorBundleManifest(); rv.setFrameworkVersion(frameworkVersion); rv.setBundleName(bundleName); rv.setBundleVersion(bundleVersion); return rv; }
@Test public void testCornerCases() { Version v = Version.parse("1.0"); assertEquals(v.getMajor(), Integer.valueOf(1)); assertEquals(v.getMinor(), Integer.valueOf(0)); assertNull(v.getMicro()); assertNull(v.getRevision()); try { new Version(); fail(); } catch (IllegalArgumentException e) { // OK. } try { Version.parse(" "); fail(); } catch (IllegalArgumentException e) { // OK. } try { Version.parse("foo"); fail(); } catch (IllegalArgumentException e) { // OK. } }
@Override public boolean equals(Object o) { if (o instanceof Version) { return compareTo((Version) o) == 0; } return false; }
/** * Parse version component into a Version. * * @param version * version component string * @param range * Complete range string for exception message, if any * @return Version */ private static Version parseVersion(String version, String range) { try { return Version.parse(version); } catch (IllegalArgumentException e) { throw new IllegalArgumentException( "invalid range \"" + range + "\": " + e.getMessage(), e); } }
@Test public void testCompare() { assertCompEq(new Version(1), Version.parse("1")); assertCompEq(new Version(1, 2), Version.parse("1.2")); assertCompEq(new Version(1, 2, 3), Version.parse("1.2.3")); assertCompEq(new Version(1, 2, 3, 4), Version.parse("1.2.3.4")); assertCompEq(new Version(1), Version.parse("1.0")); assertCompEq(new Version(1), Version.parse("1.0.0")); assertCompEq(new Version(1), Version.parse("1.0.0.0")); assertCompEq(new Version(1, 2), Version.parse("1.2.0")); assertCompEq(new Version(1, 2), Version.parse("1.2.0.0")); assertCompEq(new Version(1, 2, 3), Version.parse("1.2.3.0")); assertCompLt(new Version(1, 2), Version.parse("1.3")); assertCompLt(new Version(1, 2, 3), Version.parse("1.2.4")); assertCompLt(new Version(1, 2, 3, 4), Version.parse("1.2.3.5")); assertCompLt(new Version(2), Version.parse("3")); assertCompLt(new Version(2), Version.parse("2.1")); assertCompLt(new Version(2, 3), Version.parse("2.3.4")); assertCompLt(new Version(2, 3, 4), Version.parse("2.3.4.5")); assertCompGt(new Version(1, 2), Version.parse("1.1")); assertCompGt(new Version(1, 2, 3), Version.parse("1.2.2")); assertCompGt(new Version(1, 2, 3, 4), Version.parse("1.2.3.3")); assertCompGt(new Version(2), Version.parse("1")); assertCompGt(new Version(2), Version.parse("1.0")); assertCompGt(new Version(2, 3), Version.parse("2.2.0")); assertCompGt(new Version(2, 3, 4), Version.parse("2.3.3.0")); }
/** * Parses the passed version string. The string can contain up to four * numeric component separated by a dot, followed by an alphanumberic * qualifier prepended by a dash. For example, the following are valid * versions: * <ul> * <li>1</li> * <li>1.1</li> * <li>1.1.0</li> * <li>1.2.3-alpha</li> * <li>1.2.3.4-SNAPSHOT</li> * </ul> * * @param version * the version string. */ public static Version parse(String version) { return new Version(parseInternal(version)); }