Search in sources :

Example 11 with Problem

use of com.liferay.blade.api.Problem 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;
}
Also used : Path(org.eclipse.core.runtime.Path) IStatus(org.eclipse.core.runtime.IStatus) AutoMigrateException(com.liferay.blade.api.AutoMigrateException) WorkspaceJob(org.eclipse.core.resources.WorkspaceJob) IProject(org.eclipse.core.resources.IProject) ServiceReference(org.osgi.framework.ServiceReference) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) AutoMigrator(com.liferay.blade.api.AutoMigrator) Problem(com.liferay.blade.api.Problem) InvalidSyntaxException(org.osgi.framework.InvalidSyntaxException) IMarker(org.eclipse.core.resources.IMarker) IResource(org.eclipse.core.resources.IResource) BundleContext(org.osgi.framework.BundleContext)

Example 12 with Problem

use of com.liferay.blade.api.Problem 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();
}
Also used : CoreUtil(com.liferay.ide.core.util.CoreUtil) CoreException(org.eclipse.core.runtime.CoreException) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) IStatus(org.eclipse.core.runtime.IStatus) UpgradeAssistantSettingsUtil(com.liferay.ide.project.core.upgrade.UpgradeAssistantSettingsUtil) IProject(org.eclipse.core.resources.IProject) IViewPart(org.eclipse.ui.IViewPart) IMarker(org.eclipse.core.resources.IMarker) ServiceReference(org.osgi.framework.ServiceReference) InvalidSyntaxException(org.osgi.framework.InvalidSyntaxException) FileUtil(com.liferay.ide.core.util.FileUtil) UpgradeProblems(com.liferay.ide.project.core.upgrade.UpgradeProblems) Collection(java.util.Collection) Set(java.util.Set) Status(org.eclipse.core.runtime.Status) IOException(java.io.IOException) Action(org.eclipse.jface.action.Action) ProjectUI(com.liferay.ide.project.ui.ProjectUI) BundleContext(org.osgi.framework.BundleContext) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) AutoMigrateException(com.liferay.blade.api.AutoMigrateException) WorkspaceJob(org.eclipse.core.resources.WorkspaceJob) Problem(com.liferay.blade.api.Problem) BreakingChangeSimpleProject(com.liferay.ide.project.core.upgrade.BreakingChangeSimpleProject) List(java.util.List) AutoMigrator(com.liferay.blade.api.AutoMigrator) UIUtil(com.liferay.ide.ui.util.UIUtil) IResource(org.eclipse.core.resources.IResource) BreakingChangeSelectedProject(com.liferay.ide.project.core.upgrade.BreakingChangeSelectedProject) FileProblems(com.liferay.ide.project.core.upgrade.FileProblems) UpgradeView(com.liferay.ide.project.ui.upgrade.animated.UpgradeView) ProblemsContainer(com.liferay.ide.project.core.upgrade.ProblemsContainer) FrameworkUtil(org.osgi.framework.FrameworkUtil) IStatus(org.eclipse.core.runtime.IStatus) IViewPart(org.eclipse.ui.IViewPart) AutoMigrateException(com.liferay.blade.api.AutoMigrateException) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) ProblemsContainer(com.liferay.ide.project.core.upgrade.ProblemsContainer) ArrayList(java.util.ArrayList) List(java.util.List) InvalidSyntaxException(org.osgi.framework.InvalidSyntaxException) BreakingChangeSelectedProject(com.liferay.ide.project.core.upgrade.BreakingChangeSelectedProject) HashSet(java.util.HashSet) UpgradeProblems(com.liferay.ide.project.core.upgrade.UpgradeProblems) WorkspaceJob(org.eclipse.core.resources.WorkspaceJob) IOException(java.io.IOException) IProject(org.eclipse.core.resources.IProject) ServiceReference(org.osgi.framework.ServiceReference) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) FileProblems(com.liferay.ide.project.core.upgrade.FileProblems) CoreException(org.eclipse.core.runtime.CoreException) AutoMigrator(com.liferay.blade.api.AutoMigrator) Problem(com.liferay.blade.api.Problem) IMarker(org.eclipse.core.resources.IMarker) IResource(org.eclipse.core.resources.IResource) BundleContext(org.osgi.framework.BundleContext)

