ソースを参照

Got advice relationships working.

tags/V1_1_1
mkersten 21年前
コミット
4a1a347b22
39個のファイルの変更409行の追加337行の削除
  1. 2
    2
      ajde/src/org/aspectj/ajde/ui/AbstractIconRegistry.java
  2. 1
    1
      ajde/src/org/aspectj/ajde/ui/FileStructureView.java
  3. 81
    0
      ajde/src/org/aspectj/ajde/ui/IStructureViewNode.java
  4. 1
    1
      ajde/src/org/aspectj/ajde/ui/StructureModelUtil.java
  5. 1
    1
      ajde/src/org/aspectj/ajde/ui/StructureSearchManager.java
  6. 10
    10
      ajde/src/org/aspectj/ajde/ui/StructureView.java
  7. 8
    8
      ajde/src/org/aspectj/ajde/ui/StructureViewManager.java
  8. 0
    44
      ajde/src/org/aspectj/ajde/ui/StructureViewNode.java
  9. 34
    27
      ajde/src/org/aspectj/ajde/ui/StructureViewNodeFactory.java
  10. 2
    2
      ajde/src/org/aspectj/ajde/ui/StructureViewRenderer.java
  11. 26
    25
      ajde/src/org/aspectj/ajde/ui/internal/TreeStructureViewBuilder.java
  12. 2
    2
      ajde/src/org/aspectj/ajde/ui/swing/BrowserStructureViewToolPanel.java
  13. 3
    3
      ajde/src/org/aspectj/ajde/ui/swing/BrowserViewPanel.java
  14. 1
    1
      ajde/src/org/aspectj/ajde/ui/swing/BuildConfigPopupMenu.java
  15. 3
    3
      ajde/src/org/aspectj/ajde/ui/swing/IconRegistry.java
  16. 2
    2
      ajde/src/org/aspectj/ajde/ui/swing/StructureViewPanel.java
  17. 49
    14
      ajde/src/org/aspectj/ajde/ui/swing/SwingTreeViewNode.java
  18. 12
    3
      ajde/src/org/aspectj/ajde/ui/swing/SwingTreeViewNodeFactory.java
  19. 26
    30
      ajde/src/org/aspectj/ajde/ui/swing/SwingTreeViewNodeRenderer.java
  20. 1
    1
      ajde/src/org/aspectj/ajde/ui/swing/TreeViewBuildConfigEditor.java
  21. 29
    13
      ajde/testdata/examples/coverage/ModelCoverage.java
  22. 1
    1
      ajde/testsrc/org/aspectj/ajde/AjdeTests.java
  23. 6
    6
      ajde/testsrc/org/aspectj/ajde/AsmDeclarationsTest.java
  24. 35
    32
      ajde/testsrc/org/aspectj/ajde/AsmRelationshipsTest.java
  25. 3
    3
      ajde/testsrc/org/aspectj/ajde/StructureModelRegressionTest.java
  26. 6
    6
      ajde/testsrc/org/aspectj/ajde/StructureModelTest.java
  27. 1
    1
      ajde/testsrc/org/aspectj/ajde/ui/NullIdeFileStructureView.java
  28. 2
    2
      ajde/testsrc/org/aspectj/ajde/ui/NullIdeStructureViewRenderer.java
  29. 3
    3
      ajde/testsrc/org/aspectj/ajde/ui/StructureViewManagerTest.java
  30. 3
    3
      asm/src/org/aspectj/asm/IRelationship.java
  31. 5
    4
      asm/src/org/aspectj/asm/IRelationshipMapper.java
  32. 2
    5
      asm/src/org/aspectj/asm/StructureModel.java
  33. 8
    4
      asm/src/org/aspectj/asm/StructureModelManager.java
  34. 22
    10
      asm/src/org/aspectj/asm/internal/Relationship.java
  35. 4
    57
      asm/src/org/aspectj/asm/internal/RelationshipMapper.java
  36. 4
    2
      org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java
  37. 2
    2
      org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/EmacsStructureModelManager.java
  38. 1
    1
      org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/core/builder/AjBuildManagerTest.java
  39. 7
    2
      testing/src/org/aspectj/testing/ajde/CompileCommand.java

+ 2
- 2
ajde/src/org/aspectj/ajde/ui/AbstractIconRegistry.java ファイルの表示

