[ https://issues.apache.org/jira/browse/IVYDE-195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12754566#action_12754566 ]
Nicolas Lalevée commented on IVYDE-195: --------------------------------------- I still don't have the images. You need to upload them manually, as images are not "diffable" and won't be included in a patch. About the braces, for instance the SyncIvyFilesJob.java you provided is correct whereas IvyRevisionSync.java doesn't. It is not a big deal, I can format it before commiting. I also got some error logged when launching "Show all projects in workspace", see the following stack trace: {noformat} Java Model Exception: Java Model Status [ivydetest-vfs does not exist] at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException(JavaElement.java:492) at org.eclipse.jdt.internal.core.JavaModelManager.getPerProjectInfoCheckExistence(JavaModelManager.java:2063) at org.eclipse.jdt.internal.core.JavaProject.getPerProjectInfo(JavaProject.java:1815) at org.eclipse.jdt.internal.core.JavaProject.getRawClasspath(JavaProject.java:1837) at org.apache.ivyde.eclipse.cpcontainer.IvyClasspathUtil.getIvyClasspathContainers(IvyClasspathUtil.java:115) at org.apache.ivyde.eclipse.ui.core.IvyUtil.getIvyProjectsInWorkspace(IvyUtil.java:50) at org.apache.ivyde.eclipse.ui.core.IvyUtil.getAllDependencyDescriptorsInWorkspace(IvyUtil.java:125) at org.apache.ivyde.eclipse.ui.views.ReverseDependencyExplorerView$5.run(ReverseDependencyExplorerView.java:174) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) at org.eclipse.swt.widgets.Display.syncExec(Display.java:3944) at org.apache.ivyde.eclipse.ui.views.ReverseDependencyExplorerView.refresh(ReverseDependencyExplorerView.java:170) at org.apache.ivyde.eclipse.ui.views.ReverseDependencyExplorerView$4.run(ReverseDependencyExplorerView.java:114) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3542) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1247) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1270) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1255) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1076) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3440) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3099) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) {noformat} I think that in IvyUtil#getIvyProjectsInWorkspace() you should first check that a project is opened before trying to get its classpath containers. Then about exception catching, there is an IvyDEException in IvyRevisionSync#sync() which is catched but nothing is done with it. I think if something bad happened in the parsing of the module descriptor and then preventing to update it, the end user should we notified about it. Another alternative here is to use the cached version of the module descriptor, because it has already been parsed at least for the generation of the reverse dependency tree. So then just logging the exception would be sufficient. I don't know what is the best of the two solutions though. Another no very handled exception is in IvyClasspathUtil#toIvyFile(). As far as I could remember, a Job shouldn't throw exceptions, because the end user won't see that a job has failed unless he looks in the logs. The returned IStatus should be used instead to notify the end user of the result of the job. So the best here should be I think to throw an IvyDEException and then in IvyRevisionSync#sync() catch that thrown IvyDEException accordingly. (hint: see the MultiStatus class) And same note in IvyUtil#getDependencyDescriptorsByProjects(), the IvyDEException should be handled. In that case I think that the end user should be notified. See IvyDEException#show(). And another very important subject: the colors :) . Well, I just find the green and red color highlighting quite aggressive, don't you you too ? > "Ivy Dependency Explorer" View for synchronizing revisions across multiple > projects in a workspace > -------------------------------------------------------------------------------------------------- > > Key: IVYDE-195 > URL: https://issues.apache.org/jira/browse/IVYDE-195 > Project: IvyDE > Issue Type: New Feature > Reporter: Jon Schneider > Fix For: 2.1.0 > > Attachments: ivyde-195(2).patch, new-project-menu-item.jpg, > projects-represented-in-explorer.jpg, reverse-dependency-explorer-view.jpg > > > When working with multiple projects in a workspace that represent the whole > or part of a larger application, I often want to bring the revisions of > dependencies up to a single new revision all at the same time > (notwithstanding the wonderful eviction mechanism inherent to Ivy). > Other times it is instructive just to see what dependencies are being > utilized by projects in the workspace by revision without having to dig into > each project and look at each individual module descriptor. > I am introducing the Ivy Dependency explorer that turns the tree upside-down, > exploring the workspace by organization, module, and revision and providing a > mechanism to synchronize revisions across projects/classpath containers. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.