move method refactoring problem...kindly help urgently. [message #516775] |
Thu, 25 February 2010 01:59 |
Eclipse User |
|
|
|
Hi,
i want to do move method refactoring, below is the code that i am using to move method
////////////////////////////////**************************** ***********///////////////////////////////////////////////// //////////
package source;
import java.util.ArrayList;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.refactoring.IJavaRefactorings;
import org.eclipse.jdt.core.refactoring.descriptors.MoveDescriptor;
import org.eclipse.jdt.internal.corext.refactoring.reorg.IReorgDest ination;
import org.eclipse.jdt.internal.corext.refactoring.reorg.IReorgQuer ies;
import org.eclipse.jdt.internal.corext.refactoring.reorg.JavaMovePr ocessor;
import org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgPolic yFactory;
import org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgUtils ;
import org.eclipse.jdt.internal.corext.refactoring.reorg.IReorgPoli cy.IMovePolicy;
import org.eclipse.jdt.internal.corext.refactoring.util.Changes;
//import org.eclipse.jface.viewers.deferred.ChangeQueue.Change;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.RefactoringContribution;
import org.eclipse.ltk.core.refactoring.RefactoringCore;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.core.refactoring.participants.MoveRefactorin g;
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
public class Main {
public static void doRefactoring()
{
try{
///////////////Making of compilation unit////////////////
String filename = "d:\\lehmia\\Test.java";
IFile file = (IFile) new Path(filename);
ICompilationUnit javaFile = (ICompilationUnit)JavaCore.create(file);
////////////////Collecting elements of java File////////////////////////
ArrayList elementList=new ArrayList();
elementList.add(javaFile);
//////////////////////////////////////////////////////////// //////////
IResource[] resources = ReorgUtils.getResources(elementList);
for(int i=0;i<resources.length;i++)
{
System.out.println("Resource"+i+resources[i]);
}
IJavaElement[] elements = ReorgUtils.getJavaElements(elementList);
IMovePolicy policy = ReorgPolicyFactory.createMovePolicy(resources,elements);
JavaMoveProcessor processor = new JavaMoveProcessor(policy);
MoveRefactoring refactoring = new MoveRefactoring(processor);
IReorgQueries yourQueries =null;//////////// here to add code to enter move method query
processor.setReorgQueries(yourQueries);
// yours option here
IReorgDestination destination = null;
processor.setDestination(destination);
processor.setUpdateReferences(true);
processor.setUpdateQualifiedNames(true);
IProgressMonitor monitor = null;
RefactoringStatus status = refactoring.checkAllConditions(monitor);
if (!status.hasFatalError()) {
Change change = refactoring.createChange(monitor);
change.initializeValidationData(monitor);
change.perform(monitor);
}
}
catch(CoreException e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
System.out.println("before refactoring");
doRefactoring();
System.out.println("after refactoring");
}
}
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////
Actually to be precise; i am confused in two things first is how to pass the parameters, the places where i have passed null is because i am unable to get how to initialize these parameters..
Secondly, i want to call moveMethod refactoring programmatically.I have seen the link that u have reffered but i am not confirmed whether its move Method or moving anyother thing like(class, package or project).
Many thanx for your time and help.
Regards
lehmia kiran
|
|
|
Powered by
FUDForum. Page generated in 0.02406 seconds