@@ -58,7 +58,7 @@ public abstract class AbstractIconRegistry {
protected final AbstractIcon RELATION_REFERENCE_FORWARD = createIcon(STRUCTURE_PATH + "referenceForward.gif");
protected final AbstractIcon RELATION_REFERENCE_BACK = createIcon(STRUCTURE_PATH + "referenceBack.gif");

public AbstractIcon getRelationIcon(IRelationship.Kind relationship) {
public AbstractIcon getIcon(IRelationship.Kind relationship) {
if (relationship == IRelationship.Kind.ADVICE) {
return RELATION_ADVICE_FORWARD;
} else if (relationship == IRelationship.Kind.DECLARE) {
@@ -82,7 +82,7 @@ public abstract class AbstractIconRegistry {
*
* @return null if the kind could not be resolved
*/
public AbstractIcon getStructureIcon(IProgramElement.Kind kind) {
public AbstractIcon getIcon(IProgramElement.Kind kind) {
if (kind == IProgramElement.Kind.PROJECT) {
return PROJECT;
} else if (kind == IProgramElement.Kind.PACKAGE) {

+ 1
- 1
ajde/src/org/aspectj/ajde/ui/FileStructureView.java ファイルの表示

@@ -36,7 +36,7 @@ public class FileStructureView extends StructureView {
this.sourceFilePath = sourceFile;
}

public void setRootNode(StructureViewNode rootNode) {
public void setRootNode(IStructureViewNode rootNode) {
super.setRootNode(rootNode);
notifyViewUpdated();
}

+ 81
- 0
ajde/src/org/aspectj/ajde/ui/IStructureViewNode.java ファイルの表示

@@ -0,0 +1,81 @@
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Common Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/

package org.aspectj.ajde.ui;

import java.io.*;
import java.util.List;

import org.aspectj.asm.IProgramElement;

/**
* @author Mik Kersten
*/
public interface IStructureViewNode {
public IProgramElement getStructureNode();
public AbstractIcon getIcon();
/**
* Add a child node.
*/
public void add(IStructureViewNode child);

/**
* Add a child node.
*/
public void add(IStructureViewNode child, int position);
/**
* Remove a child node.
*/
public void remove(IStructureViewNode child);
/**
* @return an empty list if there are no children
*/
public List getChildren();
public Kind getKind();
public String getRelationshipName();
/**
* Uses "typesafe enum" pattern.
*/
public static class Kind implements Serializable {
public static final Kind DECLARATION = new Kind("declaration");
public static final Kind RELATIONSHIP = new Kind("relationship");
public static final Kind LINK = new Kind("link");
public static final Kind[] ALL = { DECLARATION, RELATIONSHIP, LINK };
private final String name;
private Kind(String name) {
this.name = name;
}
public String toString() {
return name;
}

// The 4 declarations below are necessary for serialization
private static int nextOrdinal = 0;
private final int ordinal = nextOrdinal++;
private Object readResolve() throws ObjectStreamException {
return ALL[ordinal];
}
}
}

+ 1
- 1
ajde/src/org/aspectj/ajde/ui/StructureModelUtil.java ファイルの表示

@@ -115,7 +115,7 @@ public class StructureModelUtil {
public static List getPackagesInModel() {
List packages = new ArrayList();
StructureModel model =
Ajde.getDefault().getStructureModelManager().getStructureModel();
Ajde.getDefault().getStructureModelManager().getModel();
if (model.equals(StructureModel.NO_STRUCTURE)) {
return null;
} else {

+ 1
- 1
ajde/src/org/aspectj/ajde/ui/StructureSearchManager.java ファイルの表示

@@ -34,7 +34,7 @@ public class StructureSearchManager {
IProgramElement.Kind kind) {
List matches = new ArrayList();
StructureModel model = Ajde.getDefault().getStructureModelManager().getStructureModel();
StructureModel model = Ajde.getDefault().getStructureModelManager().getModel();
if (model.equals(StructureModel.NO_STRUCTURE)) {
return null;
} else {

+ 10
- 10
ajde/src/org/aspectj/ajde/ui/StructureView.java ファイルの表示

@@ -23,8 +23,8 @@ import org.aspectj.asm.IProgramElement;
*/
public abstract class StructureView {

private StructureViewNode rootNode = null;
private StructureViewNode activeNode = null;
private IStructureViewNode rootNode = null;
private IStructureViewNode activeNode = null;
protected StructureViewProperties viewProperties = null;
protected StructureViewRenderer renderer = null;
@@ -32,11 +32,11 @@ public abstract class StructureView {
return viewProperties;
}
public StructureViewNode getRootNode() {
public IStructureViewNode getRootNode() {
return rootNode;
}

public void setRootNode(StructureViewNode rootNode) {
public void setRootNode(IStructureViewNode rootNode) {
this.rootNode = rootNode;
}

@@ -55,7 +55,7 @@ public abstract class StructureView {
/**
* @return the view node corresponding to the active ProgramElementNode or null
*/
public StructureViewNode getActiveNode() {
public IStructureViewNode getActiveNode() {
if (activeNode != null
&& activeNode.getStructureNode() instanceof IProgramElement) {
return activeNode;
@@ -69,11 +69,11 @@ public abstract class StructureView {
*
* @return the first match
*/
public StructureViewNode findCorrespondingViewNode(IProgramElement node) {
public IStructureViewNode findCorrespondingViewNode(IProgramElement node) {
return findCorrespondingViewNodeHelper(rootNode, node);
}

private StructureViewNode findCorrespondingViewNodeHelper(StructureViewNode node, IProgramElement pNode) {
private IStructureViewNode findCorrespondingViewNodeHelper(IStructureViewNode node, IProgramElement pNode) {
if (node != null
&& node.getStructureNode() != null
@@ -83,7 +83,7 @@ public abstract class StructureView {
if (node != null && node.getChildren() != null) {
for (Iterator it = node.getChildren().iterator(); it.hasNext(); ) {
StructureViewNode foundNode = findCorrespondingViewNodeHelper((StructureViewNode)it.next(), pNode);
IStructureViewNode foundNode = findCorrespondingViewNodeHelper((IStructureViewNode)it.next(), pNode);
if (foundNode != null) return foundNode;
}
}
@@ -91,12 +91,12 @@ public abstract class StructureView {
return null;
}

public void setActiveNode(StructureViewNode activeNode) {
public void setActiveNode(IStructureViewNode activeNode) {
this.activeNode = activeNode;
if (renderer != null) renderer.setActiveNode(activeNode);
}
public void setActiveNode(StructureViewNode activeNode, int sourceLine) {
public void setActiveNode(IStructureViewNode activeNode, int sourceLine) {
this.activeNode = activeNode;
if (renderer != null) renderer.setActiveNode(activeNode, sourceLine);
}

+ 8
- 8
ajde/src/org/aspectj/ajde/ui/StructureViewManager.java ファイルの表示

@@ -84,7 +84,7 @@ public class StructureViewManager {
* @param newFilePath the canonicalized path to the new file
*/
public void fireNavigationAction(String newFilePath, int lineNumber) {
IProgramElement currNode = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine(
IProgramElement currNode = Ajde.getDefault().getStructureModelManager().getModel().findNodeForSourceLine(
newFilePath,
lineNumber);
@@ -127,7 +127,7 @@ public class StructureViewManager {
if (defaultFileView.getSourceFile() != null
&& !defaultFileView.getSourceFile().equals(newFilePath)) {
defaultFileView.setSourceFile(newFilePath);
treeViewBuilder.buildView(defaultFileView, StructureModelManager.getDefault().getStructureModel());
treeViewBuilder.buildView(defaultFileView, StructureModelManager.getDefault().getModel());
}
}
@@ -137,19 +137,19 @@ public class StructureViewManager {
if (node.getKind().equals(IProgramElement.Kind.CODE)) {
IProgramElement parentNode = (IProgramElement)node.getParent();
if (parentNode != null) {
StructureViewNode currNode = view.findCorrespondingViewNode(parentNode);
IStructureViewNode currNode = view.findCorrespondingViewNode(parentNode);
int lineOffset = node.getSourceLocation().getLine() - parentNode.getSourceLocation().getLine();
if (currNode != null) view.setActiveNode(currNode, lineOffset);
}
} else {
StructureViewNode currNode = view.findCorrespondingViewNode(node);
IStructureViewNode currNode = view.findCorrespondingViewNode(node);
if (currNode != null) view.setActiveNode(currNode);
}
}
}
}
private IProgramElement getProgramElementNode(StructureViewNode node) {
private IProgramElement getProgramElementNode(IStructureViewNode node) {
if (node.getStructureNode() instanceof IProgramElement) {
return (IProgramElement)node.getStructureNode();
// } else if (node.getStructureNode() instanceof LinkNode) {
@@ -160,8 +160,8 @@ public class StructureViewManager {
}
public void refreshView(StructureView view) {
StructureViewNode activeNode = view.getActiveNode();
treeViewBuilder.buildView(view, Ajde.getDefault().getStructureModelManager().getStructureModel());
IStructureViewNode activeNode = view.getActiveNode();
treeViewBuilder.buildView(view, Ajde.getDefault().getStructureModelManager().getModel());
view.setActiveNode(activeNode);
}

@@ -195,7 +195,7 @@ public class StructureViewManager {
if (properties == null) properties = DEFAULT_VIEW_PROPERTIES;
FileStructureView view = new FileStructureView(properties);
view.setSourceFile(sourceFilePath);
treeViewBuilder.buildView(view, StructureModelManager.getDefault().getStructureModel());
treeViewBuilder.buildView(view, StructureModelManager.getDefault().getModel());
structureViews.add(view);
return view;
}

+ 0
- 44
ajde/src/org/aspectj/ajde/ui/StructureViewNode.java ファイルの表示

@@ -1,44 +0,0 @@
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Common Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/

package org.aspectj.ajde.ui;

import java.util.List;

import org.aspectj.asm.IProgramElement;

/**
* @author Mik Kersten
*/
public interface StructureViewNode {
public IProgramElement getStructureNode();
public AbstractIcon getIcon();
/**
* Add a child node.
*/
public void add(StructureViewNode child);
/**
* Remove a child node.
*/
public void remove(StructureViewNode child);
/**
* @return an empty list if there are no children
*/
public List getChildren();
}

+ 34
- 27
ajde/src/org/aspectj/ajde/ui/StructureViewNodeFactory.java ファイルの表示

@@ -14,7 +14,7 @@
package org.aspectj.ajde.ui;

import java.util.List;
import java.util.*;

import org.aspectj.asm.*;

@@ -29,40 +29,47 @@ public abstract class StructureViewNodeFactory {
this.iconRegistry = iconRegistry;
}

public StructureViewNode createNode(IProgramElement node) {
public IStructureViewNode createNode(IProgramElement node) {
return createNode(node, null);
}

public StructureViewNode createNode(IProgramElement node, List children) {
AbstractIcon icon;
// if (node instanceof IProgramElement) {
// IProgramElement pNode = (IProgramElement)node;
icon = iconRegistry.getStructureIcon(node.getKind(), node.getAccessibility());
// } else if (node instanceof IRelationship) {
// IRelationship relationNode = (IRelationship)node;
// icon = iconRegistry.getRelationIcon(relationNode.getKind());
//// } else if (node instanceof LinkNode) {
//// LinkNode linkNode = (LinkNode)node;
//// icon = iconRegistry.getStructureIcon(
//// linkNode.getProgramElementNode().getProgramElementKind(),
//// linkNode.getProgramElementNode().getAccessibility());
// } else {
// icon = new AbstractIcon(null);
// }
// node.setChildren(children);
return createConcreteNode(node, icon, children);
}
public IStructureViewNode createNode(IProgramElement node, List children) {
AbstractIcon icon = iconRegistry.getStructureIcon(node.getKind(), node.getAccessibility());

public StructureViewNode createNode(IRelationship relationship) {
AbstractIcon icon;
icon = iconRegistry.getRelationIcon(relationship.getKind());
return createConcreteNode(relationship, icon);
IStructureViewNode svNode = createDeclaration(node, icon, children);
IRelationship rel = StructureModelManager.getDefault().getMapper().get(node);
if (rel != null && rel.getTargets().size() > 0) {
IStructureViewNode relNode = createRelationship(
rel,
iconRegistry.getIcon(rel.getKind())
);
svNode.add(relNode, 0);
for (Iterator it = rel.getTargets().iterator(); it.hasNext(); ) {
IProgramElement link = (IProgramElement)it.next();
IStructureViewNode linkNode = createLink(
link,
iconRegistry.getIcon(link.getKind())
);
relNode.add(linkNode);
}
}
return svNode;
}

/**
* Implementors must override this method in order to create link new nodes.
*/
protected abstract IStructureViewNode createLink(IProgramElement node, AbstractIcon icon);
protected abstract StructureViewNode createConcreteNode(IRelationship relationship, AbstractIcon icon);
/**
* Implementors must override this method in order to create new relationship nodes.
*/
protected abstract IStructureViewNode createRelationship(IRelationship relationship, AbstractIcon icon);

/**
* Implementors must override this method in order to create new nodes.
*/
protected abstract StructureViewNode createConcreteNode(IProgramElement node, AbstractIcon icon, List children);
protected abstract IStructureViewNode createDeclaration(IProgramElement node, AbstractIcon icon, List children);
}

+ 2
- 2
ajde/src/org/aspectj/ajde/ui/StructureViewRenderer.java ファイルの表示

@@ -36,7 +36,7 @@ public interface StructureViewRenderer extends EventListener {
* the corresponding node's sourceline to be highlighted in the
* active editor.
*/
public void setActiveNode(StructureViewNode node);
public void setActiveNode(IStructureViewNode node);
/**
* Same behavior as <CODE>setActiveNode(StructureViewNode)</CODE> but
@@ -45,5 +45,5 @@ public interface StructureViewRenderer extends EventListener {
* @param lineOffset number of lines after the begin and before the
* end line of the corresponding <CODE>StructureNode</CODE>.
*/
public void setActiveNode(StructureViewNode activeNode, int lineOffset);
public void setActiveNode(IStructureViewNode activeNode, int lineOffset);
}

+ 26
- 25
ajde/src/org/aspectj/ajde/ui/internal/TreeStructureViewBuilder.java ファイルの表示

@@ -50,7 +50,7 @@ public class TreeStructureViewBuilder {
modelRoot = model.getRoot();
}
StructureViewNode viewRoot = null;
IStructureViewNode viewRoot = null;
if (!isFileView(view)) {
StructureViewProperties.Hierarchy hierarchy
= ((GlobalStructureView)view).getGlobalViewProperties().getHierarchy();
@@ -75,7 +75,7 @@ public class TreeStructureViewBuilder {
view.setRootNode(viewRoot);
}

private void addPackageNode(StructureView view, StructureViewNode viewRoot) {
private void addPackageNode(StructureView view, IStructureViewNode viewRoot) {
if (isFileView(view)) {
// IProgramElement fileNode = viewRoot.getStructureNode();
// IProgramElement parentNode = fileNode.getParent();
@@ -93,7 +93,7 @@ public class TreeStructureViewBuilder {
}
}
private StructureViewNode createViewNode(IProgramElement node, StructureViewProperties properties) {
private IStructureViewNode createViewNode(IProgramElement node, StructureViewProperties properties) {
if (node == null) return null;
List children = new ArrayList();
// IProgramElement pNode = node;
@@ -122,7 +122,7 @@ public class TreeStructureViewBuilder {
}
}

StructureViewNode viewNode = nodeFactory.createNode(node, children);//new TreeViewNode(root, null, children);
IStructureViewNode viewNode = nodeFactory.createNode(node, children);//new TreeViewNode(root, null, children);
return viewNode;
}
@@ -188,18 +188,18 @@ public class TreeStructureViewBuilder {
return true;
}

private void sortView(StructureViewNode node, Comparator comparator) {
private void sortView(IStructureViewNode node, Comparator comparator) {
if (node == null || node.getChildren() == null) return;
Collections.sort(node.getChildren(), comparator);
for (Iterator it = node.getChildren().iterator(); it.hasNext(); ) {
StructureViewNode nextNode = (StructureViewNode)it.next();
IStructureViewNode nextNode = (IStructureViewNode)it.next();
if (nextNode != null) sortView(nextNode, comparator);
}
}

private StructureViewNode buildCustomTree(GlobalStructureView view, StructureModel model) {
private IStructureViewNode buildCustomTree(GlobalStructureView view, StructureModel model) {
IProgramElement rootNode = model.getRoot();
StructureViewNode treeNode = nodeFactory.createNode(rootNode);
IStructureViewNode treeNode = nodeFactory.createNode(rootNode);

List rootNodes = new ArrayList();
getRoots(rootNode, rootNodes, view.getGlobalViewProperties().getHierarchy());
@@ -256,8 +256,8 @@ public class TreeStructureViewBuilder {
}
}

private StructureViewNode getInheritanceChildren(IProgramElement node, List associations) {
StructureViewNode treeNode = nodeFactory.createNode(node);
private IStructureViewNode getInheritanceChildren(IProgramElement node, List associations) {
IStructureViewNode treeNode = nodeFactory.createNode(node);
//StructureViewNode treeNode = new StructureViewNodeAdapter(node);
List relations = ((IProgramElement)node).getRelations();
throw new RuntimeException("unimplemented");
@@ -280,9 +280,9 @@ public class TreeStructureViewBuilder {
// return treeNode;
}

private StructureViewNode getCrosscuttingChildren(IProgramElement node) {
private IStructureViewNode getCrosscuttingChildren(IProgramElement node) {
//StructureViewNodeAdapter treeNode = new StructureViewNodeAdapter(node);
StructureViewNode treeNode = nodeFactory.createNode(node);
IStructureViewNode treeNode = nodeFactory.createNode(node);
List relations = ((IProgramElement)node).getRelations();
throw new RuntimeException("unimplemented");
// if (relations != null) {
@@ -313,9 +313,9 @@ public class TreeStructureViewBuilder {
// return treeNode;
}

private StructureViewNode buildTree(IProgramElement node, List associations) {
private IStructureViewNode buildTree(IProgramElement node, List associations) {
//StructureViewNode treeNode = new StructureViewNodeAdapter(node);
StructureViewNode treeNode = nodeFactory.createNode(node);
IStructureViewNode treeNode = nodeFactory.createNode(node);
// if (node instanceof IProgramElement) {
// List relations = ((IProgramElement)node).getRelations();
// if (relations != null) {
@@ -345,7 +345,7 @@ public class TreeStructureViewBuilder {
}
//sortNodes(childList);
for (Iterator it = childList.iterator(); it.hasNext(); ) {
treeNode.add((StructureViewNode)it.next());
treeNode.add((IStructureViewNode)it.next());
}
}

@@ -353,24 +353,25 @@ public class TreeStructureViewBuilder {
return treeNode;
}

private StructureViewNode getRelations(IRelationship node) {
private IStructureViewNode getRelations(IRelationship node) {
return null;
//StructureViewNode treeNode = new StructureViewNode(node);
StructureViewNode treeNode = nodeFactory.createNode(node);
// IStructureViewNode treeNode = nodeFactory.c(node);
// for (Iterator it = node.getTargets().iterator(); it.hasNext(); ) {
// treeNode.add(
// nodeFactory.createNode((IProgramElement)it.next())
// );
// }
return treeNode;
// }
// return treeNode;
}

/**
* For debugging only.
*/
private void dumpView(StructureViewNode root, int level) {
private void dumpView(IStructureViewNode root, int level) {
System.out.println(root.getStructureNode());
for (Iterator it = root.getChildren().iterator(); it.hasNext(); ) {
dumpView((StructureViewNode)it.next(), level++);
dumpView((IStructureViewNode)it.next(), level++);
}
for (int i = 0; i < level; i++) {
System.out.print(' ');
@@ -379,8 +380,8 @@ public class TreeStructureViewBuilder {

private static final Comparator ALPHABETICAL_COMPARATOR = new Comparator() {
public int compare(Object o1, Object o2) {
IProgramElement sv1 = ((StructureViewNode)o1).getStructureNode();
IProgramElement sv2 = ((StructureViewNode)o2).getStructureNode();
IProgramElement sv1 = ((IStructureViewNode)o1).getStructureNode();
IProgramElement sv2 = ((IStructureViewNode)o2).getStructureNode();
if (sv1 instanceof IProgramElement && sv2 instanceof IProgramElement) {
IProgramElement p1 = (IProgramElement)sv1;
IProgramElement p2 = (IProgramElement)sv2;
@@ -393,8 +394,8 @@ public class TreeStructureViewBuilder {
private static final Comparator DECLARATIONAL_COMPARATOR = new Comparator() {
public int compare(Object o1, Object o2) {
IProgramElement sv1 = ((StructureViewNode)o1).getStructureNode();
IProgramElement sv2 = ((StructureViewNode)o2).getStructureNode();
IProgramElement sv1 = ((IStructureViewNode)o1).getStructureNode();
IProgramElement sv2 = ((IStructureViewNode)o2).getStructureNode();
if (sv1 instanceof IProgramElement && sv2 instanceof IProgramElement) {
IProgramElement p1 = (IProgramElement)sv1;
IProgramElement p2 = (IProgramElement)sv2;

+ 2
- 2
ajde/src/org/aspectj/ajde/ui/swing/BrowserStructureViewToolPanel.java ファイルの表示

@@ -111,7 +111,7 @@ public class BrowserStructureViewToolPanel extends JPanel {
for (int i = 0; i < kinds.length; i++) {
if (kinds[i].isMemberKind()) {
CheckBoxSelectionMenuButton menuItem = new CheckBoxSelectionMenuButton(kinds[i]);
menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getStructureIcon(kinds[i]).getIconResource());
menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getIcon(kinds[i]).getIconResource());
filterMenu.add(menuItem);
}
}
@@ -132,7 +132,7 @@ public class BrowserStructureViewToolPanel extends JPanel {
for (Iterator it = relations.iterator(); it.hasNext(); ) {
IRelationship.Kind relation = (IRelationship.Kind)it.next();
CheckBoxSelectionMenuButton menuItem = new CheckBoxSelectionMenuButton(relation);
menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getRelationIcon(relation).getIconResource());
menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getIcon(relation).getIconResource());
relationsMenu.add(menuItem);
}


+ 3
- 3
ajde/src/org/aspectj/ajde/ui/swing/BrowserViewPanel.java ファイルの表示

@@ -30,7 +30,7 @@ import javax.swing.event.ChangeListener;
import org.aspectj.ajde.Ajde;
import org.aspectj.ajde.ui.GlobalStructureView;
import org.aspectj.ajde.ui.StructureView;
import org.aspectj.ajde.ui.StructureViewNode;
import org.aspectj.ajde.ui.IStructureViewNode;
import org.aspectj.ajde.ui.StructureViewProperties;
import org.aspectj.ajde.ui.StructureViewRenderer;

@@ -82,11 +82,11 @@ public class BrowserViewPanel extends JPanel implements StructureViewRenderer {
}
}

public void setActiveNode(StructureViewNode node) {
public void setActiveNode(IStructureViewNode node) {
throw new RuntimeException("not implemented");
}

public void setActiveNode(StructureViewNode activeNode, int lineOffset) {
public void setActiveNode(IStructureViewNode activeNode, int lineOffset) {
throw new RuntimeException("not implemented");
}


+ 1
- 1
ajde/src/org/aspectj/ajde/ui/swing/BuildConfigPopupMenu.java ファイルの表示

@@ -47,7 +47,7 @@ public class BuildConfigPopupMenu extends JPopupMenu {
action.actionPerformed(e);
}
});
buildItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getStructureIcon(IProgramElement.Kind.FILE_LST).getIconResource());
buildItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getIcon(IProgramElement.Kind.FILE_LST).getIconResource());
this.add(buildItem);
}
}

+ 3
- 3
ajde/src/org/aspectj/ajde/ui/swing/IconRegistry.java ファイルの表示

@@ -109,11 +109,11 @@ public class IconRegistry extends AbstractIconRegistry {
public Icon getStructureViewIcon() { return STRUCTURE_VIEW; }

public Icon getAssociationSwingIcon(IRelationship.Kind relation) {
return convertToSwingIcon(getRelationIcon(relation));
return convertToSwingIcon(getIcon(relation));
}
protected AbstractIcon getStructureIcon(IProgramElement.Kind kind, IProgramElement.Accessibility accessibility) {
return getStructureIcon(kind);
return getIcon(kind);
}
public Icon getStructureSwingIcon(IProgramElement.Kind kind, IProgramElement.Accessibility accessibility) {
@@ -121,7 +121,7 @@ public class IconRegistry extends AbstractIconRegistry {
}
public Icon getStructureSwingIcon(IProgramElement.Kind kind) {
return convertToSwingIcon(getStructureIcon(kind));
return convertToSwingIcon(getIcon(kind));
}

public Icon getAccessibilitySwingIcon(IProgramElement.Accessibility accessibility) {

+ 2
- 2
ajde/src/org/aspectj/ajde/ui/swing/StructureViewPanel.java ファイルの表示

@@ -84,11 +84,11 @@ public class StructureViewPanel extends JPanel implements StructureViewRenderer
view.setRenderer(this);
}

public void setActiveNode(StructureViewNode node) {
public void setActiveNode(IStructureViewNode node) {
setActiveNode(node, 0);
}

public void setActiveNode(StructureViewNode node, int lineOffset) {
public void setActiveNode(IStructureViewNode node, int lineOffset) {
if (node == null) return;
if (!(node.getStructureNode() instanceof IProgramElement)) return;
IProgramElement pNode = (IProgramElement)node.getStructureNode();

+ 49
- 14
ajde/src/org/aspectj/ajde/ui/swing/SwingTreeViewNode.java ファイルの表示

@@ -19,20 +19,27 @@ import java.util.*;
import javax.swing.tree.DefaultMutableTreeNode;

import org.aspectj.ajde.ui.*;
import org.aspectj.ajde.ui.IStructureViewNode.Kind;
import org.aspectj.asm.*;

/**
* @author Mik Kersten
*/
public class SwingTreeViewNode extends DefaultMutableTreeNode implements StructureViewNode {
public class SwingTreeViewNode extends DefaultMutableTreeNode implements IStructureViewNode {

private String relationshipName;
private IProgramElement programElement;
private AbstractIcon icon;
private IStructureViewNode.Kind kind;

/**
* Create a declaration node.
*/
public SwingTreeViewNode(IProgramElement programElement, AbstractIcon icon, List children) {
super(programElement, true);
this.programElement = programElement;
this.icon = icon;
this.kind = Kind.DECLARATION;
if (children != null) {
for (Iterator it = children.iterator(); it.hasNext(); ) {
@@ -41,17 +48,24 @@ public class SwingTreeViewNode extends DefaultMutableTreeNode implements Structu
}
}

/**
* Create a relationship node.
*/
public SwingTreeViewNode(IRelationship relationship, AbstractIcon icon) {
// super(IProgramElement, true);
throw new RuntimeException("unimplemented");
// this.IProgramElement = IProgramElement;
// this.icon = icon;
//
// if (children != null) {
// for (Iterator it = children.iterator(); it.hasNext(); ) {
// super.add((SwingTreeViewNode)it.next());
// }
// }
super(null, true);
this.icon = icon;
this.kind = Kind.RELATIONSHIP;
this.relationshipName = relationship.getName();
}
/**
* Create a link.
*/
public SwingTreeViewNode(IProgramElement programElement, AbstractIcon icon) {
super(programElement, false);
this.programElement = programElement;
this.kind = Kind.LINK;
this.icon = icon;
}
public IProgramElement getStructureNode() {
@@ -62,11 +76,15 @@ public class SwingTreeViewNode extends DefaultMutableTreeNode implements Structu
return icon;
}

public void add(StructureViewNode child) {
public void add(IStructureViewNode child) {
super.add((DefaultMutableTreeNode)child);
}

public void add(IStructureViewNode child, int position) {
super.insert((DefaultMutableTreeNode)child, position);
}
public void remove(StructureViewNode child) {
public void remove(IStructureViewNode child) {
super.remove((DefaultMutableTreeNode)child);
}
@@ -77,5 +95,22 @@ public class SwingTreeViewNode extends DefaultMutableTreeNode implements Structu
return children;
}
}
public Kind getKind() {
return kind;
}

public String getRelationshipName() {
return relationshipName;
}
public String toString() {
if (kind == IStructureViewNode.Kind.RELATIONSHIP) {
return relationshipName;
} else {
return programElement.getName();
}
}

}


+ 12
- 3
ajde/src/org/aspectj/ajde/ui/swing/SwingTreeViewNodeFactory.java ファイルの表示

@@ -28,12 +28,21 @@ public class SwingTreeViewNodeFactory extends StructureViewNodeFactory {
public SwingTreeViewNodeFactory(IconRegistry iconRegistry) {
super(iconRegistry);
}
protected StructureViewNode createConcreteNode(IProgramElement node, AbstractIcon icon, List children) {

protected IStructureViewNode createDeclaration(
IProgramElement node,
AbstractIcon icon,
List children) {
return new SwingTreeViewNode(node, icon, children);
}

protected StructureViewNode createConcreteNode(
protected IStructureViewNode createLink(
IProgramElement node,
AbstractIcon icon) {
return new SwingTreeViewNode(node, icon);
}

protected IStructureViewNode createRelationship(
IRelationship relationship,
AbstractIcon icon) {
return new SwingTreeViewNode(relationship, icon);

+ 26
- 30
ajde/src/org/aspectj/ajde/ui/swing/SwingTreeViewNodeRenderer.java ファイルの表示

@@ -19,6 +19,7 @@ import java.awt.*;
import javax.swing.*;
import javax.swing.tree.DefaultTreeCellRenderer;

import org.aspectj.ajde.ui.IStructureViewNode;
import org.aspectj.asm.*;
import org.aspectj.bridge.*;

@@ -34,41 +35,39 @@ class SwingTreeViewNodeRenderer extends DefaultTreeCellRenderer {
boolean leaf,
int row,
boolean hasFocus) {
if (treeNode == null) return null;
if (treeNode == null) return null;
this.setFont(StructureTree.DEFAULT_FONT);
SwingTreeViewNode viewNode = (SwingTreeViewNode)treeNode;
IProgramElement node = viewNode.getStructureNode();

// if (node instanceof LinkNode) {
// ISourceLocation sourceLoc = ((LinkNode)node).getProgramElementNode().getSourceLocation();
// if ((null != sourceLoc)
// && (null != sourceLoc.getSourceFile().getAbsolutePath())) {
// setTextNonSelectionColor(AjdeWidgetStyles.LINK_NODE_COLOR);
// } else {
// setTextNonSelectionColor(AjdeWidgetStyles.LINK_NODE_NO_SOURCE_COLOR);
// }
// } else {
setTextNonSelectionColor(new Color(0, 0, 0));
// }
super.getTreeCellRendererComponent(tree, treeNode, sel, expanded, leaf, row, hasFocus);
this.setFont(StructureTree.DEFAULT_FONT);
if (viewNode.getKind() == IStructureViewNode.Kind.LINK) {
ISourceLocation sourceLoc = node.getSourceLocation();
if ((null != sourceLoc)
&& (null != sourceLoc.getSourceFile().getAbsolutePath())) {
setTextNonSelectionColor(AjdeWidgetStyles.LINK_NODE_COLOR);
} else {
setTextNonSelectionColor(AjdeWidgetStyles.LINK_NODE_NO_SOURCE_COLOR);
}
} else if (viewNode.getKind() == IStructureViewNode.Kind.RELATIONSHIP) {
this.setFont(new Font(this.getFont().getName(), Font.ITALIC, this.getFont().getSize()));
setTextNonSelectionColor(new Color(0, 0, 0));
} else if (viewNode.getKind() == IStructureViewNode.Kind.DECLARATION) {
setTextNonSelectionColor(new Color(0, 0, 0));
}
super.getTreeCellRendererComponent(tree, treeNode, sel, expanded, leaf, row, hasFocus);
if (viewNode.getIcon() != null && viewNode.getIcon().getIconResource() != null) {
setIcon((Icon)viewNode.getIcon().getIconResource());
} else {
setIcon(null);
}
if (node instanceof IProgramElement) {
// if (pNode.isRunnable()) {
// //setIcon(AjdeUIManager.getDefault().getIconRegistry().getExecuteIcon());
// }
// if (pNode.isImplementor()) {
// //this.setText("<implementor>");
// }
// if (pNode.isOverrider()) {
// //this.setText("<overrider>");
// }
if (node != null) {
if (node.isRunnable()) {
setIcon(AjdeUIManager.getDefault().getIconRegistry().getExecuteIcon());
}
if (node.getMessage() != null) {
if (node.getMessage().getKind().equals(IMessage.WARNING)) {
setIcon(AjdeUIManager.getDefault().getIconRegistry().getWarningIcon());
@@ -79,10 +78,7 @@ class SwingTreeViewNodeRenderer extends DefaultTreeCellRenderer {
}
}

}
// else if (node instanceof IRelationship) {
// this.setFont(new Font(this.getFont().getName(), Font.ITALIC, this.getFont().getSize()));
// }
}
return this;
}
}

+ 1
- 1
ajde/src/org/aspectj/ajde/ui/swing/TreeViewBuildConfigEditor.java ファイルの表示

@@ -254,7 +254,7 @@ public class TreeViewBuildConfigEditor extends JPanel implements BuildConfigEdit
} else if (kind.equals(BuildConfigNode.Kind.DIRECTORY)) {
setIcon(AjdeUIManager.getDefault().getIconRegistry().getStructureSwingIcon(IProgramElement.Kind.PACKAGE));
} else {
setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getStructureIcon(IProgramElement.Kind.ERROR).getIconResource());
setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getIcon(IProgramElement.Kind.ERROR).getIconResource());
p.remove(cbox);
}

+ 29
- 13
ajde/testdata/examples/coverage/ModelCoverage.java ファイルの表示

@@ -36,19 +36,35 @@ class SubPoint extends Point { }
class Line { }

aspect AdvisesRelationshipCoverage {
pointcut executionP(): execution(void Point.setX(int));
before(): executionP() { }
before(): execution(*..*.new(..)) { }
before(): get(int *.*) { }
before(): set(int *.*) { }
before(): initialization(Point.new(..)) { }
before(): staticinitialization(Point) { }
before(): handler(IOException) { }
before(): call(* Point.setX(int)) { }
before(): call(Point.new()) { }
before(): within(*) && execution(* Point.setX(..)) { }
before(): within(*) && execution(Point.new()) { }
pointcut methodExecutionP(): execution(void Point.setX(int));
before(): methodExecutionP() { }
pointcut constructorExecutionP(): execution(Point.new());
before(): constructorExecutionP() { }

pointcut callMethodP(): call(* Point.setX(int));
before(): callMethodP() { }

pointcut callConstructorP(): call(Point.new());
before(): callConstructorP() { }

pointcut getP(): get(int *.*);
before(): getP() { }

pointcut setP(): set(int *.*);
before(): setP() { }

pointcut initializationP(): initialization(Point.new(..));
before(): initializationP() { }

pointcut staticinitializationP(): staticinitialization(Point);
before(): staticinitializationP() { }

pointcut handlerP(): handler(IOException);
before(): handlerP() { }

// before(): within(*) && execution(* Point.setX(..)) { }
// before(): within(*) && execution(Point.new()) { }
}

aspect AdviceNamingCoverage {

+ 1
- 1
ajde/testsrc/org/aspectj/ajde/AjdeTests.java ファイルの表示

@@ -29,7 +29,7 @@ public class AjdeTests extends TestCase {
suite.addTestSuite(CompilerMessagesTest.class);
suite.addTestSuite(AsmDeclarationsTest.class);
suite.addTestSuite(AsmRelationshipsTest.class);
// suite.addTestSuite(ResourceCopyTestCase.class);
suite.addTestSuite(ResourceCopyTestCase.class);
//$JUnit-END$
return suite;

+ 6
- 6
ajde/testsrc/org/aspectj/ajde/AsmDeclarationsTest.java ファイルの表示

@@ -47,7 +47,7 @@ public class AsmDeclarationsTest extends AjdeTestCase {
IProgramElement node = (IProgramElement)model.getRoot();
assertNotNull(node);
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "InterTypeDecCoverage");
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "InterTypeDecCoverage");
assertNotNull(aspect);
String decErrMessage = "declare error: \"Illegal construct..\"";
@@ -90,7 +90,7 @@ public class AsmDeclarationsTest extends AjdeTestCase {
IProgramElement node = (IProgramElement)model.getRoot();
assertNotNull(node);
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "InterTypeDecCoverage");
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "InterTypeDecCoverage");
assertNotNull(aspect);
String fieldMsg = "Point.xxx";
@@ -114,7 +114,7 @@ public class AsmDeclarationsTest extends AjdeTestCase {
IProgramElement node = (IProgramElement)model.getRoot();
assertNotNull(node);
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AdviceNamingCoverage");
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "AdviceNamingCoverage");
assertNotNull(aspect);
String ptct = "named()";
@@ -134,7 +134,7 @@ public class AsmDeclarationsTest extends AjdeTestCase {
IProgramElement node = (IProgramElement)model.getRoot();
assertNotNull(node);
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AbstractAspect");
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "AbstractAspect");
assertNotNull(aspect);
String abst = "abPtct()";
@@ -147,7 +147,7 @@ public class AsmDeclarationsTest extends AjdeTestCase {
IProgramElement node = (IProgramElement)model.getRoot();
assertNotNull(node);
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AdviceNamingCoverage");
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "AdviceNamingCoverage");
assertNotNull(aspect);

String anon = "before(): <anonymous pointcut>";
@@ -189,7 +189,7 @@ public class AsmDeclarationsTest extends AjdeTestCase {
protected void setUp() throws Exception {
super.setUp("examples");
assertTrue("build success", doSynchronousBuild(CONFIG_FILE_PATH));
model = StructureModelManager.getDefault().getStructureModel();
model = StructureModelManager.getDefault().getModel();
}

protected void tearDown() throws Exception {

+ 35
- 32
ajde/testsrc/org/aspectj/ajde/AsmRelationshipsTest.java ファイルの表示

@@ -11,59 +11,62 @@

package org.aspectj.ajde;

import java.util.Iterator;
import java.util.List;

import org.aspectj.ajdt.internal.core.builder.AsmNodeFormatter;
import org.aspectj.asm.*;
import org.aspectj.asm.IProgramElement.Kind;


// TODO: check for return types
public class AsmRelationshipsTest extends AjdeTestCase {
private StructureModel model = null;
private StructureModelManager manager = null;
private static final String CONFIG_FILE_PATH = "../examples/coverage/coverage.lst";

public AsmRelationshipsTest(String name) {
super(name);
}
public void testExecution() {
IProgramElement node = (IProgramElement)model.getRoot();
public void testAdvice() {
IProgramElement node = (IProgramElement)manager.getModel().getRoot();
assertNotNull(node);
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AdvisesRelationshipCoverage");
checkMapping("AdvisesRelationshipCoverage", "Point", "before(): methodExecutionP..", "setX(int)");
checkUniDirectionalMapping("AdvisesRelationshipCoverage", "Point", "before(): getP..", "field-get(int Point.x)");
checkUniDirectionalMapping("AdvisesRelationshipCoverage", "Point", "before(): setP..", "field-set(int Point.xxx)");
}

private void checkUniDirectionalMapping(String fromType, String toType, String from, String to) {
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, fromType);
assertNotNull(aspect);
String beforeExec = from;
IProgramElement beforeExecNode = manager.getModel().findNode(aspect, IProgramElement.Kind.ADVICE, beforeExec);
assertNotNull(beforeExecNode);
IRelationship rel = manager.getMapper().get(beforeExecNode);
assertEquals(((IProgramElement)rel.getTargets().get(0)).getName(), to);
}

String beforeExec = "before(): executionP..";
IProgramElement beforeExecNode = model.findNode(aspect, IProgramElement.Kind.ADVICE, beforeExec);
private void checkMapping(String fromType, String toType, String from, String to) {
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, fromType);
assertNotNull(aspect);
String beforeExec = from;
IProgramElement beforeExecNode = manager.getModel().findNode(aspect, IProgramElement.Kind.ADVICE, beforeExec);
assertNotNull(beforeExecNode);
// System.err.println("> root: " + node);
// assertEquals(ptctNode.getName(), ptct);
//
// IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AdviceNamingCoverage");
// assertNotNull(aspect);
// fail();
//
// String params = "namedWithArgs(int, int)";
// IProgramElement paramsNode = model.findNode(aspect, IProgramElement.Kind.POINTCUT, params);
// assertNotNull(paramsNode);
// assertEquals(paramsNode.getName(), params);
IRelationship rel = manager.getMapper().get(beforeExecNode);
assertEquals(((IProgramElement)rel.getTargets().get(0)).getName(), to);

IProgramElement clazz = StructureModelManager.getDefault().getModel().findNodeForType(null, toType);
assertNotNull(clazz);
String set = to;
IProgramElement setNode = manager.getModel().findNode(clazz, IProgramElement.Kind.METHOD, set);
assertNotNull(setNode);
IRelationship rel2 = manager.getMapper().get(setNode);
assertEquals(((IProgramElement)rel2.getTargets().get(0)).getName(), from);
}

protected void setUp() throws Exception {
super.setUp("examples");
assertTrue("build success", doSynchronousBuild(CONFIG_FILE_PATH));
model = StructureModelManager.getDefault().getStructureModel();
manager = StructureModelManager.getDefault();
}

protected void tearDown() throws Exception {

+ 3
- 3
ajde/testsrc/org/aspectj/ajde/StructureModelRegressionTest.java ファイルの表示

@@ -50,7 +50,7 @@ public class StructureModelRegressionTest extends AjdeTestCase {
if (modelFile.exists()) {
Ajde.getDefault().getStructureModelManager().readStructureModel(lstFile);
StructureModel savedModel = Ajde.getDefault().getStructureModelManager().getStructureModel();
StructureModel savedModel = Ajde.getDefault().getStructureModelManager().getModel();
//System.err.println( savedModel.getRoot().getClass() + ", " + savedModel.getRoot());
// AMC This test will not pass as written until IProgramElement defines
@@ -100,7 +100,7 @@ public class StructureModelRegressionTest extends AjdeTestCase {
Thread.sleep(300);
} catch (InterruptedException ie) { }
}
return Ajde.getDefault().getStructureModelManager().getStructureModel();
return Ajde.getDefault().getStructureModelManager().getModel();
}

protected void setUp() throws Exception {
@@ -109,7 +109,7 @@ public class StructureModelRegressionTest extends AjdeTestCase {
}
public void testModelExists() {
assertTrue(Ajde.getDefault().getStructureModelManager().getStructureModel() != null);
assertTrue(Ajde.getDefault().getStructureModelManager().getModel() != null);
}

protected void tearDown() throws Exception {

+ 6
- 6
ajde/testsrc/org/aspectj/ajde/StructureModelTest.java ファイルの表示

@@ -78,7 +78,7 @@ public class StructureModelTest extends AjdeTestCase {

public void testRootForSourceFile() throws IOException {
File testFile = openFile("figures-coverage/figures/Figure.java");
IProgramElement node = Ajde.getDefault().getStructureModelManager().getStructureModel().findRootNodeForSourceFile(
IProgramElement node = Ajde.getDefault().getStructureModelManager().getModel().findRootNodeForSourceFile(
testFile.getCanonicalPath());
assertTrue("find result", node != null) ;
IProgramElement pNode = (IProgramElement)node;
@@ -89,7 +89,7 @@ public class StructureModelTest extends AjdeTestCase {
public void testPointcutName() throws IOException {
File testFile = openFile("figures-coverage/figures/Main.java");
//System.err.println("PointcutName, testFile: " + testFile.getCanonicalPath() + " exists: " + testFile.exists());
IProgramElement node = Ajde.getDefault().getStructureModelManager().getStructureModel().findRootNodeForSourceFile(
IProgramElement node = Ajde.getDefault().getStructureModelManager().getModel().findRootNodeForSourceFile(
testFile.getCanonicalPath());
//System.err.println(" node: " + node);
assertTrue("find result", node != null) ;
@@ -107,7 +107,7 @@ public class StructureModelTest extends AjdeTestCase {
public void testFileNodeFind() throws IOException {
File testFile = openFile("figures-coverage/figures/Main.java");
//System.err.println("NodeFind, testFile: " + testFile.getCanonicalPath() + " exists: " + testFile.exists());
IProgramElement node = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine(
IProgramElement node = Ajde.getDefault().getStructureModelManager().getModel().findNodeForSourceLine(
testFile.getCanonicalPath(), 1);
//System.err.println(" node: " + node);
assertTrue("find result", node != null) ;
@@ -120,7 +120,7 @@ public class StructureModelTest extends AjdeTestCase {
* @todo add negative test to make sure things that aren't runnable aren't annotated
*/
public void testMainClassNodeInfo() throws IOException {
StructureModel model = Ajde.getDefault().getStructureModelManager().getStructureModel();
StructureModel model = Ajde.getDefault().getStructureModelManager().getModel();
assertTrue("model exists", model != null);
assertTrue("root exists", model.getRoot() != null);
File testFile = openFile("figures-coverage/figures/Main.java");
@@ -137,7 +137,7 @@ public class StructureModelTest extends AjdeTestCase {
* Integrity could be checked somewhere in the API.
*/
public void testModelIntegrity() {
IProgramElement modelRoot = Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot();
IProgramElement modelRoot = Ajde.getDefault().getStructureModelManager().getModel().getRoot();
assertTrue("root exists", modelRoot != null);
try {
@@ -167,7 +167,7 @@ public class StructureModelTest extends AjdeTestCase {
}
}
};
Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot().walk(walker);
Ajde.getDefault().getStructureModelManager().getModel().getRoot().walk(walker);
}
protected void setUp() throws Exception {

+ 1
- 1
ajde/testsrc/org/aspectj/ajde/ui/NullIdeFileStructureView.java ファイルの表示

@@ -32,7 +32,7 @@ public class NullIdeFileStructureView extends FileStructureView {
this.sourceFilePath = sourceFile;
}

public void setRootNode(StructureViewNode rootNode) {
public void setRootNode(IStructureViewNode rootNode) {
super.setRootNode(rootNode);
notifyViewUpdated();
}

+ 2
- 2
ajde/testsrc/org/aspectj/ajde/ui/NullIdeStructureViewRenderer.java ファイルの表示

@@ -25,11 +25,11 @@ public class NullIdeStructureViewRenderer implements StructureViewRenderer {
hasBeenNotified = true;
}
public void setActiveNode(StructureViewNode node) {
public void setActiveNode(IStructureViewNode node) {
// ignored
}
public void setActiveNode(StructureViewNode node, int lineOffset) {
public void setActiveNode(IStructureViewNode node, int lineOffset) {
// ignored
}

+ 3
- 3
ajde/testsrc/org/aspectj/ajde/ui/StructureViewManagerTest.java ファイルの表示

@@ -50,7 +50,7 @@ public class StructureViewManagerTest extends AjdeTestCase {
}

public void testModelExists() {
assertTrue(Ajde.getDefault().getStructureModelManager().getStructureModel() != null);
assertTrue(Ajde.getDefault().getStructureModelManager().getModel() != null);
}

public void testNotificationAfterConfigFileChange() {
@@ -85,7 +85,7 @@ public class StructureViewManagerTest extends AjdeTestCase {
//System.err.println(">>>>>> " + currentView.getRootNode().getIProgramElement());
// AMC should this be currentView, or should we recreate the root... do the latter
//IProgramElement n = currentView.getRootNode().getIProgramElement();
IProgramElement n = Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot();
IProgramElement n = Ajde.getDefault().getStructureModelManager().getModel().getRoot();
assertTrue(
"no structure",
//currentView.getRootNode().getIProgramElement().getChildren().get(0)
@@ -95,7 +95,7 @@ public class StructureViewManagerTest extends AjdeTestCase {

public void testModelIntegrity() {
doSynchronousBuild(CONFIG_FILE_PATH);
IProgramElement modelRoot = Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot();
IProgramElement modelRoot = Ajde.getDefault().getStructureModelManager().getModel().getRoot();
assertTrue("root exists", modelRoot != null);
try {

+ 3
- 3
asm/src/org/aspectj/asm/IRelationship.java ファイルの表示

@@ -24,7 +24,9 @@ public interface IRelationship extends Serializable {

public String getName();
public String getReverseName();
public List getTargets();
public IProgramElement getSource();
public Kind getKind();
@@ -34,8 +36,6 @@ public interface IRelationship extends Serializable {
public static class Kind implements Serializable {
public static final Kind ADVICE = new Kind("advice");
// public static final Kind INHERITANCE = new Kind("inherits", "inherited by");
// public static final Kind REFERENCE = new Kind("reference");
public static final Kind DECLARE = new Kind("declare");
public static final Kind[] ALL = { ADVICE, DECLARE };
private final String name;

+ 5
- 4
asm/src/org/aspectj/asm/IRelationshipMapper.java ファイルの表示

@@ -23,9 +23,10 @@ public interface IRelationshipMapper extends Serializable {
//
// public void putRelationshipForElement(String source, IRelationship kind, String target);
public List getRelationshipsForElement(IProgramElement source, IRelationship relationship);
public void putRelationshipForElement(IProgramElement source, IRelationship relationship, List targets);
public IRelationship get(IProgramElement source);

public void putRelationshipForElement(IProgramElement source, IRelationship kind, IProgramElement target);
// public void putRelationshipForElement(IProgramElement source, IRelationship relationship, List targets);

public void put(IProgramElement source, IRelationship relationship);
}

+ 2
- 5
asm/src/org/aspectj/asm/StructureModel.java ファイルの表示

@@ -94,7 +94,7 @@ public class StructureModel implements Serializable {
* @param packageName if null default package is searched
* @param className can't be null
*/
public IProgramElement findNodeForClass(String packageName, String className) {
public IProgramElement findNodeForType(String packageName, String typeName) {
IProgramElement packageNode = null;
if (packageName == null) {
packageNode = root;
@@ -111,7 +111,7 @@ public class StructureModel implements Serializable {
// this searches each file for a class
for (Iterator it = packageNode.getChildren().iterator(); it.hasNext(); ) {
IProgramElement fileNode = (IProgramElement)it.next();
IProgramElement ret = findClassInNodes(fileNode.getChildren(), className);
IProgramElement ret = findClassInNodes(fileNode.getChildren(), typeName);
if (ret != null) return ret;
}
@@ -130,11 +130,8 @@ public class StructureModel implements Serializable {
innerName = name.substring(dollar+1);
}
for (Iterator j = nodes.iterator(); j.hasNext(); ) {
IProgramElement classNode = (IProgramElement)j.next();
// System.err.println("checking: " + classNode + " for " + baseName);
// System.err.println("children: " + classNode.getChildren());
if (baseName.equals(classNode.getName())) {
if (innerName == null) return classNode;
else return findClassInNodes(classNode.getChildren(), innerName);

+ 8
- 4
asm/src/org/aspectj/asm/StructureModelManager.java ファイルの表示

@@ -33,15 +33,15 @@ public class StructureModelManager {
private List structureListeners = new ArrayList();

private IRelationshipMapper mapper;
private static final IRelationship ADVICE = new Relationship("advises", "advised by", IRelationship.Kind.ADVICE);
// public static final IRelationship ADVICE = new Relationship("advises", "advised by", IRelationship.Kind.ADVICE);

protected StructureModelManager() {
List relationships = new ArrayList();
relationships.add(ADVICE);
mapper = new RelationshipMapper(relationships);
// relationships.add(ADVICE);
mapper = new RelationshipMapper();
}

public StructureModel getStructureModel() {
public StructureModel getModel() {
return model;
}

@@ -168,5 +168,9 @@ public class StructureModelManager {
public static StructureModelManager getDefault() {
return INSTANCE;
}
public IRelationshipMapper getMapper() {
return mapper;
}

}


+ 22
- 10
asm/src/org/aspectj/asm/internal/Relationship.java ファイルの表示

@@ -24,28 +24,40 @@ import org.aspectj.asm.IRelationship.Kind;
public class Relationship implements IRelationship {
private String name;
private String reverseName;
private Kind kind;
private IProgramElement source;
private List targets;
public Relationship(String name, String reverseName, Kind kind) {
public Relationship(
String name,
Kind kind,
IProgramElement source,
List targets) {
this.name = name;
this.reverseName = reverseName;
this.kind = kind;
this.source = source;
this.targets = targets;
}
public String getName() {
return null;
return name;
}

public Kind getKind() {
return null;
}
public String getReverseName() {
return reverseName;
return kind;
}

public String toString() {
return name + '/' + reverseName;
return name;
}
public IProgramElement getSource() {
return source;
}

public List getTargets() {
return targets;
}

}

+ 4
- 57
asm/src/org/aspectj/asm/internal/RelationshipMapper.java ファイルの表示

@@ -16,44 +16,15 @@ import org.aspectj.asm.*;
*/
public class RelationshipMapper extends HashMap implements IRelationshipMapper {
private Map/*IRelationship*/ relationships = new HashMap();
public RelationshipMapper(List availableRelationships) {
for (Iterator it = availableRelationships.iterator(); it.hasNext(); ) {
IRelationship r = (IRelationship)it.next();
relationships.put(r, new HashMap());
}
}
public List getRelationshipsForElement(IProgramElement source, IRelationship relationship) {
Map map = (Map)relationships.get(relationship);
return (List)map.get(source);
public IRelationship get(IProgramElement source) {
return (IRelationship)super.get(source);
}

/**
* Creates the relationship if not present.
*/
public void putRelationshipForElement(IProgramElement source, IRelationship relationship, List targets) {
Map map = (Map)relationships.get(relationship);
if (map == null) {
map = new HashMap();
relationships.put(relationship, map);
}
map.put(source, targets);
}

public void putRelationshipForElement(IProgramElement source, IRelationship relationship, IProgramElement target) {
Map map = (Map)relationships.get(relationship);
if (map == null) {
map = new HashMap();
relationships.put(relationship, map);
}
List targetList = (List)map.get(source);
if (targetList == null) {
targetList = new ArrayList();
map.put(source, targetList);
}
targetList.add(target);
public void put(IProgramElement source, IRelationship relationship) {
super.put(source, relationship);
}

private static class RelationshipTable {
@@ -73,28 +44,4 @@ public class RelationshipMapper extends HashMap implements IRelationshipMapper {
return relationship;
}
}
// public List getRelationshipsForElement(
// IProgramElement source,
// IRelationship relationship) {
//
// String signatureKey = (List)getRelationshipsForElement(source.getSignatureKey(), relationship);
//
// }
//
// public void putRelationshipForElement(
// IProgramElement source,
// IRelationship kind,
// IProgramElement target) {
//
// }
//
// public void putRelationshipForElement(
// IProgramElement source,
// IRelationship relationship,
// List targets) {
//
// }

}

+ 4
- 2
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java ファイルの表示

@@ -118,7 +118,7 @@ public class AjBuildManager {
if (batch) {
// System.err.println("XXXX batch: " + buildConfig.getFiles());
if (buildConfig.isEmacsSymMode() || buildConfig.isGenerateModelMode()) {
bcelWorld.setModel(StructureModelManager.getDefault().getStructureModel());
bcelWorld.setModel(StructureModelManager.getDefault().getModel());
// in incremental build, only get updated model?
}
performCompilation(buildConfig.getFiles());
@@ -167,7 +167,7 @@ public class AjBuildManager {
private void setupModel() {
String rootLabel = "<root>";
StructureModel model = StructureModelManager.getDefault().getStructureModel();
StructureModel model = StructureModelManager.getDefault().getModel();
IProgramElement.Kind kind = IProgramElement.Kind.FILE_JAVA;
if (buildConfig.getConfigFile() != null) {
rootLabel = buildConfig.getConfigFile().getName();
@@ -247,12 +247,14 @@ public class AjBuildManager {
bcelWeaver.dumpUnwoven(buildConfig.getOutputJar());
} else {
bcelWeaver.dumpUnwoven();
bcelWeaver.dumpResourcesToOutPath();
}
} else {
if (buildConfig.getOutputJar() != null) {
bcelWeaver.weave(buildConfig.getOutputJar());
} else {
bcelWeaver.weave();
bcelWeaver.dumpResourcesToOutPath();
}
}
if (progressListener != null) progressListener.setProgress(1.0);

+ 2
- 2
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/EmacsStructureModelManager.java ファイルの表示

@@ -32,11 +32,11 @@ public class EmacsStructureModelManager {
}

public void externalizeModel() {
if (!StructureModelManager.getDefault().getStructureModel().isValid()) return;
if (!StructureModelManager.getDefault().getModel().isValid()) return;
try {
//Set fileSet = StructureModelManager.INSTANCE.getStructureModel().getFileMap().entrySet();
Set fileSet = StructureModelManager.getDefault().getStructureModel().getFileMapEntrySet();
Set fileSet = StructureModelManager.getDefault().getModel().getFileMapEntrySet();
for (Iterator it = fileSet.iterator(); it.hasNext(); ) {
IProgramElement peNode = (IProgramElement)((Map.Entry)it.next()).getValue();
dumpStructureToFile(peNode);

+ 1
- 1
org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/internal/core/builder/AjBuildManagerTest.java ファイルの表示

@@ -73,7 +73,7 @@ public class AjBuildManagerTest extends TestCase {
}, messageWriter);
String err = parser.getOtherMessages(true);
assertTrue(err, null == err);
manager.setStructureModel(StructureModelManager.getDefault().getStructureModel());
manager.setStructureModel(StructureModelManager.getDefault().getModel());
MessageHandler handler = new MessageHandler();
manager.batchBuild(buildConfig, handler);
assertCompileMessagesValid(handler);

+ 7
- 2
testing/src/org/aspectj/testing/ajde/CompileCommand.java ファイルの表示

@@ -146,17 +146,22 @@ public class CompileCommand implements ICommand {
};
StructureViewNodeFactory structureViewNodeFactory =
new StructureViewNodeFactory(iconRegistry) {
protected StructureViewNode createConcreteNode(
protected IStructureViewNode createDeclaration(
IProgramElement node,
AbstractIcon icon,
List children) {
return new SwingTreeViewNode(node, icon, children);
}
protected StructureViewNode createConcreteNode(
protected IStructureViewNode createRelationship(
IRelationship node,
AbstractIcon icon) {
return new SwingTreeViewNode(node, icon);
}
protected IStructureViewNode createLink(
IProgramElement node,
AbstractIcon icon) {
return new SwingTreeViewNode(node, icon);
}
};

Ajde.init(

読み込み中…
キャンセル
保存