Browse Source

145963: patches from comment #3

tags/V1_5_2rc1
aclement 18 years ago
parent
commit
c2ae48e581

+ 2
- 2
asm/src/org/aspectj/asm/IRelationshipMap.java View File

@@ -37,12 +37,12 @@ import java.util.Set;
public interface IRelationshipMap extends Serializable {
/**
* @return an empty list if the element is not found.
* @return null if the element is not found.
*/
public List/*IRelationship*/ get(IProgramElement source);

/**
* @return an empty list if the element is not found.
* @return null if the element is not found.
*/
public List/*IRelationship*/ get(String handle);


+ 23
- 0
tests/src/org/aspectj/systemtest/ajc152/CreatingModelForInjarTests.java View File

@@ -19,6 +19,7 @@ import junit.framework.Test;
import org.aspectj.asm.AsmManager;
import org.aspectj.asm.IHierarchy;
import org.aspectj.asm.IProgramElement;
import org.aspectj.asm.IRelationshipMap;
import org.aspectj.testing.XMLBasedAjcTestCase;
//import org.aspectj.weaver.World;

@@ -80,6 +81,28 @@ public class CreatingModelForInjarTests extends org.aspectj.testing.XMLBasedAjcT
assertEquals("expected one package called 'pkg' but found " + numberOfPkgs,1,numberOfPkgs);
}
public void testAdviceInRelMap() {
runTest("advice and deow");
IHierarchy top = AsmManager.getDefault().getHierarchy();
IProgramElement adviceNode = top.findElementForLabel(top.getRoot(), IProgramElement.Kind.ADVICE,"before()");
IRelationshipMap relMap = AsmManager.getDefault().getRelationshipMap();
List adviceRels = relMap.get(adviceNode);
assertFalse("expected before advice to have relationships but did not",adviceRels.isEmpty());
}
public void testDeclareWarningInRelMap() {
runTest("advice and deow");
IHierarchy top = AsmManager.getDefault().getHierarchy();
IProgramElement dwNode = top.findElementForLabel(top.getRoot(),
IProgramElement.Kind.DECLARE_WARNING,
"declare warning: \"There should be n..\"");
IRelationshipMap relMap = AsmManager.getDefault().getRelationshipMap();
List dwRels = relMap.get(dwNode);
assertFalse("expected declare warning to have relationships but did not",dwRels.isEmpty());
}
// --------------------- Helper methods ---------------------
private IProgramElement getPkgNode() {
IHierarchy top = AsmManager.getDefault().getHierarchy();
IProgramElement pkgNode = top.findElementForLabel(top.getRoot(),

+ 5
- 5
weaver/src/org/aspectj/weaver/AsmRelationshipProvider.java View File

@@ -52,6 +52,10 @@ public class AsmRelationshipProvider {
public void checkerMunger(IHierarchy model, Shadow shadow, Checker checker) {
if (!AsmManager.isCreatingModel()) return;
if (shadow.getSourceLocation() == null || checker.getSourceLocation() == null) return;

if (World.createInjarHierarchy) {
checker.createHierarchy();
}
// Ensure a node for the target exists
IProgramElement targetNode = getNode(AsmManager.getDefault().getHierarchy(),shadow);
@@ -59,17 +63,13 @@ public class AsmRelationshipProvider {
String targetHandle = AsmManager.getDefault().getHandleProvider()
.createHandleIdentifier(targetNode);
if (targetHandle == null) return;
IProgramElement sourceNode = AsmManager.getDefault().getHierarchy()
.findElementForSourceLine(checker.getSourceLocation());
String sourceHandle = AsmManager.getDefault().getHandleProvider()
.createHandleIdentifier(sourceNode);
if (sourceHandle == null) return;
if (World.createInjarHierarchy) {
checker.createHierarchy();
}

IRelationshipMap mapper = AsmManager.getDefault().getRelationshipMap();
IRelationship foreward = mapper.get(sourceHandle, IRelationship.Kind.DECLARE, MATCHED_BY,false,true);
foreward.addTarget(targetHandle);

Loading…
Cancel
Save