@Override public int compareTo(IdRange range2) { // Correctly sort and respect "*" and "*:*" ranges. See IMAP-289 if (getLowVal() == Long.MAX_VALUE && getHighVal() == Long.MAX_VALUE && range2.getLowVal() == Long.MAX_VALUE && range2.getHighVal() == Long.MAX_VALUE) { return 0; } if (getLowVal() == Long.MAX_VALUE && getHighVal() == Long.MAX_VALUE) { return 1; } else if (range2.getLowVal() == Long.MAX_VALUE && range2.getHighVal() == Long.MAX_VALUE) { return -1; } else { return (int) (getLowVal() - range2.getLowVal()); } }
@Override public int compareTo(IdRange range2) { // Correctly sort and respect "*" and "*:*" ranges. See IMAP-289 if (getLowVal() == Long.MAX_VALUE && getHighVal() == Long.MAX_VALUE && range2.getLowVal() == Long.MAX_VALUE && range2.getHighVal() == Long.MAX_VALUE) { return 0; } if (getLowVal() == Long.MAX_VALUE && getHighVal() == Long.MAX_VALUE) { return 1; } else if (range2.getLowVal() == Long.MAX_VALUE && range2.getHighVal() == Long.MAX_VALUE) { return -1; } else { return (int) (getLowVal() - range2.getLowVal()); } }
/** * Return a read-only {@link Iterator} which contains all msn/uid which fail in the specified range. * * @return rangeIt */ @Override public Iterator<Long> iterator() { long from = getLowVal(); if (from == Long.MAX_VALUE) { from = 1; } long to = getHighVal(); return new RangeIterator(from, to); }
/** * Return a read-only {@link Iterator} which contains all msn/uid which fail in the specified range. * * @return rangeIt */ @Override public Iterator<Long> iterator() { long from = getLowVal(); if (from == Long.MAX_VALUE) { from = 1; } long to = getHighVal(); return new RangeIterator(from, to); }
IdRange current = copy.get(i); IdRange next = copy.get(i + 1); if (next.getLowVal() == Long.MAX_VALUE && next.getHighVal() == Long.MAX_VALUE) { if (lastUid) { copy.remove(next); if ((current.getLowVal() != Long.MAX_VALUE && current.getHighVal() != Long.MAX_VALUE) && (current.getHighVal() >= next.getLowVal() - 1)) { if (next.getHighVal() > current.getHighVal()) { current.setHighVal(next.getHighVal());
IdRange current = copy.get(i); IdRange next = copy.get(i + 1); if (next.getLowVal() == Long.MAX_VALUE && next.getHighVal() == Long.MAX_VALUE) { if (lastUid) { copy.remove(next); if ((current.getLowVal() != Long.MAX_VALUE && current.getHighVal() != Long.MAX_VALUE) && (current.getHighVal() >= next.getLowVal() - 1)) { if (next.getHighVal() > current.getHighVal()) { current.setHighVal(next.getHighVal());
/** * Test for https://issues.apache.org/jira/browse/IMAP-212 * @throws DecodingException */ @Test public void testRangeInRandomOrder() throws DecodingException { int val1 = 1; int val2 = 3; IdRange[] ranges1 = ranges(rangeAsString(val1, val2)); assertThat(ranges1.length).isEqualTo(1); assertThat(ranges1[0].getLowVal()).isEqualTo(val1); assertThat(ranges1[0].getHighVal()).isEqualTo(val2); IdRange[] ranges2 = ranges(rangeAsString(val2, val1)); assertThat(ranges2.length).isEqualTo(1); assertThat(ranges2[0].getLowVal()).isEqualTo(val1); assertThat(ranges2[0].getHighVal()).isEqualTo(val2); }
long low = r.getLowVal(); long high = r.getHighVal(); if (low == Long.MAX_VALUE || high == Long.MAX_VALUE) {
for (IdRange r : ranges) { long low = r.getLowVal(); long high = r.getHighVal(); if (low == Long.MAX_VALUE || high == Long.MAX_VALUE) {
if (selected.existsCount() > 0) { for (IdRange range : sequenceNumbers) { long lowVal = range.getLowVal(); long highVal = range.getHighVal();
final IdRange range = sequenceNumbers[i]; long lowVal = range.getLowVal(); long highVal = range.getHighVal(); if (useUids) {
@Test public void testRangeUnsigned() throws DecodingException { int val1 = 1; try { ranges(rangeAsString(0, val1)); fail("Expecting DecodingException"); } catch (DecodingException e) { // number smaller then 1 should not work } try { ranges(rangeAsString(Long.MAX_VALUE, val1)); fail("Expecting DecodingException"); } catch (DecodingException e) { // number smaller then 1 should not work } IdRange[] ranges2 = ranges(rangeAsString(ImapConstants.MIN_NZ_NUMBER, ImapConstants.MAX_NZ_NUMBER)); assertThat(ranges2.length).isEqualTo(1); assertThat(ranges2[0].getLowVal()).isEqualTo(ImapConstants.MIN_NZ_NUMBER); assertThat(ranges2[0].getHighVal()).isEqualTo(ImapConstants.MAX_NZ_NUMBER); }
/** * Return a {@link MessageRange} for the given values. If the MessageRange * can not be generated a {@link MailboxException} will get thrown */ protected MessageRange messageRange(SelectedMailbox selected, IdRange range, boolean useUids) throws MessageRangeException { long lowVal = range.getLowVal(); long highVal = range.getHighVal(); if (useUids == false) { return msnRangeToMessageRange(selected, lowVal, highVal); } else { if (selected.existsCount() <= 0) { return null; } // Take care of "*" and "*:*" values by return the last message in // the mailbox. See IMAP-289 MessageUid lastUid = selected.getLastUid().orElse(MessageUid.MIN_VALUE); if (lowVal == Long.MAX_VALUE && highVal == Long.MAX_VALUE) { return MessageRange.one(lastUid); } else if (highVal == Long.MAX_VALUE && lastUid.compareTo(MessageUid.of(lowVal)) < 0) { // Sequence uid ranges which use *:<uid-higher-then-last-uid> // MUST return at least the highest uid in the mailbox // See IMAP-291 return MessageRange.one(lastUid); } return MessageRange.range(MessageUid.of(lowVal), MessageUid.of(highVal)); } }
for ( int i = 0; i < uidSet.length; i++) { IdRange r = uidSet[i]; if (r.getLowVal() < firstUid) { if (r.getHighVal() > firstUid) { r.setLowVal(firstUid);
long lowVal = range.getLowVal(); long highVal = range.getHighVal();