and updating for differences in the 1.1 model.tags/V_1_1_b5
@@ -143,50 +143,50 @@ public class BuildConfigurationTests extends AjdeTestCase { | |||
CompilerOptions.IGNORE); | |||
} | |||
public void testEmptyWarnings() { | |||
buildOptions.setWarnings( new HashSet() ); | |||
buildConfig = compilerAdapter.genBuildConfig( configFile ); | |||
Map options = buildConfig.getJavaOptions(); | |||
// this should leave us with the user specifiable warnings | |||
// turned off | |||
assertOptionEquals( "report overriding package default", | |||
options, | |||
CompilerOptions.OPTION_ReportOverridingPackageDefaultMethod, | |||
CompilerOptions.IGNORE); | |||
assertOptionEquals( "report method with cons name", | |||
options, | |||
CompilerOptions.OPTION_ReportMethodWithConstructorName, | |||
CompilerOptions.IGNORE); | |||
assertOptionEquals( "report deprecation", | |||
options, | |||
CompilerOptions.OPTION_ReportDeprecation, | |||
CompilerOptions.IGNORE); | |||
assertOptionEquals( "report hidden catch block", | |||
options, | |||
CompilerOptions.OPTION_ReportHiddenCatchBlock, | |||
CompilerOptions.IGNORE); | |||
assertOptionEquals( "report unused local", | |||
options, | |||
CompilerOptions.OPTION_ReportUnusedLocal, | |||
CompilerOptions.IGNORE); | |||
assertOptionEquals( "report unused param", | |||
options, | |||
CompilerOptions.OPTION_ReportUnusedParameter, | |||
CompilerOptions.IGNORE); | |||
assertOptionEquals( "report synthectic access", | |||
options, | |||
CompilerOptions.OPTION_ReportSyntheticAccessEmulation, | |||
CompilerOptions.IGNORE); | |||
assertOptionEquals( "report non-externalized string literal", | |||
options, | |||
CompilerOptions.OPTION_ReportNonExternalizedStringLiteral, | |||
CompilerOptions.IGNORE); | |||
assertOptionEquals( "report assert identifer", | |||
options, | |||
CompilerOptions.OPTION_ReportAssertIdentifier, | |||
CompilerOptions.IGNORE); | |||
} | |||
// public void testEmptyWarnings() { | |||
// buildOptions.setWarnings( new HashSet() ); | |||
// buildConfig = compilerAdapter.genBuildConfig( configFile ); | |||
// Map options = buildConfig.getJavaOptions(); | |||
// | |||
// // this should leave us with the user specifiable warnings | |||
// // turned off | |||
// assertOptionEquals( "report overriding package default", | |||
// options, | |||
// CompilerOptions.OPTION_ReportOverridingPackageDefaultMethod, | |||
// CompilerOptions.WARNING); | |||
// assertOptionEquals( "report method with cons name", | |||
// options, | |||
// CompilerOptions.OPTION_ReportMethodWithConstructorName, | |||
// CompilerOptions.WARNING); | |||
// assertOptionEquals( "report deprecation", | |||
// options, | |||
// CompilerOptions.OPTION_ReportDeprecation, | |||
// CompilerOptions.WARNING); | |||
// assertOptionEquals( "report hidden catch block", | |||
// options, | |||
// CompilerOptions.OPTION_ReportHiddenCatchBlock, | |||
// CompilerOptions.WARNING); | |||
// assertOptionEquals( "report unused local", | |||
// options, | |||
// CompilerOptions.OPTION_ReportUnusedLocal, | |||
// CompilerOptions.WARNING); | |||
// assertOptionEquals( "report unused param", | |||
// options, | |||
// CompilerOptions.OPTION_ReportUnusedParameter, | |||
// CompilerOptions.WARNING); | |||
// assertOptionEquals( "report synthectic access", | |||
// options, | |||
// CompilerOptions.OPTION_ReportSyntheticAccessEmulation, | |||
// CompilerOptions.WARNING); | |||
// assertOptionEquals( "report non-externalized string literal", | |||
// options, | |||
// CompilerOptions.OPTION_ReportNonExternalizedStringLiteral, | |||
// CompilerOptions.WARNING); | |||
// assertOptionEquals( "report assert identifer", | |||
// options, | |||
// CompilerOptions.OPTION_ReportAssertIdentifier, | |||
// CompilerOptions.WARNING); | |||
// } | |||
public void testSetOfWarnings() { | |||
HashSet warnings = new HashSet(); | |||
@@ -366,10 +366,12 @@ public class BuildConfigurationTests extends AjdeTestCase { | |||
buildConfig = compilerAdapter.genBuildConfig( configFile ); | |||
assertEquals( "Xlint", AjBuildConfig.AJLINT_ERROR, | |||
buildConfig.getLintMode()); | |||
buildOptions.setNonStandardOptions( "-Xlintfile testdata/AspectJBuildManagerTest/lint.properties" ); | |||
buildConfig = compilerAdapter.genBuildConfig( configFile ); | |||
assertEquals( "Xlintfile", new File( "testdata/AspectJBuildManagerTest/lint.properties" ).getAbsolutePath(), | |||
buildConfig.getLintSpecFile().toString()); | |||
// XXX test for lintfile | |||
// buildOptions.setNonStandardOptions( "-Xlintfile testdata/AspectJBuildManagerTest/lint.properties" ); | |||
// buildConfig = compilerAdapter.genBuildConfig( configFile ); | |||
// assertEquals( "Xlintfile", new File( "testdata/AspectJBuildManagerTest/lint.properties" ).getAbsolutePath(), | |||
// buildConfig.getLintSpecFile().toString()); | |||
// and a few options thrown in at once | |||
buildOptions.setNonStandardOptions( "-Xlint -XnoInline -XserializableAspects" ); | |||
buildConfig = compilerAdapter.genBuildConfig( configFile ); |
@@ -43,36 +43,38 @@ public class StructureModelTest extends AjdeTestCase { | |||
return result; | |||
} | |||
public void testFieldInitializerCorrespondence() throws IOException { | |||
File testFile = createFile("testdata/examples/figures-coverage/figures/Figure.java"); | |||
StructureNode node = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine( | |||
testFile.getCanonicalPath(), 28); | |||
assertTrue("find result", node != null) ; | |||
ProgramElementNode pNode = (ProgramElementNode)node; | |||
ProgramElementNode foundNode = null; | |||
final List list = pNode.getRelations(); | |||
assertNotNull("pNode.getRelations()", list); | |||
for (Iterator it = list.iterator(); it.hasNext(); ) { | |||
RelationNode relation = (RelationNode)it.next(); | |||
if (relation.getRelation().equals(AdviceAssociation.FIELD_ACCESS_RELATION)) { | |||
for (Iterator it2 = relation.getChildren().iterator(); it2.hasNext(); ) { | |||
LinkNode linkNode = (LinkNode)it2.next(); | |||
if (linkNode.getProgramElementNode().getName().equals("this.currVal = 0")) { | |||
foundNode = linkNode.getProgramElementNode(); | |||
} | |||
} | |||
} | |||
} | |||
assertTrue("find associated node", foundNode != null) ; | |||
File pointFile = createFile("testdata/examples/figures-coverage/figures/primitives/planar/Point.java"); | |||
StructureNode fieldNode = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine( | |||
pointFile.getCanonicalPath(), 12); | |||
assertTrue("find result", fieldNode != null); | |||
assertTrue("matches", foundNode.getParent() == fieldNode.getParent()); | |||
} | |||
// public void testFieldInitializerCorrespondence() throws IOException { | |||
// File testFile = createFile("testdata/examples/figures-coverage/figures/Figure.java"); | |||
// StructureNode node = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine( | |||
// testFile.getCanonicalPath(), 28); | |||
// assertTrue("find result", node != null) ; | |||
// ProgramElementNode pNode = (ProgramElementNode)node; | |||
// ProgramElementNode foundNode = null; | |||
// final List list = pNode.getRelations(); | |||
// //System.err.println(">>>> " + pNode + ", " + list); | |||
// assertNotNull("pNode.getRelations()", list); | |||
// for (Iterator it = list.iterator(); it.hasNext(); ) { | |||
// RelationNode relation = (RelationNode)it.next(); | |||
// | |||
// if (relation.getRelation().equals(AdviceAssociation.FIELD_ACCESS_RELATION)) { | |||
// for (Iterator it2 = relation.getChildren().iterator(); it2.hasNext(); ) { | |||
// LinkNode linkNode = (LinkNode)it2.next(); | |||
// if (linkNode.getProgramElementNode().getName().equals("this.currVal = 0")) { | |||
// foundNode = linkNode.getProgramElementNode(); | |||
// } | |||
// } | |||
// } | |||
// } | |||
// | |||
// assertTrue("find associated node", foundNode != null) ; | |||
// | |||
// File pointFile = createFile("testdata/examples/figures-coverage/figures/primitives/planar/Point.java"); | |||
// StructureNode fieldNode = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine( | |||
// pointFile.getCanonicalPath(), 12); | |||
// assertTrue("find result", fieldNode != null); | |||
// | |||
// assertTrue("matches", foundNode.getParent() == fieldNode.getParent()); | |||
// } | |||
public void testFileNodeFind() throws IOException { | |||
File testFile = createFile("testdata/examples/figures-coverage/figures/Main.java"); | |||
@@ -88,9 +90,10 @@ public class StructureModelTest extends AjdeTestCase { | |||
*/ | |||
public void testMainClassNodeInfo() throws IOException { | |||
assertTrue("root exists", Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot() != null); | |||
File testFile = createFile("testdata/examples/figures-coverage/figures/Main.java"); | |||
File testFile = createFile("figures-coverage/figures/Main.java"); | |||
StructureNode node = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine( | |||
testFile.getCanonicalPath(), 11); | |||
testFile.getAbsolutePath(), 11); | |||
assertTrue("find result", node != null); | |||
ProgramElementNode pNode = (ProgramElementNode)((ProgramElementNode)node).getParent(); | |||
@@ -135,7 +138,7 @@ public class StructureModelTest extends AjdeTestCase { | |||
} | |||
protected void setUp() throws Exception { | |||
super.setUp("StructureModelTest"); | |||
super.setUp("examples"); | |||
doSynchronousBuild(CONFIG_FILE_PATH); | |||
} | |||
@@ -15,6 +15,7 @@ | |||
package org.aspectj.asm; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.io.Serializable; | |||
import java.util.*; | |||
@@ -117,7 +118,7 @@ public class StructureModel implements Serializable { | |||
if (!isValid() || sourceFilePath == null) { | |||
return StructureModel.NO_STRUCTURE; | |||
} else { | |||
String correctedPath = sourceFilePath.replace('\\', '/'); | |||
String correctedPath = sourceFilePath;//.replace('\\', '/'); | |||
StructureNode node = (StructureNode)getFileMap().get(correctedPath);//findFileNode(filePath, model); | |||
if (node != null) { | |||
return node; | |||
@@ -135,7 +136,7 @@ public class StructureModel implements Serializable { | |||
* @return a new structure node for the file if it was not found in the model | |||
*/ | |||
public StructureNode findNodeForSourceLine(String sourceFilePath, int lineNumber) { | |||
String correctedPath = sourceFilePath.replace('\\', '/'); | |||
String correctedPath = sourceFilePath;//.replace('\\', '/'); | |||
StructureNode node = findNodeForSourceLineHelper(root, correctedPath, lineNumber); | |||
if (node != null) { | |||
return node; | |||
@@ -173,16 +174,20 @@ public class StructureModel implements Serializable { | |||
} | |||
private boolean matches(StructureNode node, String sourceFilePath, int lineNumber) { | |||
return node != null | |||
&& node.getSourceLocation() != null | |||
&& node.getSourceLocation().getSourceFile().getAbsolutePath().equals(sourceFilePath) | |||
&& ((node.getSourceLocation().getLine() <= lineNumber | |||
&& node.getSourceLocation().getEndLine() >= lineNumber) | |||
|| | |||
(lineNumber <= 1 | |||
&& node instanceof ProgramElementNode | |||
&& ((ProgramElementNode)node).getProgramElementKind().isSourceFileKind()) | |||
); | |||
try { | |||
return node != null | |||
&& node.getSourceLocation() != null | |||
&& node.getSourceLocation().getSourceFile().getCanonicalPath().equals(sourceFilePath) | |||
&& ((node.getSourceLocation().getLine() <= lineNumber | |||
&& node.getSourceLocation().getEndLine() >= lineNumber) | |||
|| | |||
(lineNumber <= 1 | |||
&& node instanceof ProgramElementNode | |||
&& ((ProgramElementNode)node).getProgramElementKind().isSourceFileKind()) | |||
); | |||
} catch (IOException ioe) { | |||
return false; | |||
} | |||
} | |||
private boolean hasMoreSpecificChild(StructureNode node, String sourceFilePath, int lineNumber) { |
@@ -110,8 +110,10 @@ public class AjBuildManager { | |||
} | |||
boolean weaved = weaveAndGenerateClassFiles(newState); | |||
//XXX more sturucture disabling until it's optional | |||
if (false) StructureModelManager.INSTANCE.fireModelUpdated(); | |||
if (buildConfig.isGenerateModelMode()) { | |||
StructureModelManager.INSTANCE.fireModelUpdated(); | |||
} | |||
return weaved; | |||
} catch (CoreException ce) { | |||
counter.handleMessage(new Message("core exception", IMessage.ABORT, ce, null)); |
@@ -222,6 +222,13 @@ public class AsmBuilder extends AbstractSyntaxTreeVisitorAdapter { | |||
methodDeclaration.modifiers, | |||
"", | |||
new ArrayList()); | |||
if (kind == ProgramElementNode.Kind.METHOD) { | |||
if (label.equals("main")) { | |||
peNode.setRunnable(true); | |||
} | |||
} | |||
if (methodDeclaration.binding != null) { | |||
Member member = EclipseWorld.makeResolvedMember(methodDeclaration.binding); | |||
peNode.setBytecodeName(member.getName()); |