Bump to pom-scijava 1.37

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
UploaderService: support auto-installing uploaders given their protocol

The idea is that uploaders for specific protocols follow the convention
that they are contained in 'ij-updater-<protocol>-<version>.jar' files.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: Add a method to find upload protocols given files

Every uploading mechanism will need to verify that the uploaders
required to upload a certain set of files are available. This method
helps.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Do not ever return null from DefaultUploaderService#installUploader

... but instead throw an exception, just like getUploader() does.

While at it, do not expect FilesCollection#get to have found a file
at all that corresponds to the protocol we are looking for.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Take care to copy the update sites diligently when auto-installing
uploaders

This will be particularly important for our own integration test
which wants to install a dummy uploader that is not available from
the ImageJ update site (and will never be).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Uncuddle code in the DefaultUploaderService

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
When auto-installing an uploader, give the PluginService a chance

... to discover the newly uploader...

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
When auto-installing an uploader, do not force-move files into place

When installing files, they are always put into update/ first; we
can pick them up there rather than forcing them into place, something
that might fail on Windows for the most dubious reasons.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Always try to auto-install missing uploaders

Earlier, we tried to establish that for the Swing updater GUI only,
and it did not work reliably. We will added an integration test to
make sure that things work alright, so things should be much more
robust now.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Deprecate the FilesUploader constructor that takes no UploaderService

We really should reuse any existing one. To make things easy for
users, they can pass null in which case we will construct a fresh
UploaderService.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Use only the new constructor of the FilesUploader

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Avoid using the PluginInfo constructor deprecated in newest scijava-common

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Use more appropriate name for FilesUploader#initialUploader

The name 'initialUpload' suggested that it would perform the complete
upload, but it is still the duty of the user to take care of logging
in, uploading and logging out.

While at it, add a signature accepting an uploader service and
deprecate the old call.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Avoid using the deprecated FilesUploader#initialUpload method

... for the reasons why it was deprecated...

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add an integration test for the uploader auto-install

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater (Swing): use the newly introduced API to auto-install uploaders

There was little use in hiding that functionality in the Swing-specific
frontend of the updater to begin with.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater (Swing): do not show progress until title is set

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Uploader auto-install: special-case SFTP

We know that SFTP is handled by ij-updater-ssh, not ij-updater-sftp...

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Merge branch 'auto-install-uploader'

With this merge, we are finally able to install uploaders on the fly: if
somebody decides to add a new update site, specifying
"gianluigi:my.host.com" for the upload host, the updater will determine
that the upload protocol is "gianluigi". If no such uploader was
installed yet, the updater will now automatically look for a file called
"ij-updater-gianluigi.jar" (with or without version number),
auto-install and use that file right away.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>