You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2010/01/22 23:28:45 UTC
svn commit: r902296 - in
/felix/trunk/framework/src/main/java/org/apache/felix/framework:
FelixResolverState.java util/VersionRange.java
Author: rickhall
Date: Fri Jan 22 22:28:45 2010
New Revision: 902296
URL: http://svn.apache.org/viewvc?rev=902296&view=rev
Log:
Fixed some bugs and improved fragment version range intersection. (FELIX-1919)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/util/VersionRange.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java?rev=902296&r1=902295&r2=902296&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java Fri Jan 22 22:28:45 2010
@@ -466,20 +466,8 @@
// If the existing version range floor is greater than the additional
// version range's floor, then they are inconflict since we cannot
// widen the constraint.
- if (existing.getTargetVersionRange().getLow().compareTo(
- additional.getTargetVersionRange().getLow()) > 0)
- {
- return true;
- }
- // If the existing version range ceiling is less than the additional
- // version range's ceiling, then they are inconflict since we cannot
- // widen the constraint.
- if (((existing.getTargetVersionRange().getHigh() != null)
- && (additional.getTargetVersionRange().getHigh() == null))
- || ((existing.getTargetVersionRange().getHigh() != null)
- && (additional.getTargetVersionRange().getHigh() != null)
- && (existing.getTargetVersionRange().getHigh().compareTo(
- additional.getTargetVersionRange().getHigh()) < 0)))
+ if (!existing.getTargetVersionRange().intersects(
+ additional.getTargetVersionRange()))
{
return true;
}
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/util/VersionRange.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/util/VersionRange.java?rev=902296&r1=902295&r2=902296&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/util/VersionRange.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/util/VersionRange.java Fri Jan 22 22:28:45 2010
@@ -80,8 +80,37 @@
return (version.compareTo(m_low) > 0) && (version.compareTo(m_high) < 0);
}
+ public boolean intersects(VersionRange vr)
+ {
+ // Check to see if the passed in floor is less than or equal to
+ // this ceiling and the passed in ceiling is greater than or
+ // equal to this floor.
+ boolean isFloorLessThanCeiling = false;
+ if ((m_high == null)
+ || (m_high.compareTo(vr.getLow()) > 0)
+ || ((m_high.compareTo(vr.getLow()) == 0)
+ && m_isHighInclusive && vr.isLowInclusive()))
+ {
+ isFloorLessThanCeiling = true;
+ }
+ boolean isCeilingGreaterThanFloor = false;
+ if ((vr.getHigh() == null)
+ || (m_low.compareTo(vr.getHigh()) < 0)
+ || ((m_low.compareTo(vr.getHigh()) == 0)
+ && m_isLowInclusive && vr.isHighInclusive()))
+ {
+ isCeilingGreaterThanFloor = true;
+ }
+ return isFloorLessThanCeiling && isCeilingGreaterThanFloor;
+ }
+
public VersionRange intersection(VersionRange vr)
{
+ if (!intersects(vr))
+ {
+ return null;
+ }
+
VersionRange floor = (m_low.compareTo(vr.getLow()) > 0) ? this : vr;
boolean floorInclusive = (getLow().equals(vr.getLow()))
? (isLowInclusive() & vr.isLowInclusive())