void normalize() { for (ListIterator<Item> iterator = listIterator(size()); iterator.hasPrevious();) { Item item = iterator.previous(); if (item.isNull()) { iterator.remove(); // remove null trailing items: 0, "", empty list } else { break; } } }
items = new ListItem(); list.add(IntegerItem.ZERO); list.add(parseItem(isDigit, version.substring(startIndex, i))); list.add(IntegerItem.ZERO); list.add(parseItem(isDigit, version.substring(startIndex, i))); list.normalize(); // 1.0-* = 1-* list.add(list = new ListItem()); list.add(new StringItem(version.substring(startIndex, i), true)); startIndex = i; list.add(parseItem(true, version.substring(startIndex, i))); startIndex = i; list.add(parseItem(isDigit, version.substring(startIndex))); list.normalize(); canonical = items.toString();
@Override public String toString() { StringBuilder buffer = new StringBuilder("("); for (Iterator<Item> iter = iterator(); iter.hasNext();) { buffer.append(iter.next()); if (iter.hasNext()) { buffer.append(','); } } buffer.append(')'); return buffer.toString(); } }
@Override public int compareTo(ComparableVersion o) { return items.compareTo(o.items); }
@Override public boolean isNull() { return (size() == 0); }