ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicolas Lalevée (JIRA) <j...@apache.org>
Subject [jira] Commented: (IVYDE-195) "Ivy Dependency Explorer" View for synchronizing revisions across multiple projects in a workspace
Date Sat, 12 Sep 2009 17:26:57 GMT

    [ 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.


Mime
View raw message