use of com.liferay.blade.api.AutoMigrator in project liferay-ide by liferay.
the class AutoCorrectAction method runWithAutoCorrect.
public IStatus runWithAutoCorrect(final List<Problem> problems) {
final IResource file = MigrationUtil.getIResourceFromProblem(problems.get(0));
final BundleContext context = FrameworkUtil.getBundle(AutoCorrectAction.class).getBundleContext();
WorkspaceJob job = new WorkspaceJob("Auto correcting migration problem.") {
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) {
IStatus retval = Status.OK_STATUS;
try {
final Problem problem = problems.get(0);
String autoCorrectKey = null;
final int filterKeyIndex = problem.autoCorrectContext.indexOf(":");
if (filterKeyIndex > -1) {
autoCorrectKey = problem.autoCorrectContext.substring(0, filterKeyIndex);
} else {
autoCorrectKey = problem.autoCorrectContext;
}
final Collection<ServiceReference<AutoMigrator>> refs = context.getServiceReferences(AutoMigrator.class, "(auto.correct=" + autoCorrectKey + ")");
for (ServiceReference<AutoMigrator> ref : refs) {
final AutoMigrator autoMigrator = context.getService(ref);
int problemsCorrected = autoMigrator.correctProblems(problem.file, Collections.singletonList(problem));
if (problemsCorrected > 0) {
IResource resource = MigrationUtil.getIResourceFromProblem(problem);
if (resource != null) {
IMarker problemMarker = resource.findMarker(problem.markerId);
if ((problemMarker != null) && problemMarker.exists()) {
problemMarker.delete();
}
}
}
}
file.refreshLocal(IResource.DEPTH_ONE, monitor);
MigrateProjectHandler migrateHandler = new MigrateProjectHandler();
Path path = new Path(problem.getFile().getPath());
String projectName = "";
IProject project = CoreUtil.getProject(problem.getFile());
if (project.exists() && (project != null)) {
projectName = project.getName();
}
for (Problem p : problems) {
new MarkDoneAction().run(p, _provider);
}
if (!projectName.equals("")) {
migrateHandler.findMigrationProblems(new Path[] { path }, new String[] { projectName });
}
} catch (AutoMigrateException | CoreException | InvalidSyntaxException e) {
return retval = ProjectUI.createErrorStatus("Unable to auto correct problem", e);
}
return retval;
}
};
job.schedule();
return Status.OK_STATUS;
}
use of com.liferay.blade.api.AutoMigrator in project liferay-ide by liferay.
the class AutoCorrectAllAction method run.
public void run() {
final BundleContext context = FrameworkUtil.getBundle(AutoCorrectAction.class).getBundleContext();
WorkspaceJob job = new WorkspaceJob("Auto correcting all of migration problem.") {
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) {
IStatus retval = Status.OK_STATUS;
try {
if ((_problemsContainerList != null) && (_problemsContainerList.size() > 0)) {
for (ProblemsContainer problemsContainer : _problemsContainerList) {
for (UpgradeProblems upgradeProblems : problemsContainer.getProblemsArray()) {
FileProblems[] fileProblemsArray = upgradeProblems.getProblems();
for (FileProblems fileProblems : fileProblemsArray) {
List<Problem> problems = fileProblems.getProblems();
Set<String> fixed = new HashSet<>();
for (Problem problem : problems) {
if (problem.getStatus() == Problem.STATUS_IGNORE) {
continue;
}
final IResource file = MigrationUtil.getIResourceFromProblem(problem);
if (FileUtil.notExists(file)) {
continue;
}
String fixedKey = file.getLocation().toString() + "," + problem.autoCorrectContext;
if ((problem.autoCorrectContext == null) || fixed.contains(fixedKey)) {
continue;
}
String autoCorrectKey = null;
final int filterKeyIndex = problem.autoCorrectContext.indexOf(":");
if (filterKeyIndex > -1) {
autoCorrectKey = problem.autoCorrectContext.substring(0, filterKeyIndex);
} else {
autoCorrectKey = problem.autoCorrectContext;
}
final Collection<ServiceReference<AutoMigrator>> refs = context.getServiceReferences(AutoMigrator.class, "(auto.correct=" + autoCorrectKey + ")");
for (ServiceReference<AutoMigrator> ref : refs) {
final AutoMigrator autoMigrator = context.getService(ref);
int problemsCorrected = autoMigrator.correctProblems(problem.file, problems);
fixed.add(fixedKey);
if ((problemsCorrected > 0) && (file != null)) {
IMarker problemMarker = file.findMarker(problem.markerId);
if ((problemMarker != null) && problemMarker.exists()) {
problemMarker.delete();
}
}
}
file.refreshLocal(IResource.DEPTH_ONE, monitor);
}
}
}
}
}
UIUtil.sync(new Runnable() {
@Override
public void run() {
IViewPart view = UIUtil.findView(UpgradeView.ID);
try {
BreakingChangeSelectedProject selectedProject = UpgradeAssistantSettingsUtil.getObjectFromStore(BreakingChangeSelectedProject.class);
StructuredSelection projectSelection = null;
List<IProject> projects = new ArrayList<>();
if (selectedProject != null) {
List<BreakingChangeSimpleProject> selectedProjects = selectedProject.getSelectedProjects();
selectedProjects.stream().forEach(breakingProject -> projects.add(CoreUtil.getProject(breakingProject.getName())));
projectSelection = new StructuredSelection(projects.toArray(new IProject[0]));
}
new RunMigrationToolAction("Run Migration Tool", view.getViewSite().getShell(), projectSelection).run();
} catch (IOException ioe) {
ProjectUI.logError(ioe);
}
}
});
} catch (AutoMigrateException | CoreException | InvalidSyntaxException e) {
return retval = ProjectUI.createErrorStatus("Unable to auto correct problem", e);
}
return retval;
}
};
job.schedule();
}
use of com.liferay.blade.api.AutoMigrator in project liferay-ide by liferay.
the class JSPTagImportsTest method allProblems.
@Test
public void allProblems() throws Exception {
ServiceReference<Migration> sr = context.getServiceReference(Migration.class);
Migration migration = context.getService(sr);
File tempFolder = Files.createTempDirectory("autocorrect").toFile();
File testFile = new File(tempFolder, "jsptaglist.jsp");
tempFolder.deleteOnExit();
File originalTestfile = new File("jsptests/imports/view.jsp");
Files.copy(originalTestfile.toPath(), testFile.toPath());
List<Problem> problems = migration.findProblems(testFile, new NullProgressMonitor());
assertEquals(6, problems.size());
Collection<ServiceReference<AutoMigrator>> refs = context.getServiceReferences(AutoMigrator.class, "(auto.correct=import)");
for (ServiceReference<AutoMigrator> ref : refs) {
AutoMigrator autoMigrator = context.getService(ref);
autoMigrator.correctProblems(testFile, problems);
}
File dest = new File(tempFolder, "Updated.jsp");
assertTrue(testFile.renameTo(dest));
List<Problem> problems2 = migration.findProblems(dest, new NullProgressMonitor());
assertEquals(0, problems2.size());
}
use of com.liferay.blade.api.AutoMigrator in project liferay-ide by liferay.
the class MVCPortletClassInPortletXMLAutoCorrectTest method beforeTest.
@Before
public void beforeTest() throws Exception {
Filter filter = context.createFilter("(implName=MVCPortletClassInPortletXML)");
ServiceTracker<AutoMigrator, AutoMigrator> tracker = new ServiceTracker<AutoMigrator, AutoMigrator>(context, filter, null);
tracker.open();
ServiceReference<AutoMigrator>[] refs = tracker.getServiceReferences();
assertNotNull(refs);
assertEquals(1, refs.length);
autoMigrator = context.getService(refs[0]);
}
use of com.liferay.blade.api.AutoMigrator in project liferay-ide by liferay.
the class PortalServiceImportsAutoCorrectTest method autoCorrectProblems.
@Test
public void autoCorrectProblems() throws Exception {
File tempFolder = Files.createTempDirectory("autocorrect").toFile();
File testFile = new File(tempFolder, "PortalServiceImports.java");
tempFolder.deleteOnExit();
File originalTestfile = new File("javatests/PortalServiceImports.java");
Files.copy(originalTestfile.toPath(), testFile.toPath());
List<Problem> problems = null;
FileMigrator migrator = null;
Collection<ServiceReference<FileMigrator>> mrefs = context.getServiceReferences(FileMigrator.class, null);
for (ServiceReference<FileMigrator> mref : mrefs) {
migrator = context.getService(mref);
if (migrator.getClass().getName().contains("PortalServiceImports")) {
problems = migrator.analyze(testFile);
break;
}
}
assertEquals(2, problems.size());
int problemsFixed = ((AutoMigrator) migrator).correctProblems(testFile, problems);
assertEquals(2, problemsFixed);
File dest = new File(tempFolder, "Updated.java");
assertTrue(testFile.renameTo(dest));
problems = migrator.analyze(dest);
assertEquals(0, problems.size());
}
Aggregations