@@ -15,6 +15,8 @@ package org.aspectj.ajde; | |||
import java.io.IOException; | |||
import java.util.List; | |||
import org.aspectj.bridge.IMessage; | |||
/** | |||
* @author colyer | |||
* | |||
@@ -25,10 +27,6 @@ public class CompilerMessagesTest extends AjdeTestCase { | |||
private final String CONFIG_FILE_PATH = "../examples/declare-warning/all.lst"; | |||
/** | |||
* Constructor for CompilerMessagesTest. | |||
* @param name | |||
*/ | |||
public CompilerMessagesTest(String name) { | |||
super(name); | |||
} | |||
@@ -44,24 +42,29 @@ public class CompilerMessagesTest extends AjdeTestCase { | |||
assertEquals("Two warning messages should be produced",2,msgs.size()); | |||
NullIdeTaskListManager.SourceLineTask task = | |||
(NullIdeTaskListManager.SourceLineTask) msgs.get(0); | |||
assertEquals( 8, task.location.getLine()); | |||
assertEquals( "Please don't call init methods", task.message); | |||
assertEquals( 8, task.getContainedMessage().getSourceLocation().getLine()); | |||
assertEquals( "Please don't call init methods", task.message.getMessage()); | |||
try { | |||
String fullyQualifiedFile = task.location.getSourceFile().getCanonicalPath(); | |||
String fullyQualifiedFile = task.getContainedMessage().getSourceLocation().getSourceFile().getCanonicalPath(); | |||
// this name has a tester specific prefix, followed by the location of the file. | |||
// we can validate the ending. | |||
fullyQualifiedFile = fullyQualifiedFile.replace('\\','/'); // ignore platform differences in slashes | |||
assertTrue( "Fully-qualified source file location returned", | |||
fullyQualifiedFile.endsWith("testdata/examples/declare-warning/apackage/SomeClass.java")); | |||
} catch (IOException ex) { | |||
assertTrue( "Unable to convert source file location: " + task.location.getSourceFile(), false); | |||
assertTrue( "Unable to convert source file location: " + task.getContainedMessage().getSourceLocation().getSourceFile(), false); | |||
} | |||
} | |||
public void testDeclareMessageContents() { | |||
List msgs = NullIdeManager.getIdeManager().getCompilationSourceLineTasks(); | |||
assertEquals( "Please don't call setters" , ((NullIdeTaskListManager.SourceLineTask) msgs.get(1)).message); | |||
IMessage msg = (IMessage)((NullIdeTaskListManager.SourceLineTask)msgs.get(1)).getContainedMessage(); | |||
assertEquals( "Please don't call setters" , msg.getMessage()); | |||
// assertEquals("extra info", msg.getCorrespondingJoinPoint()); | |||
// fail(); | |||
} | |||
@@ -43,8 +43,8 @@ public class NullIdeTaskListManager implements TaskListManager { | |||
if (!hasWarning && IMessage.WARNING.isSameOrLessThan(message.getKind())) { | |||
hasWarning = true; | |||
} | |||
System.out.println("> added sourceline task: " + message + ", file: " + message.getISourceLocation().getSourceFile().getAbsolutePath() | |||
+ ": " + message.getISourceLocation().getLine()); | |||
System.out.println("> added sourceline task: " + message + ", file: " + message.getSourceLocation().getSourceFile().getAbsolutePath() | |||
+ ": " + message.getSourceLocation().getLine()); | |||
} | |||
public void addProjectTask(String message, IMessage.Kind kind) { | |||
@@ -61,8 +61,7 @@ public class NullIdeTaskListManager implements TaskListManager { | |||
public void clearTasks() { | |||
sourceLineTasks = new ArrayList(); | |||
hasWarning = false; | |||
// System.out.println("> cleared tasks"); | |||
} | |||
} | |||
/** | |||
* Return the list of source line compiler messages resulting from a compile, so | |||
@@ -75,23 +74,24 @@ public class NullIdeTaskListManager implements TaskListManager { | |||
public static class SourceLineTask { | |||
public String message; | |||
public ISourceLocation location; | |||
public IMessage.Kind kind; | |||
IMessage message; | |||
public SourceLineTask(IMessage m) { | |||
message = m.getMessage(); | |||
location = m.getISourceLocation(); | |||
kind = m.getKind(); | |||
message = m; | |||
} | |||
public IMessage getContainedMessage() { | |||
return message; | |||
} | |||
public String toString() { | |||
String loc = "<no location"; | |||
if (null != location) { | |||
loc = location.getSourceFile() + ":" + location.getLine(); | |||
String loc = "<no location>"; | |||
if (null != message.getSourceLocation()) { | |||
loc = message.getSourceLocation().getSourceFile() + ":" + message.getSourceLocation().getLine(); | |||
} | |||
return "SourceLineTask [" + message | |||
return "SourceLineTask [" + message.getMessage() | |||
+ ", " + loc | |||
+ ", " + kind | |||
+ ", " + message.getKind() | |||
+ "]"; | |||
} | |||
} |
@@ -49,12 +49,12 @@ public class LstBuildConfigManagerTest extends AjdeTestCase { | |||
List messages = NullIdeManager.getIdeManager().getCompilationSourceLineTasks(); | |||
NullIdeTaskListManager.SourceLineTask message = (NullIdeTaskListManager.SourceLineTask)messages.get(0); | |||
assertEquals(message.location.getSourceFile().getAbsolutePath(), openFile("dir-entry.lst").getAbsolutePath()); | |||
assertEquals(message.getContainedMessage().getSourceLocation().getSourceFile().getAbsolutePath(), openFile("dir-entry.lst").getAbsolutePath()); | |||
doSynchronousBuild("bad-injar.lst"); | |||
messages = NullIdeManager.getIdeManager().getCompilationSourceLineTasks(); | |||
message = (NullIdeTaskListManager.SourceLineTask)messages.get(0); | |||
assertTrue(message.message.indexOf("invalid") != -1); | |||
assertTrue(message.getContainedMessage().getMessage().indexOf("invalid") != -1); | |||
} | |||
public void testErrorMessages() throws IOException { | |||
@@ -63,7 +63,7 @@ public class LstBuildConfigManagerTest extends AjdeTestCase { | |||
List messages = NullIdeManager.getIdeManager().getCompilationSourceLineTasks(); | |||
SourceLineTask message = (SourceLineTask)messages.get(0); | |||
assertEquals("invalid option: aaa.bbb", message.message); | |||
assertEquals("invalid option: aaa.bbb", message.getContainedMessage().getMessage()); | |||
} | |||
@@ -73,7 +73,7 @@ public interface IMessage { | |||
Throwable getThrown(); | |||
/** @return source location associated with this message, or null if none */ | |||
ISourceLocation getISourceLocation(); | |||
ISourceLocation getSourceLocation(); | |||
public static final class Kind implements Comparable { | |||
public static final Comparator COMPARATOR = new Comparator() { |
@@ -126,7 +126,7 @@ public class Message implements IMessage { // XXX toString or renderer? | |||
} | |||
/** @return ISourceLocation associated with this message, or null if none */ | |||
final public ISourceLocation getISourceLocation() { | |||
final public ISourceLocation getSourceLocation() { | |||
return sourceLocation; | |||
} | |||
@@ -135,7 +135,7 @@ public class Message implements IMessage { // XXX toString or renderer? | |||
} | |||
public static String renderToString(IMessage message) { | |||
ISourceLocation loc = message.getISourceLocation(); | |||
ISourceLocation loc = message.getSourceLocation(); | |||
String locString = (null == loc ? "" : " at " + loc); | |||
Throwable thrown = message.getThrown(); | |||
return message.getKind() + locString + ": " + message.getMessage() |
@@ -770,7 +770,7 @@ public class MessageUtil { | |||
result.append(" "); | |||
} | |||
ISourceLocation loc = message.getISourceLocation(); | |||
ISourceLocation loc = message.getSourceLocation(); | |||
if ((null != loc) && (loc != ISourceLocation.EMPTY)) { | |||
result.append("at " + renderSourceLocation(loc)); | |||
} | |||
@@ -849,7 +849,7 @@ public class MessageUtil { | |||
String text = message.getMessage(); | |||
Throwable thrown = message.getThrown(); | |||
ISourceLocation sl = message.getISourceLocation(); | |||
ISourceLocation sl = message.getSourceLocation(); | |||
IMessage.Kind kind = message.getKind(); | |||
StringBuffer result = new StringBuffer(); | |||
result.append(kind.toString()); |
@@ -223,7 +223,7 @@ public class MessageTest extends TestCase { | |||
assertTrue(""+kind, kind == m.getKind()); | |||
assertTrue(""+thrown, equals(thrown, m.getThrown())); | |||
assertTrue(""+sourceLocation, | |||
equals(sourceLocation, m.getISourceLocation())); | |||
equals(sourceLocation, m.getSourceLocation())); | |||
String err = new KindTest().testKindSet(message, kind); | |||
if (null != err) { | |||
assertTrue(err, false); |
@@ -403,7 +403,7 @@ public class Main { | |||
if (toString) { | |||
text = message.toString(); | |||
} | |||
ISourceLocation loc = message.getISourceLocation(); | |||
ISourceLocation loc = message.getSourceLocation(); | |||
String context = null; | |||
if (null != loc) { | |||
File file = loc.getSourceFile(); |
@@ -112,7 +112,7 @@ public abstract class CommandTestCase extends TestCase { | |||
boolean found = false; | |||
for (Iterator iter = errors.iterator(); iter.hasNext(); ) { | |||
IMessage m = (IMessage)iter.next(); | |||
if (m.getISourceLocation() != null && m.getISourceLocation().getLine() == line) { | |||
if (m.getSourceLocation() != null && m.getSourceLocation().getLine() == line) { | |||
found = true; | |||
iter.remove(); | |||
} |
@@ -336,7 +336,7 @@ public class IncrementalCase { // XXX NOT bound to junit - bridge tests? | |||
final int expLine = exp[i]; | |||
boolean found = false; | |||
for (int j = 0; !found && (j < messages.length); j++) { | |||
ISourceLocation sl = messages[j].getISourceLocation(); | |||
ISourceLocation sl = messages[j].getSourceLocation(); | |||
found = ((null != sl) && (expLine == sl.getLine())); | |||
if (found) { | |||
info(handler, "found " + label + " for: " + exp[i]); |
@@ -105,7 +105,7 @@ public class BridgeUtil { | |||
+ KIND_DELIM | |||
+ message.getMessage() | |||
+ MESSAGE_DELIM | |||
+ message.getISourceLocation(); // XXX implement | |||
+ message.getSourceLocation(); // XXX implement | |||
} | |||
@@ -247,8 +247,8 @@ public class BridgeUtil { | |||
if (0 != result) { | |||
return result; | |||
} | |||
ISourceLocation sl1 = one.getISourceLocation(); | |||
ISourceLocation sl2 = two.getISourceLocation(); | |||
ISourceLocation sl1 = one.getSourceLocation(); | |||
ISourceLocation sl2 = two.getSourceLocation(); | |||
return WEAK_ISourceLocation.compare(sl1, sl2); | |||
} | |||
}; | |||
@@ -267,8 +267,8 @@ public class BridgeUtil { | |||
} | |||
IMessage rhs_m= (IMessage) o1; | |||
IMessage lhs_m = (IMessage) o2; | |||
ISourceLocation rhs_sl = rhs_m.getISourceLocation(); | |||
ISourceLocation lhs_sl = lhs_m.getISourceLocation(); | |||
ISourceLocation rhs_sl = rhs_m.getSourceLocation(); | |||
ISourceLocation lhs_sl = lhs_m.getSourceLocation(); | |||
result = MEDIUM_ISourceLocation.compare(lhs_sl, rhs_sl); | |||
if (0 != result) { | |||
return result; |
@@ -96,7 +96,7 @@ public class SoftMessage implements IMessage { // XXX mutable dup of Message | |||
if (null != value) { | |||
out.printAttribute("message", value); | |||
} | |||
ISourceLocation sl = message.getISourceLocation(); | |||
ISourceLocation sl = message.getSourceLocation(); | |||
if (null != sl) { | |||
out.endAttributes(); | |||
SoftSourceLocation.writeXml(out, sl); | |||
@@ -204,7 +204,7 @@ public class SoftMessage implements IMessage { // XXX mutable dup of Message | |||
* @return ISourceLocation associated with this message, | |||
* a mock-up if file or line is available, or null if none | |||
*/ | |||
final public ISourceLocation getISourceLocation() { | |||
final public ISourceLocation getSourceLocation() { | |||
if ((null == sourceLocation) | |||
&& ((null != file) || (line != Integer.MAX_VALUE))) { | |||
File f = (null == file ? NO_FILE : new File(file)); | |||
@@ -270,7 +270,7 @@ public class SoftMessage implements IMessage { // XXX mutable dup of Message | |||
result.append(messageString); | |||
} | |||
ISourceLocation loc = getISourceLocation(); | |||
ISourceLocation loc = getSourceLocation(); | |||
if ((null != loc) && (loc != ISourceLocation.NO_FILE)) { | |||
result.append(" at " + loc); | |||
} |
@@ -299,7 +299,7 @@ public class AjcSpecTest extends TestCase { | |||
assertTrue(lhs.getKind() == rhs.getKind()); | |||
same(lhs.getMessage(), rhs.getMessage(), a); | |||
assertEquals(lhs.getThrown(), rhs.getThrown()); | |||
sameSourceLocation(lhs.getISourceLocation(), rhs.getISourceLocation(), a); | |||
sameSourceLocation(lhs.getSourceLocation(), rhs.getSourceLocation(), a); | |||
} | |||
public static void sameSourceLocation(ISourceLocation lhs, ISourceLocation rhs, Assert a) { |