|
From: <cal...@us...> - 2007-02-28 12:32:21
|
Revision: 2053
http://svn.sourceforge.net/rubyeclipse/?rev=2053&view=rev
Author: callandor1983
Date: 2007-02-28 03:57:16 -0800 (Wed, 28 Feb 2007)
Log Message:
-----------
all generated ASTs will now be cached in DocumentProvider. (generation of ASTs in test run reduced from around 3000 to 850)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.refactoring/build.properties
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/classnodeprovider/ClassNodeProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/classnodeprovider/IncludedClassesProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/RefactoringConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/converttemptofield/TempToFieldConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/encapsulatefield/EncapsulateFieldConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractMethodConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/formatsource/FormattedSourceEditProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/ClassInliner.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/InlineClassConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/InsertClassBuilder.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConfig.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/MethodBodyStatementReplacer.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/ParameterReplacer.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/RenameDuplicatedVariables.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/ReturnStatementReplacer.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/TargetClassFinder.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinetemp/InlineTempConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movefield/MoveFieldConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/MoveMethodConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renameclass/ClassInstanciationFinder.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renameclass/RenameClassConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamefield/RenameFieldConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamelocalvariable/LocalVariableRenamer.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamelocalvariable/RenameLocalConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/MethodRenamer.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/RenameMethodConditionChecker.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/RenameMethodConfig.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/splittemp/LocalVarFinder.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentWithIncluding.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/IDocumentProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/StringDocumentProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/nodewrapper/MethodCallNodeWrapper.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/FileTestCase.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/RefactoringTestCase.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/classnodeprovider/ClassNodeProviderTester.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/MultipleDocumentsInOneProvider.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/TC_RefactoringConditionChecker.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/TC_SelectionNodeProvider.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/generateaccessors/TC_AccessorsGeneratorTreeTest.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/generateconstructor/TC_ConstructorGeneratorTreeTest.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/inlineclass/ClassInlinerTester.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/inlineclass/conditionchecks/InlineClassConditionTester.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/overridemethod/TC_MethodOverriderTreeTest.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/overridemethod/TC_OverridenMethodEditTest.java
trunk/org.rubypeople.rdt.refactoring.tests/src/org/rubypeople/rdt/refactoring/tests/core/pushdown/TC_MethodDownPusherTreeTest.java
Modified: trunk/org.rubypeople.rdt.refactoring/build.properties
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/build.properties 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/build.properties 2007-02-28 11:57:16 UTC (rev 2053)
@@ -1,6 +1,4 @@
jars.compile.order = .
-source.. = src/
-output.. = bin/
bin.includes = refactoring.jar,\
plugin.xml,\
META-INF/,\
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/classnodeprovider/ClassNodeProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/classnodeprovider/ClassNodeProvider.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/classnodeprovider/ClassNodeProvider.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -64,7 +64,7 @@
}
public void addSource(String sourceName) {
- Node rootNode = NodeProvider.getRootNode(sourceName, documentProvider.getFileContent(sourceName));
+ Node rootNode = documentProvider.getRootNode(sourceName);
createClassNodes(rootNode);
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/classnodeprovider/IncludedClassesProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/classnodeprovider/IncludedClassesProvider.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/classnodeprovider/IncludedClassesProvider.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -63,7 +63,7 @@
private void prepareIncludedFileNames() {
includeFilePaths = new ArrayList<IPath>();
- Node rootNode = documentProvider.getRootNode();
+ Node rootNode = documentProvider.getActiveFileRootNode();
Collection<FCallNode> loadAndRequireNodes = NodeProvider.getLoadAndRequireNodes(rootNode);
for (FCallNode fCallNode : loadAndRequireNodes) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -294,11 +294,6 @@
return getNodeBefore(parentNode, node) != null;
}
- public static Collection<Node> getAllNodesFromFile(String fileName, String fileContent) {
-
- return getAllNodes(getRootNode(fileName, fileContent));
- }
-
public static Collection<Node> getAllNodes(Node parentNode) {
Collection<Node> allNodes = new ArrayList<Node>();
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/RefactoringConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/RefactoringConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/RefactoringConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -110,7 +110,7 @@
}
for(String aktFileName : docProvider.getFileNames()) {
fileName = aktFileName;
- NodeProvider.getRootNode(aktFileName, docProvider.getFileContent(aktFileName));
+ docProvider.getRootNode(aktFileName);
}
} catch(SyntaxException se) {
String activeFileName = docProvider.getActiveFileName();
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -60,7 +60,6 @@
import org.rubypeople.rdt.refactoring.exception.NoClassNodeException;
import org.rubypeople.rdt.refactoring.nodewrapper.AttrAccessorNodeWrapper;
import org.rubypeople.rdt.refactoring.nodewrapper.ClassNodeWrapper;
-import org.rubypeople.rdt.refactoring.nodewrapper.FieldNodeWrapper;
import org.rubypeople.rdt.refactoring.nodewrapper.INodeWrapper;
import org.rubypeople.rdt.refactoring.nodewrapper.PartialClassNodeWrapper;
import org.rubypeople.rdt.refactoring.util.NodeUtil;
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/converttemptofield/TempToFieldConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/converttemptofield/TempToFieldConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/converttemptofield/TempToFieldConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -60,7 +60,7 @@
public void init(Object configObj) {
config = (TempToFieldConfig) configObj;
- rootNode = config.getDocProvider().getRootNode();
+ rootNode = config.getDocProvider().getActiveFileRootNode();
Node selectedNode = findSelectedNode(LocalAsgnNode.class, LocalVarNode.class, DVarNode.class, DAsgnNode.class);
if (selectedNode != null) {
config.setSelectedNode(new LocalNodeWrapper(selectedNode));
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/encapsulatefield/EncapsulateFieldConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/encapsulatefield/EncapsulateFieldConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/encapsulatefield/EncapsulateFieldConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -53,7 +53,7 @@
public void init(Object configObj) {
config = (EncapsulateFieldConfig) configObj;
- rootNode = config.getDocProvider().getRootNode();
+ rootNode = config.getDocProvider().getActiveFileRootNode();
config.setSelectedInstNode(findSelectedInstNode(config.getCaretPosition()));
if (!config.hasSelectedInstNode()) {
return;
@@ -101,11 +101,11 @@
}
private boolean selectedNodeIsInstVarNodeAndNotInMethod() {
- Node selectedVarNode = SelectionNodeProvider.getSelectedNodeOfType(config.getDocProvider().getRootNode(), config.getCaretPosition(), InstVarNode.class, InstAsgnNode.class);
+ Node selectedVarNode = SelectionNodeProvider.getSelectedNodeOfType(config.getDocProvider().getActiveFileRootNode(), config.getCaretPosition(), InstVarNode.class, InstAsgnNode.class);
if (selectedVarNode == null) {
return false;
}
- Node enclosingMethod = SelectionNodeProvider.getSelectedNodeOfType(config.getDocProvider().getRootNode(), config.getCaretPosition(), DefnNode.class);
+ Node enclosingMethod = SelectionNodeProvider.getSelectedNodeOfType(config.getDocProvider().getActiveFileRootNode(), config.getCaretPosition(), DefnNode.class);
return enclosingMethod == null;
}
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractMethodConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractMethodConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractMethodConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -73,7 +73,7 @@
}
private void initEnclosingNodes() {
- RootNode rootNode = config.getDocumentProvider().getRootNode();
+ RootNode rootNode = config.getDocumentProvider().getActiveFileRootNode();
config.setRootNode(rootNode);
config.setEnclosingScopeNode(SelectionNodeProvider.getEnclosingScope(rootNode, config.getSelection().getStartOfSelection()));
config.setEnclosingMethodNode((MethodDefNode) SelectionNodeProvider.getEnclosingNode(rootNode, config.getSelection(), MethodDefNode.class));
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/formatsource/FormattedSourceEditProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/formatsource/FormattedSourceEditProvider.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/formatsource/FormattedSourceEditProvider.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -38,7 +38,7 @@
public FormattedSourceEditProvider(FormatSourceConfig config) {
super(true);
- this.fileRootNode = config.getDocumentProvider().getRootNode();
+ this.fileRootNode = config.getDocumentProvider().getActiveFileRootNode();
}
@Override
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/ClassInliner.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/ClassInliner.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/ClassInliner.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -75,11 +75,11 @@
@Override
protected Node getInsertNode(int offset, String document) {
try {
- Node rootNode = provider.getRootNode();
+ Node rootNode = provider.getActiveFileRootNode();
return SelectionNodeProvider.getSelectedClassNode(rootNode, 1).getFirstPartialClassNode().getClassBodyNode();
} catch (NoClassNodeException e) {
- return provider.getRootNode();
+ return provider.getActiveFileRootNode();
}
}
@@ -299,7 +299,7 @@
public PartialClassNodeWrapper getInlinedClassPart(){
DocumentProvider docProvider = config.getDocProvider();
- Node rootNode = docProvider.getRootNode();
+ Node rootNode = docProvider.getActiveFileRootNode();
try {
return SelectionNodeProvider.getSelectedClassNode(rootNode, config.getCaretPosition()).getFirstPartialClassNode();
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/InlineClassConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/InlineClassConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/InlineClassConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -66,7 +66,7 @@
private void intiSourceClass() {
int caretPosition = config.getCaretPosition();
- Node rootNode = docProvider.getRootNode();
+ Node rootNode = docProvider.getActiveFileRootNode();
try {
selectedClass = SelectionNodeProvider.getSelectedClassNode(rootNode, caretPosition);
config.setSourceClass(selectedClass);
@@ -116,7 +116,7 @@
ArrayList<ClassNodeWrapper> possibleClassNodes = new ArrayList<ClassNodeWrapper>();
- Node rootNode = config.getDocProvider().getRootNode();
+ Node rootNode = config.getDocProvider().getActiveFileRootNode();
try {
ClassNodeWrapper selectedClass = SelectionNodeProvider.getSelectedClassNode(rootNode, config.getCaretPosition());
for(ClassNodeWrapper currentClass : classNodes){
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/InsertClassBuilder.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/InsertClassBuilder.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlineclass/InsertClassBuilder.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -84,7 +84,7 @@
prechanges.addChildren(getFieldRenameEdits(conflictingFields, inlinedClassDocumentProvider));
prechanges.addChildren(getConstructorDeleteEdits(inlinedClassDocumentProvider));
- return new StringDocumentProvider(applyPrechanges(prechanges, inlinedClassDocumentProvider));
+ return new StringDocumentProvider(inlinedClassDocumentProvider.getActiveFileName() + "_with_applied_prechanges", applyPrechanges(prechanges, inlinedClassDocumentProvider));
}
@@ -200,13 +200,14 @@
ISourcePosition classPartPosition = inlinedClassPart.getWrappedNode().getPosition();
String activeFileContent = config.getDocProvider().getActiveFileContent();
String inlinedClassDocument = activeFileContent.substring(classPartPosition.getStartOffset(), classPartPosition.getEndOffset());
- StringDocumentProvider inlinedClassDocumentProvider = new StringDocumentProvider(inlinedClassDocument);
+ String fileName = "part_of_" + config.getDocProvider().getActiveFileName();
+ StringDocumentProvider inlinedClassDocumentProvider = new StringDocumentProvider(fileName, inlinedClassDocument);
return inlinedClassDocumentProvider;
}
private TextEdit[] getConstructorDeleteEdits(StringDocumentProvider inlinedClassDocument) {
ArrayList<TextEdit> constructorDeleters = new ArrayList<TextEdit>();
- Node rootNode = inlinedClassDocument.getRootNode();
+ Node rootNode = inlinedClassDocument.getActiveFileRootNode();
ClassNodeWrapper classNode;
try {
classNode = SelectionNodeProvider.getSelectedClassNode(rootNode, 1);
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -60,7 +60,7 @@
if(!(findSelectedCall(config.getPos()) && findTargetClass(config.getTargetClassFinder()) && findMethodDefinition())) {
return;
}
- config.setCellParent(NodeProvider.findParentNode(config.getDocumentProvider().getRootNode(), config.getSelectedCall().getWrappedNode()));
+ config.setCallParent(NodeProvider.findParentNode(config.getDocumentProvider().getActiveFileRootNode(), config.getSelectedCall().getWrappedNode()));
replaceParameters();
@@ -73,7 +73,7 @@
}
private void renameDuplicates(DocumentProvider doc) {
- StaticScope parent = NodeUtil.getScope(SelectionNodeProvider.getEnclosingScope(doc.getRootNode(), config.getSelectedCall().getWrappedNode()));
+ StaticScope parent = NodeUtil.getScope(SelectionNodeProvider.getEnclosingScope(doc.getActiveFileRootNode(), config.getSelectedCall().getWrappedNode()));
ArrayList<String> localNames = new ArrayList<String>();
if(parent.getVariables() != null) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConfig.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConfig.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConfig.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -46,7 +46,7 @@
private int pos;
private ITargetClassFinder targetClassFinder;
private Collection<String> usedMembers;
- private Node cellParent;
+ private Node callParent;
public InlineMethodConfig(DocumentProvider doc, int pos, ITargetClassFinder targetClassFinder) {
@@ -56,11 +56,11 @@
}
public Node getCallParent() {
- return cellParent;
+ return callParent;
}
- public void setCellParent(Node cellParent) {
- this.cellParent = cellParent;
+ public void setCallParent(Node cellParent) {
+ this.callParent = cellParent;
}
public String getClassName() {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/MethodBodyStatementReplacer.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/MethodBodyStatementReplacer.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/MethodBodyStatementReplacer.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -52,7 +52,7 @@
Collection<Node> selfNodes = null;
DocumentProvider result = new StringDocumentProvider(doc);
do {
- selfNodes = NodeProvider.gatherNodesOfTypeInAktScopeNode(result.getRootNode().getBodyNode(), SelfNode.class);
+ selfNodes = NodeProvider.gatherNodesOfTypeInAktScopeNode(result.getActiveFileRootNode().getBodyNode(), SelfNode.class);
if(selfNodes.isEmpty()) {
continue;
}
@@ -61,8 +61,9 @@
tempResult.append(result.getActiveFileContent().substring(0, node.getPosition().getStartOffset()));
tempResult.append(object);
tempResult.append(result.getActiveFileContent().substring(node.getPosition().getEndOffset()));
- result = new StringDocumentProvider(tempResult.toString());
+ result = new StringDocumentProvider("part_of_" + doc.getActiveFileName(), tempResult.toString());
+
} while(!selfNodes.isEmpty());
return result;
@@ -73,7 +74,7 @@
DocumentProvider result = new StringDocumentProvider(doc);
Collection<Node> varNodes = null;
do {
- varNodes = NodeProvider.gatherNodesOfTypeInAktScopeNode(result.getRootNode().getBodyNode(), InstVarNode.class, InstAsgnNode.class);
+ varNodes = NodeProvider.gatherNodesOfTypeInAktScopeNode(result.getActiveFileRootNode().getBodyNode(), InstVarNode.class, InstAsgnNode.class);
if(varNodes.isEmpty()) {
continue;
@@ -85,7 +86,7 @@
src.replace(varNode.getPosition().getStartOffset(),
varNode.getPosition().getStartOffset() + name.length(),
object + '.' + name.substring(1));
- result = new StringDocumentProvider(src.toString());
+ result = new StringDocumentProvider("part_of_" + doc.getActiveFileName(), src.toString());
} while(!varNodes.isEmpty());
@@ -100,7 +101,7 @@
while((call = findCallToMethodInClass(result, provider, className)) != null) {
StringBuilder src = new StringBuilder(result.getActiveFileContent());
src.insert(call.getWrappedNode().getPosition().getStartOffset(), object + '.');
- result = new StringDocumentProvider(src.toString());
+ result = new StringDocumentProvider("part_of_" + doc.getActiveFileName(), src.toString());
}
return result;
@@ -121,7 +122,7 @@
private Collection<MethodCallNodeWrapper> findFAndVCalls(DocumentProvider doc) {
Collection<MethodCallNodeWrapper> methodCalls = new ArrayList<MethodCallNodeWrapper>();
- for (Node node : NodeProvider.gatherNodesOfTypeInAktScopeNode(doc.getRootNode().getBodyNode(), VCallNode.class, FCallNode.class)) {
+ for (Node node : NodeProvider.gatherNodesOfTypeInAktScopeNode(doc.getActiveFileRootNode().getBodyNode(), VCallNode.class, FCallNode.class)) {
methodCalls.add(new MethodCallNodeWrapper(node));
}
return methodCalls;
@@ -131,12 +132,12 @@
Collection<Node> nodes = null;
StringDocumentProvider result = new StringDocumentProvider(doc);
do {
- nodes = NodeProvider.getSubNodes(NodeProvider.getRootNode("", result.getActiveFileContent()), ReturnNode.class);
+ nodes = NodeProvider.getSubNodes(result.getActiveFileRootNode(), ReturnNode.class);
if(nodes.isEmpty()) break;
StringBuilder newBody = new StringBuilder(result.getActiveFileContent());
int startOffset = nodes.iterator().next().getPosition().getStartOffset();
newBody.replace(startOffset, startOffset + "return ".length(), "");
- result = new StringDocumentProvider(newBody.toString());
+ result = new StringDocumentProvider("part_of_" + doc.getActiveFileName(), newBody.toString());
} while(!nodes.isEmpty());
return result;
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/ParameterReplacer.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/ParameterReplacer.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/ParameterReplacer.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -53,7 +53,7 @@
public DocumentProvider replace(IDocumentProvider doc, MethodCallNodeWrapper call, MethodDefNode definition) {
- DocumentProvider strDoc = new StringDocumentProvider(doc.getActiveFileContent().substring(definition.getPosition().getStartOffset(), definition.getPosition().getEndOffset() + 1));
+ DocumentProvider strDoc = new StringDocumentProvider("part_of_" + doc.getActiveFileName(), doc.getActiveFileContent().substring(definition.getPosition().getStartOffset(), definition.getPosition().getEndOffset() + 1));
ArrayNode headList = new ArrayNode(new SourcePosition());
ArrayNode tailList = new ArrayNode(new SourcePosition());
@@ -83,12 +83,12 @@
createAssignments(headList, tailList, insert, lineDelimiter);
}
- MethodDefNode newDefinition = (MethodDefNode) ((NewlineNode) strDoc.getRootNode().getBodyNode()).getNextNode();
+ MethodDefNode newDefinition = (MethodDefNode) ((NewlineNode) strDoc.getActiveFileRootNode().getBodyNode()).getNextNode();
insert.append(strDoc.getActiveFileContent().substring(
newDefinition.getBodyNode().getPosition().getStartOffset(),
newDefinition.getBodyNode().getPosition().getEndOffset() + 1).trim());
- return new StringDocumentProvider(insert.toString());
+ return new StringDocumentProvider("subpart_of_" + doc.getActiveFileName(), insert.toString());
}
private void createAssignments(ArrayNode headList, ArrayNode tailList, StringBuffer insert, String lineDelimiter) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/RenameDuplicatedVariables.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/RenameDuplicatedVariables.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/RenameDuplicatedVariables.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -31,15 +31,14 @@
import org.jruby.ast.RootNode;
import org.rubypeople.rdt.refactoring.core.renamelocalvariable.LocalVariableRenamer;
import org.rubypeople.rdt.refactoring.documentprovider.DocumentProvider;
-import org.rubypeople.rdt.refactoring.documentprovider.StringDocumentProvider;
import org.rubypeople.rdt.refactoring.util.NameHelper;
public class RenameDuplicatedVariables implements IRenameDuplicatedVariables {
public DocumentProvider rename(DocumentProvider doc, String[] localNames) {
- RootNode rootNode = doc.getRootNode();
- DocumentProvider result = new StringDocumentProvider(doc.getActiveFileContent());
+ RootNode rootNode = doc.getActiveFileRootNode();
+ DocumentProvider result = doc;
for (String name : NameHelper.findDuplicates(rootNode.getStaticScope().getVariables(), localNames)) {
if("$~".equals(name) || "$_".equals(name)) continue;
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/ReturnStatementReplacer.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/ReturnStatementReplacer.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/ReturnStatementReplacer.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -56,7 +56,7 @@
private int countReturnNodes(DocumentProvider doc) {
int returnNodes = 0;
- for (Node node : NodeProvider.getAllNodesFromFile(doc.getActiveFileName(), doc.getActiveFileContent())) {
+ for (Node node : NodeProvider.getAllNodes(doc.getActiveFileRootNode())) {
if(node instanceof ReturnNode) {
returnNodes++;
}
@@ -65,7 +65,7 @@
}
private ReturnNode getReturnNode(DocumentProvider doc) {
- for (Node node : NodeProvider.getAllNodesFromFile(doc.getActiveFileName(), doc.getActiveFileContent())) {
+ for (Node node : NodeProvider.getAllNodes(doc.getActiveFileRootNode())) {
if(node instanceof ReturnNode) {
return (ReturnNode) node;
}
@@ -89,13 +89,13 @@
replaceReturnStatementWithAssignment(doc, target, result, returnNode);
}
- return new StringDocumentProvider(result.append(ReWriteVisitor.createCodeFromNode(target, doc.getActiveFileContent())).toString());
+ return new StringDocumentProvider("part_of_" + doc.getActiveFileName(), result.append(ReWriteVisitor.createCodeFromNode(target, doc.getActiveFileContent())).toString());
}
private void insertLastLineToAssignment(DocumentProvider doc, AssignableNode target, StringBuilder result) {
String[] lines = doc.getActiveFileContent().split("(\\r)?\\n");
- target.setValueNode(NodeProvider.getRootNode("", lines[lines.length - 1]).getBodyNode());
+ target.setValueNode(NodeProvider.getRootNode("last_line_of_" + doc.getActiveFileName() + "_for_ReturnStatementReplacer", lines[lines.length - 1]).getBodyNode());
String lineDelimiter = FileHelper.getLineDelimiter(doc.getActiveFileContent());
for(int i = 0; i < lines.length - 1; i++) {
@@ -108,5 +108,4 @@
target.setValueNode(returnNode.getValueNode());
result.append(doc.getActiveFileContent().substring(0, returnNode.getPosition().getStartOffset()));
}
-
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/TargetClassFinder.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/TargetClassFinder.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/TargetClassFinder.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -72,7 +72,7 @@
}
private String getSurroundingClass(final MethodCallNodeWrapper call, final DocumentProvider doc) {
- ClassNode classNode = ((ClassNode) NodeProvider.getEnclosingNodeOfType(doc.getRootNode(), call.getWrappedNode(), new Class<?>[]{ClassNode.class}));
+ ClassNode classNode = ((ClassNode) NodeProvider.getEnclosingNodeOfType(doc.getActiveFileRootNode(), call.getWrappedNode(), new Class<?>[]{ClassNode.class}));
if(classNode != null) {
return classNode.getCPath().getName();
}
@@ -103,7 +103,7 @@
InstAsgnNode decoratedNode = null;
try {
- final ClassNodeWrapper selectedClassNode = SelectionNodeProvider.getSelectedClassNode(doc.getRootNode(), node.getPosition().getStartOffset());
+ final ClassNodeWrapper selectedClassNode = SelectionNodeProvider.getSelectedClassNode(doc.getActiveFileRootNode(), node.getPosition().getStartOffset());
final ClassNodeWrapper allClassNodes = new ClassNodeProvider(doc).getClassNode((selectedClassNode.getName()));
if(allClassNodes == null) {
@@ -123,7 +123,7 @@
}
private InstAsgnNode findInstVarInScope(final InstVarNode node, final DocumentProvider doc, InstAsgnNode decoratedNode) {
- Collection<Node> assignments = NodeProvider.getSubNodes(doc.getRootNode(), InstAsgnNode.class);
+ Collection<Node> assignments = NodeProvider.getSubNodes(doc.getActiveFileRootNode(), InstAsgnNode.class);
for (Node assignment : assignments) {
if(((InstAsgnNode) assignment).getName().equals(node.getName()) && assignment.getPosition().getStartOffset() < node.getPosition().getStartOffset()) {
decoratedNode = (InstAsgnNode) assignment;
@@ -137,14 +137,14 @@
*/
public LocalAsgnNode localAsgnFromLocalVar(final LocalVarNode node, final DocumentProvider doc) {
- Node enclosingScope = SelectionNodeProvider.getEnclosingScope(doc.getRootNode(), node);
+ Node enclosingScope = SelectionNodeProvider.getEnclosingScope(doc.getActiveFileRootNode(), node);
LocalAsgnNode asgnNode = findLastAssignmentToVar(node, NodeUtil.getBody(enclosingScope));
if(asgnNode != null) {
return asgnNode;
}
do {
- enclosingScope = SelectionNodeProvider.getEnclosingScope(doc.getRootNode(), NodeProvider.findParentNode(doc.getRootNode(), enclosingScope));
+ enclosingScope = SelectionNodeProvider.getEnclosingScope(doc.getActiveFileRootNode(), NodeProvider.findParentNode(doc.getActiveFileRootNode(), enclosingScope));
asgnNode = findLastAssignmentToVar(node, NodeUtil.getBody(enclosingScope));
} while(!(enclosingScope instanceof RootNode || enclosingScope instanceof MethodDefNode) && asgnNode == null);
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinetemp/InlineTempConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinetemp/InlineTempConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinetemp/InlineTempConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -58,7 +58,7 @@
public void init(Object configObj) {
this.config = (InlineTempConfig) configObj;
- rootNode = config.getDocProvider().getRootNode();
+ rootNode = config.getDocProvider().getActiveFileRootNode();
int caretPosition = config.getCaretPosition();
config.setEnclosingMethod((MethodDefNode) SelectionNodeProvider.getSelectedNodeOfType(rootNode, caretPosition, MethodDefNode.class));
@@ -149,7 +149,7 @@
private boolean isNewMethodNameUnique() {
- Node environment = SelectionNodeProvider.getSelectedNodeOfType(config.getDocProvider().getRootNode(), config.getCaretPosition(), ClassNode.class, RootNode.class);
+ Node environment = SelectionNodeProvider.getSelectedNodeOfType(config.getDocProvider().getActiveFileRootNode(), config.getCaretPosition(), ClassNode.class, RootNode.class);
Collection<MethodDefNode> methodNodes = NodeProvider.gatherMethodDefinitionNodes(NodeUtil.getBody(environment));
for (MethodDefNode currentDefnNode : methodNodes) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movefield/MoveFieldConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movefield/MoveFieldConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movefield/MoveFieldConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -53,7 +53,7 @@
config = (MoveFieldConfig) configObj;
try {
- selectedClassNode = SelectionNodeProvider.getSelectedClassNode(config.getDoc().getRootNode(), config.getPos());
+ selectedClassNode = SelectionNodeProvider.getSelectedClassNode(config.getDoc().getActiveFileRootNode(), config.getPos());
} catch (NoClassNodeException e) {
selectedClassNode = null;
return;
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/MoveMethodConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/MoveMethodConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/MoveMethodConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -57,7 +57,7 @@
@Override
protected void init(Object configObj) {
this.config = (MoveMethodConfig) configObj;
- Node rootNode = config.getDocProvider().getRootNode();
+ Node rootNode = config.getDocProvider().getActiveFileRootNode();
int caretPos = config.getCaretPosition();
config.setAllClassesNodeProvider(config.getDocProvider().getProjectClassNodeProvider());
try {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renameclass/ClassInstanciationFinder.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renameclass/ClassInstanciationFinder.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renameclass/ClassInstanciationFinder.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -61,7 +61,7 @@
}
private void addIfCreatesInstance(String name, Collection<ConstructorCall> found, DocumentProvider file) {
- for(Node node : NodeProvider.getSubNodes(file.getRootNode(), CallNode.class)) {
+ for(Node node : NodeProvider.getSubNodes(file.getActiveFileRootNode(), CallNode.class)) {
CallNode call = (CallNode) node;
if(isConstructorFor(name, call)) {
found.add(new ConstructorCall(call));
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renameclass/RenameClassConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renameclass/RenameClassConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renameclass/RenameClassConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -50,7 +50,7 @@
config.setDocumentWithIncludingProvider(new DocumentWithIncluding(config.getDocProvider()));
ClassNodeWrapper classNode = null;
try {
- classNode = SelectionNodeProvider.getSelectedClassNode(config.getDocProvider().getRootNode(), config.getOffset());
+ classNode = SelectionNodeProvider.getSelectedClassNode(config.getDocProvider().getActiveFileRootNode(), config.getOffset());
int nameStart = ((ClassNode) classNode.getWrappedNode()).getCPath().getPosition().getStartOffset();
int nameEnd = ((ClassNode) classNode.getWrappedNode()).getCPath().getPosition().getEndOffset();
if(config.getOffset() < nameStart || config.getOffset() > nameEnd) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamefield/RenameFieldConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamefield/RenameFieldConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamefield/RenameFieldConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -37,7 +37,6 @@
import org.jruby.ast.Node;
import org.rubypeople.rdt.refactoring.classnodeprovider.ClassNodeProvider;
import org.rubypeople.rdt.refactoring.classnodeprovider.IncludedClassesProvider;
-import org.rubypeople.rdt.refactoring.core.NodeProvider;
import org.rubypeople.rdt.refactoring.core.RefactoringConditionChecker;
import org.rubypeople.rdt.refactoring.core.SelectionNodeProvider;
import org.rubypeople.rdt.refactoring.core.renamefield.fielditems.FieldCallItem;
@@ -62,7 +61,7 @@
this.config = (RenameFieldConfig) configObj;
config.setDocProvider(new DocumentWithIncluding(config.getDocProvider()));
- Node rootNode = config.getDocProvider().getRootNode();
+ Node rootNode = config.getDocProvider().getActiveFileRootNode();
try {
ClassNodeWrapper enclosingClassNode = SelectionNodeProvider.getSelectedClassNode(rootNode, config.getCaretPosition());
@@ -119,7 +118,7 @@
CallNode callNode = (CallNode) candidateNode;
if (callNode.getName().replaceAll("=", "").equals(config.getSelectedName())) {
String fileName = callNode.getPosition().getFile();
- Node rootNode = NodeProvider.getRootNode(fileName, config.getDocProvider().getFileContent(fileName));
+ Node rootNode = config.getDocProvider().getRootNode(fileName);
try {
SelectionNodeProvider.getSelectedClassNode(rootNode, callNode.getPosition().getStartOffset());
} catch (NoClassNodeException e) {
@@ -150,7 +149,7 @@
@Override
protected void checkInitialConditions() {
- Collection<FieldNodeWrapper> fields = PartialClassNodeWrapper.getFieldsFromNode(config.getDocProvider().getRootNode());
+ Collection<FieldNodeWrapper> fields = PartialClassNodeWrapper.getFieldsFromNode(config.getDocProvider().getActiveFileRootNode());
FieldNodeWrapper selectedFieldNode = SelectionNodeProvider.getSelectedWrappedNode(fields, config.getCaretPosition());
if (config.getWholeClassNode() == null) {
if (selectedFieldNode != null) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamelocalvariable/LocalVariableRenamer.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamelocalvariable/LocalVariableRenamer.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamelocalvariable/LocalVariableRenamer.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -71,6 +71,6 @@
} catch (BadLocationException e) {
assert false;
}
- return new StringDocumentProvider(result.get());
+ return new StringDocumentProvider("modified_" + doc.getActiveFileName(), result.get());
}
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamelocalvariable/RenameLocalConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamelocalvariable/RenameLocalConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamelocalvariable/RenameLocalConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -71,7 +71,7 @@
public void init(Object configObj) {
config = (RenameLocalConfig) configObj;
- RootNode rootNode = config.getDocumentProvider().getRootNode();
+ RootNode rootNode = config.getDocumentProvider().getActiveFileRootNode();
Node selectedNode = SelectionNodeProvider.getSelectedNodeOfType(rootNode, config.getCaretPosition(), SELECTED_NODE_TYPES);
if(selectedNode instanceof AssignableNode) {
int start = selectedNode.getPosition().getStartOffset();
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/MethodRenamer.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/MethodRenamer.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/MethodRenamer.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -170,7 +170,7 @@
}
public Collection<MethodCallNodeWrapper> getSubsequentCalls(){
- Node fileRoot = docProvider.getRootNode();
+ Node fileRoot = docProvider.getActiveFileRootNode();
int methodEndPos = config.getTargetMethod().getWrappedNode().getPosition().getEndOffset();
ArrayList<MethodCallNodeWrapper> subsequentCalls = new ArrayList<MethodCallNodeWrapper>();
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/RenameMethodConditionChecker.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/RenameMethodConditionChecker.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/RenameMethodConditionChecker.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -48,7 +48,6 @@
import org.rubypeople.rdt.refactoring.nodewrapper.MethodCallNodeWrapper;
import org.rubypeople.rdt.refactoring.nodewrapper.MethodNodeWrapper;
import org.rubypeople.rdt.refactoring.nodewrapper.PartialClassNodeWrapper;
-import org.rubypeople.rdt.refactoring.util.NodeUtil;
public class RenameMethodConditionChecker extends RefactoringConditionChecker{
@@ -65,7 +64,7 @@
this.config = (RenameMethodConfig)configObj;
config.setDocProvider(new DocumentWithIncluding(config.getDocProvider()));
- Node rootNode = config.getDocProvider().getRootNode();
+ Node rootNode = config.getDocProvider().getActiveFileRootNode();
try {
this.config.setClassNode(SelectionNodeProvider.getSelectedClassNode(rootNode, this.config.getCaretPosition()));
} catch (NoClassNodeException e) {/* ClassNode stays null */}
@@ -101,15 +100,15 @@
ArrayList<MethodCallNodeWrapper> possibleCalls = new ArrayList<MethodCallNodeWrapper>();
for(Node currentNode : allNodes){
- if(isPossibleCall(currentNode)){
- possibleCalls.add(new MethodCallNodeWrapper(currentNode));
+ MethodCallNodeWrapper callNode = new MethodCallNodeWrapper(currentNode);
+ if(isPossibleCall(callNode)){
+ possibleCalls.add(callNode);
}
}
return possibleCalls;
}
- private boolean isPossibleCall(Node candidateNode) {
- MethodCallNodeWrapper callNode = new MethodCallNodeWrapper(candidateNode);
+ private boolean isPossibleCall(MethodCallNodeWrapper callNode) {
if(config.getTargetMethod().isClassMethod() != callNode.isCallToClassMethod()){
return false;
}
@@ -193,7 +192,7 @@
}
} catch (NoClassNodeException e) {
- Node rootNode = config.getDocProvider().getRootNode();
+ Node rootNode = config.getDocProvider().getActiveFileRootNode();
Collection<MethodDefNode> methods = NodeProvider.getMethodNodes(rootNode);
ClassNodeProvider classes = new ClassNodeProvider(config.getDocProvider());
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/RenameMethodConfig.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/RenameMethodConfig.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/renamemethod/RenameMethodConfig.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -127,7 +127,7 @@
}
public Collection<MethodNodeWrapper> getAllMethodsInClass() throws NoClassNodeException {
- Node rootNode = docProvider.getRootNode();
+ Node rootNode = docProvider.getActiveFileRootNode();
ClassNodeWrapper enclosingClass = SelectionNodeProvider.getSelectedClassNode(rootNode, targetMethod.getWrappedNode().getPosition().getStartOffset());
IncludedClassesProvider classesProvider = new IncludedClassesProvider(docProvider);
ClassNodeWrapper wholeClass = classesProvider.getClassNode(enclosingClass.getName());
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/splittemp/LocalVarFinder.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/splittemp/LocalVarFinder.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/splittemp/LocalVarFinder.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -50,7 +50,7 @@
public Collection<LocalVarUsage> findLocalUsages(DocumentProvider doc, int caretPosition) {
- Node rootNode = doc.getRootNode();
+ Node rootNode = doc.getActiveFileRootNode();
INameNode selectedAssignment = (INameNode) SelectionNodeProvider.getSelectedNodeOfType(rootNode, caretPosition, LocalAsgnNode.class, DAsgnNode.class);
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentProvider.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentProvider.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -31,6 +31,8 @@
package org.rubypeople.rdt.refactoring.documentprovider;
import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
import org.jruby.ast.Node;
import org.jruby.ast.RootNode;
@@ -42,7 +44,11 @@
public abstract class DocumentProvider implements IDocumentProvider {
- private RootNode rootNode;
+ private Map<String, RootNode> cachedRootNodes;
+
+ public DocumentProvider() {
+ cachedRootNodes = new LinkedHashMap<String, RootNode>();
+ }
public ClassNodeProvider getClassNodeProvider() {
return new ClassNodeProvider(this);
@@ -56,20 +62,22 @@
return new IncludedClassesProvider(this);
}
- public RootNode getRootNode() {
-// if(rootNode == null) {
-// rootNode = NodeProvider.getRootNode(getActiveFileName(), getActiveFileContent());
-// }
-// return rootNode;
- return NodeProvider.getRootNode(getActiveFileName(), getActiveFileContent());
+ public RootNode getActiveFileRootNode() {
+ return getRootNode(getActiveFileName());
}
public Collection<Node> getAllNodes() {
- return NodeProvider.getAllNodes(getRootNode());
+ return NodeProvider.getAllNodes(getActiveFileRootNode());
}
public Collection<Node> getAllNodes(String fileName){
- Node rootNode = NodeProvider.getRootNode(fileName, getFileContent(fileName));
- return NodeProvider.getAllNodes(rootNode);
+ return NodeProvider.getAllNodes(getRootNode(fileName));
}
+
+ public RootNode getRootNode(String fileName) {
+ if(!cachedRootNodes.containsKey(fileName)) {
+ cachedRootNodes.put(fileName, NodeProvider.getRootNode(fileName, getFileContent(fileName)));
+ }
+ return cachedRootNodes.get(fileName);
+ }
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentWithIncluding.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentWithIncluding.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentWithIncluding.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -34,6 +34,7 @@
import org.jruby.ast.FCallNode;
import org.jruby.ast.Node;
+import org.jruby.ast.RootNode;
import org.jruby.ast.StrNode;
import org.jruby.lexer.yacc.SyntaxException;
import org.rubypeople.rdt.refactoring.classnodeprovider.ClassNodeProvider;
@@ -43,47 +44,38 @@
public class DocumentWithIncluding extends StringDocumentProvider {
- protected final IDocumentProvider mainFile;
+ protected final IDocumentProvider docProvider;
- public DocumentWithIncluding(IDocumentProvider start) {
- super(start.getActiveFileName(), start.getActiveFileContent());
-
- this.mainFile = start;
+ public DocumentWithIncluding(IDocumentProvider docProvider) {
+ super(docProvider.getActiveFileName(), docProvider.getActiveFileContent());
+ this.docProvider = docProvider;
searchForRelatedFiles();
}
private void searchForRelatedFiles() {
-
- ArrayList<DocumentProvider> candidateSet = new ArrayList<DocumentProvider>();
-
- for(String fileName : mainFile.getFileNames()) {
- candidateSet.add(new StringDocumentProvider(fileName, mainFile.getFileContent(fileName)));
- }
-
- ArrayList<DocumentProvider> markedForRemoval = new ArrayList<DocumentProvider>();
-
+ Collection<String> candidates = new ArrayList<String>(docProvider.getFileNames());
+ ArrayList<String> markedForRemoval = new ArrayList<String>();
HashSet<String> includedFiles = findAllIncludedFiles();
do {
markedForRemoval.clear();
- for(DocumentProvider doc : candidateSet) {
- String fileName = getFileNameWithoutPath(doc);
+ for(String actFileName : candidates) {
+ String fileName = getFileNameWithoutPath(actFileName);
if(includedFiles.contains(fileName)) {
- addFile(doc.getActiveFileName(), doc.getActiveFileContent());
- markedForRemoval.add(doc);
+ addFile(fileName, docProvider.getFileContent(fileName));
+ markedForRemoval.add(actFileName);
continue;
}
- for (FCallNode node : getRequires(doc)) {
+ for (FCallNode node : getRequires(actFileName)) {
if(nodeRequiresMe(node)) {
- addFile(doc.getActiveFileName(), doc.getActiveFileContent());
- markedForRemoval.add(doc);
+ addFile(fileName, docProvider.getFileContent(fileName));
+ markedForRemoval.add(actFileName);
}
}
}
+ removeMarkedFromCandidates(markedForRemoval, candidates);
- removeMarkedFromCandidates(markedForRemoval, candidateSet);
-
} while(markedForRemoval.size() > 0);
}
@@ -94,7 +86,7 @@
private HashSet<String> findAllIncludedFiles() {
HashSet<String> includedFiles = new HashSet<String>();
- ClassNodeProvider includedProvider = mainFile.getIncludedClassNodeProvider();
+ ClassNodeProvider includedProvider = docProvider.getIncludedClassNodeProvider();
for(ClassNodeWrapper classNode : includedProvider.getAllClassNodes()) {
for (PartialClassNodeWrapper partialClassNode : classNode.getPartialClassNodes()) {
String file = partialClassNode.getWrappedNode().getPosition().getFile();
@@ -106,21 +98,20 @@
return includedFiles;
}
- private String getFileNameWithoutPath(DocumentProvider doc) {
- String activeFileName = doc.getActiveFileName();
- if(activeFileName.contains("/")) {
- return activeFileName.substring(activeFileName.lastIndexOf("/") + 1, activeFileName.length());
+ private String getFileNameWithoutPath(String actFileName) {
+ if(actFileName.contains("/")) {
+ return actFileName.substring(actFileName.lastIndexOf("/") + 1);
}
- return activeFileName;
+ return actFileName;
}
private boolean nodeRequiresMe(FCallNode node) {
return isStrNode(node) && fileIsInResultSet(getRequiredFilename(node));
}
- private void removeMarkedFromCandidates(ArrayList<DocumentProvider> markedForRemoval, ArrayList<DocumentProvider> candidateSet) {
- for (DocumentProvider doc : markedForRemoval) {
- candidateSet.remove(doc);
+ private void removeMarkedFromCandidates(ArrayList<String> markedForRemoval, Collection<String> candidates) {
+ for (String actName : markedForRemoval) {
+ candidates.remove(actName);
}
}
@@ -128,9 +119,10 @@
return ((StrNode) node.getArgsNode().childNodes().iterator().next()).getValue();
}
- private Collection<FCallNode> getRequires(DocumentProvider doc) {
+ private Collection<FCallNode> getRequires(String fileName) {
try {
- return NodeProvider.getLoadAndRequireNodes(doc.getRootNode());
+ RootNode rootNode = docProvider.getRootNode(fileName);
+ return NodeProvider.getLoadAndRequireNodes(rootNode);
} catch(SyntaxException e) {
return new ArrayList<FCallNode>();
}
@@ -151,10 +143,8 @@
return true;
}
}
-
return false;
}
-
private boolean isStrNode(FCallNode node) {
return node.getArgsNode().childNodes().iterator().next() instanceof StrNode;
@@ -167,9 +157,6 @@
for(String currentFileName : getFileNames()){
allNodes.addAll(getAllNodes(currentFileName));
}
-
return allNodes;
}
-
-
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/IDocumentProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/IDocumentProvider.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/IDocumentProvider.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -52,7 +52,9 @@
public ClassNodeProvider getIncludedClassNodeProvider();
- public RootNode getRootNode();
+ public RootNode getActiveFileRootNode();
+
+ public RootNode getRootNode(String fileName);
public Collection<Node> getAllNodes();
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/StringDocumentProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/StringDocumentProvider.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/StringDocumentProvider.java 2007-02-28 11:57:16 UTC (rev 2053)
@@ -36,7 +36,6 @@
public class StringDocumentProvider extends DocumentProvider {
- private static final String defaultDocName = "dummyDocument";
protected String document;
protected String docName;
@@ -49,10 +48,6 @@
files.put(documentName, document);
}
- public StringDocumentProvider(String document) {
- this(defaultDocName, document);
- }
-
public StringDocumentProvider(IDocumentProvider other) {
this(other.getActiveFileName(), other.getActiveFileContent());
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/nodewrapper/MethodCallNodeWrapper.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/nodewrapper/MethodCallNodeWrapper.java 2007-02-27 15:24:41 UTC (rev 2052)
+++ trunk/org.rubypeo...
[truncated message content] |