﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
3636	check for and install plugin updates before loading plugins	tordanik	team	"Currently, JOSM doesn't update plugins when it is started. After updating JOSM itself, some plugins might need to be updated, too. The dialog required for updating plugins in a user-friendly way, however, is accessible only after JOSM has been started and has failed to load the plugin, displaying an error message that doesn't even hint at the fact that a plugin update will probably solve the problem.

A possible solution would be
- check for plugin updates when JOSM is started
- if plugins available: display dialog with list of updateable plugins, allowing users to choose to update plugins or to continue without update (see Firefox behavior for inspiration)
- continue to start JOSM, load plugins etc.; no restart should be required

Filing this as defect (rather than enhancement) as the lack of this feature will inevitably lead to error messages for users who do not manually replace plugin files.

----

Example for an error message that was caused by an old plugin:

""Could not load plugin openstreetbugs. Delete from preferences?""

Console output:

{{{ 
Revision: Path: trunk
URL: http://josm.openstreetmap.de/svn/trunk
Repository Root: http://josm.openstreetmap.de/svn
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Revision: 2221
Node Kind: directory
Last Changed Author: jttt
Last Changed Rev: 2221
Last Changed Date: 2009-09-30 21:04:36 +0200 (Wed, 30 Sep 2009)


loading graphview
loading openstreetbugs
java.lang.NoClassDefFoundError: org/openstreetmap/josm/gui/historycombobox/HistoryChangedListener
	at org.openstreetmap.josm.plugins.osb.gui.OsbDialog.<init>(OsbDialog.java:89)
	at org.openstreetmap.josm.plugins.osb.OsbPlugin.<init>(OsbPlugin.java:76)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at org.openstreetmap.josm.plugins.PluginInformation.load(PluginInformation.java:184)
	at org.openstreetmap.josm.plugins.PluginHandler.loadPlugins(PluginHandler.java:169)
	at org.openstreetmap.josm.gui.MainApplication.main(MainApplication.java:148)
Caused by: java.lang.ClassNotFoundException: org.openstreetmap.josm.gui.historycombobox.HistoryChangedListener
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 11 more 
 }}}

If I decide to keep the plugin, I will get the same error message again the next time I start JOSM - unless I update the plugin, of course. I've seen similar errors with other JOSM versions - this error isn't the problem itself, it's just an example."	defect	closed	normal		Core		duplicate		