Example 13 with Problem

use of com.liferay.blade.api.Problem in project liferay-ide by liferay.

the class ProgressMonitorCancelTest method cancelableProgressMonitor.

@Test
public void cancelableProgressMonitor() throws Exception {
    ServiceReference<Migration> sr = context.getServiceReference(Migration.class);
    final Migration m = context.getService(sr);
    final List<Problem> result = new ArrayList<>();
    final CancelableProgressMonitor cancelable = new CancelableProgressMonitor();
    final Thread t = new Thread() {

        @Override
        public void run() {
            List<Problem> problems = m.findProblems(new File("projects"), cancelable);
            result.addAll(problems);
        }
    };
    t.start();
    Thread.sleep(5000);
    cancelable.canceled = true;
    t.join();
    final int expectedSize = 1324;
    final int size = result.size();
    assertTrue(size < expectedSize);
}
Also used : Migration(com.liferay.blade.api.Migration) ArrayList(java.util.ArrayList) Problem(com.liferay.blade.api.Problem) File(java.io.File) Test(org.junit.Test)

Example 14 with Problem

use of com.liferay.blade.api.Problem in project liferay-ide by liferay.

the class RestoreEntryTagsTest method findProblems.

@Test
public void findProblems() throws Exception {
    ServiceReference<Migration> sr = context.getServiceReference(Migration.class);
    Migration m = context.getService(sr);
    List<Problem> problems = m.findProblems(new File("jsptests/restore-entry/"), new NullProgressMonitor());
    assertEquals(1, problems.size());
    boolean found = false;
    for (Problem problem : problems) {
        if (problem.file.getName().endsWith("RestoreEntryTagsTest.jsp")) {
            if (problem.lineNumber == 2 && problem.startOffset >= 12 && problem.endOffset >= 318) {
                found = true;
            }
        }
    }
    if (!found) {
        fail();
    }
}
Also used : NullProgressMonitor(com.liferay.blade.util.NullProgressMonitor) Migration(com.liferay.blade.api.Migration) Problem(com.liferay.blade.api.Problem) File(java.io.File) Test(org.junit.Test)

Example 15 with Problem

use of com.liferay.blade.api.Problem in project liferay-ide by liferay.

the class TrashUndoTagsTest method findProblems.

@Test
public void findProblems() throws Exception {
    ServiceReference<Migration> sr = context.getServiceReference(Migration.class);
    Migration m = context.getService(sr);
    List<Problem> problems = m.findProblems(new File("jsptests/liferay-ui-trash-undo/"), new NullProgressMonitor());
    assertEquals(1, problems.size());
}
Also used : NullProgressMonitor(com.liferay.blade.util.NullProgressMonitor) Migration(com.liferay.blade.api.Migration) Problem(com.liferay.blade.api.Problem) File(java.io.File) Test(org.junit.Test)

Aggregations

Problem (com.liferay.blade.api.Problem)92 Test (org.junit.Test)58 File (java.io.File)42 FileMigrator (com.liferay.blade.api.FileMigrator)31 Migration (com.liferay.blade.api.Migration)29 NullProgressMonitor (com.liferay.blade.util.NullProgressMonitor)26 ArrayList (java.util.ArrayList)16 FileProblems (com.liferay.ide.project.core.upgrade.FileProblems)9 IOException (java.io.IOException)9 ServiceReference (org.osgi.framework.ServiceReference)9 AutoMigrator (com.liferay.blade.api.AutoMigrator)8 IFile (org.eclipse.core.resources.IFile)8 List (java.util.List)6 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)6 AutoMigrateException (com.liferay.blade.api.AutoMigrateException)5 SearchResult (com.liferay.blade.api.SearchResult)5 MigrationProblems (com.liferay.ide.project.core.upgrade.MigrationProblems)5 MigrationProblemsContainer (com.liferay.ide.project.core.upgrade.MigrationProblemsContainer)5 HashSet (java.util.HashSet)5 CoreException (org.eclipse.core.runtime.CoreException)5