in src/main/java/org/apache/sling/testing/mock/sling/oak/impl/ComparableVersion.java [526:578]
public int compareTo( Item item )
{
if ( item == null )
{
if ( size() == 0 )
{
return 0; // 1-0 = 1- (normalize) = 1
}
// Compare the entire list of items with null - not just the first one, MNG-6964
for ( Item i : this )
{
int result = i.compareTo( null );
if ( result != 0 )
{
return result;
}
}
return 0;
}
switch ( item.getType() )
{
case INT_ITEM:
case LONG_ITEM:
case BIGINTEGER_ITEM:
return -1; // 1-1 < 1.0.x
case STRING_ITEM:
return 1; // 1-1 > 1-sp
case LIST_ITEM:
Iterator<Item> left = iterator();
Iterator<Item> right = ( (ListItem) item ).iterator();
while ( left.hasNext() || right.hasNext() )
{
Item l = left.hasNext() ? left.next() : null;
Item r = right.hasNext() ? right.next() : null;
// if this is shorter, then invert the compare and mul with -1
int result = l == null ? ( r == null ? 0 : -1 * r.compareTo( l ) ) : l.compareTo( r );
if ( result != 0 )
{
return result;
}
}
return 0;
default:
throw new IllegalStateException( "invalid item: " + item.getClass() );
}
}