Przeglądaj źródła

More readable API than comparator for common floor operation (semantics-preserving)

tags/V1_1_0_RC2
wisberg 21 lat temu
rodzic
commit
5d8dd96b88

+ 1
- 1
bridge/src/org/aspectj/bridge/CountingMessageHandler.java Wyświetl plik

@@ -95,7 +95,7 @@ public class CountingMessageHandler implements IMessageHandler {
} else {
for (Iterator iter = IMessage.KINDS.iterator(); iter.hasNext();) {
IMessage.Kind k = (IMessage.Kind) iter.next();
if (0 >= IMessage.Kind.COMPARATOR.compare(kind, k)) {
if (kind.isSameOrLessThan(k)) {
result += numMessages(k);
}
}

+ 13
- 3
bridge/src/org/aspectj/bridge/IMessage.java Wyświetl plik

@@ -81,9 +81,9 @@ public interface IMessage {
Kind one = (Kind) o1;
Kind two = (Kind) o2;
if (null == one) {
return (null == two ? 0 : 1);
return (null == two ? 0 : -1);
} else if (null == two) {
return -1;
return 1;
} else if (one == two) {
return 0;
} else {
@@ -91,7 +91,17 @@ public interface IMessage {
}
}
};
/**
* @param kind the Kind floor
* @return false if kind is null or this
* has less precedence than kind,
* true otherwise.
*/
public boolean isSameOrLessThan(Kind kind) {
return (0 >= COMPARATOR.compare(this, kind));
}
public int compareTo(Object other) {
return COMPARATOR.compare(this, other);
}

+ 4
- 7
bridge/src/org/aspectj/bridge/MessageHandler.java Wyświetl plik

@@ -158,10 +158,9 @@ public class MessageHandler implements IMessageHolder {
}
}
} else {
final Comparator c = IMessage.Kind.COMPARATOR;
for (Iterator iter = messages.iterator(); iter.hasNext();) {
IMessage m = (IMessage) iter.next();
if (0 >= c.compare(kind, m.getKind())) {
if (kind.isSameOrLessThan(m.getKind())) {
return true;
}
}
@@ -184,10 +183,9 @@ public class MessageHandler implements IMessageHolder {
}
}
} else {
final Comparator c = IMessage.Kind.COMPARATOR;
for (Iterator iter = messages.iterator(); iter.hasNext();) {
IMessage m = (IMessage) iter.next();
if (0 >= c.compare(kind, m.getKind())) {
if (kind.isSameOrLessThan(m.getKind())) {
result++;
}
}
@@ -221,10 +219,9 @@ public class MessageHandler implements IMessageHolder {
}
}
} else {
final Comparator c = IMessage.Kind.COMPARATOR;
for (Iterator iter = messages.iterator(); iter.hasNext();) {
IMessage m = (IMessage) iter.next();
if (0 >= c.compare(kind, m.getKind())) {
IMessage m = (IMessage) iter.next();
if (kind.isSameOrLessThan(m.getKind())) {
result.add(m);
}
}

+ 6
- 6
bridge/src/org/aspectj/bridge/MessageUtil.java Wyświetl plik

@@ -522,15 +522,15 @@ public class MessageUtil {
final IMessage.Kind sought;
final boolean floor;
final String infix;
KindSelector(IMessage.Kind sought) {
this(sought, false);
}
KindSelector(IMessage.Kind sought, boolean floor) {
this(sought, floor, null);
}
KindSelector(IMessage.Kind sought, boolean floor, String infix) {
this.sought = sought;
this.floor = floor;
@@ -542,11 +542,11 @@ public class MessageUtil {
* or if this has the exact kind we seek
* and this has any text sought
*/
public boolean handleMessage(IMessage message) {
public boolean handleMessage(IMessage message) {
return ((null != message) && !isIgnoring(message.getKind())
&& textIn(message));
}
}
/** @return true if handleMessage would return false for a message of this kind */
public boolean isIgnoring(IMessage.Kind kind) {
if (!floor) {

+ 18
- 0
bridge/testsrc/org/aspectj/bridge/MessageTest.java Wyświetl plik

@@ -17,6 +17,7 @@ import java.io.File;
import java.util.Arrays;
import java.util.BitSet;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

@@ -70,6 +71,23 @@ public class MessageTest extends TestCase {
checkListOrder(IMessage.KINDS, IMessage.Kind.COMPARATOR);
}
public void testKind_isSameOrLessThan() {
IMessage.Kind last;
IMessage.Kind next = null;
for (Iterator iter = IMessage.KINDS.iterator(); iter.hasNext();) {
last = next;
next = (IMessage.Kind) iter.next();
if (null == last) {
continue;
}
String label = "last: " + last + " next: " + next;
assertTrue(label, !next.isSameOrLessThan(null));
assertTrue(label, !next.isSameOrLessThan(last));
assertTrue(label, last.isSameOrLessThan(next));
assertTrue(label, next.isSameOrLessThan(next));
}
}
public void testMessageHandler() {
boolean handleMessageResult = true;
checkEmptyMessageHolder(new MessageHandler(handleMessageResult), handleMessageResult);

Ładowanie…
Anuluj
Zapisz