public void enforceVersion( Log log, String variableName, String requiredVersionRange, ArtifactVersion actualVersion )
throws EnforcerRuleException
{
if ( StringUtils.isEmpty( requiredVersionRange ) )
{
throw new EnforcerRuleException( variableName + " version can't be empty." );
}
else
{
VersionRange vr;
String msg = "Detected " + variableName + " Version: " + actualVersion;
// short circuit check if the strings are exactly equal
if ( actualVersion.toString().equals( requiredVersionRange ) )
{
log.debug( msg + " is allowed in the range " + requiredVersionRange + "." );
}
else
{
try
{
vr = VersionRange.createFromVersionSpec( requiredVersionRange );
if ( containsVersion( vr, actualVersion ) )
{
log.debug( msg + " is allowed in the range " + requiredVersionRange + "." );
}
else
{
if ( StringUtils.isEmpty( message ) )
{
message = msg + " is not in the allowed range " + vr + ".";
}
throw new EnforcerRuleException( message );
}
}
catch ( InvalidVersionSpecificationException e )
{
throw new EnforcerRuleException( "The requested " + variableName + " version " +
requiredVersionRange + " is invalid.", e );
}
}
}
}