hudson.tools
Class DownloadFromUrlInstaller

java.lang.Object
  extended by hudson.tools.ToolInstaller
      extended by hudson.tools.DownloadFromUrlInstaller
All Implemented Interfaces:
ExtensionPoint, Describable<ToolInstaller>
Direct Known Subclasses:
Maven.MavenInstaller

public abstract class DownloadFromUrlInstaller
extends ToolInstaller

Partial convenience implementation of ToolInstaller that just downloads an archive from the URL and extracts it.

Each instance of this is configured to download from a specific URL identified by an ID.

Since:
1.308
Author:
Kohsuke Kawaguchi

Nested Class Summary
static class DownloadFromUrlInstaller.DescriptorImpl<T extends DownloadFromUrlInstaller>
           
static class DownloadFromUrlInstaller.Installable
          Downloadable and installable tool.
static class DownloadFromUrlInstaller.InstallableList
          Used for JSON databinding to parse the obtained list.
 
Nested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudson
 
Field Summary
 String id
           
 
Fields inherited from class hudson.tools.ToolInstaller
tool
 
Constructor Summary
protected DownloadFromUrlInstaller(String id)
           
 
Method Summary
protected  FilePath findPullUpDirectory(FilePath root)
          Often an archive contains an extra top-level directory that's unnecessary when extracted on the disk into the expected location.
 DownloadFromUrlInstaller.Installable getInstallable()
          Gets the DownloadFromUrlInstaller.Installable identified by id.
protected  boolean isUpToDate(FilePath expectedLocation, DownloadFromUrlInstaller.Installable i)
          Checks if the specified expected location already contains the installed version of the tool.
 FilePath performInstallation(ToolInstallation tool, Node node, TaskListener log)
          Ensure that the configured tool is really installed.
 
Methods inherited from class hudson.tools.ToolInstaller
appliesTo, getDescriptor, getLabel, preferredLocation, setTool
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

id

public final String id
Constructor Detail

DownloadFromUrlInstaller

@DataBoundConstructor
protected DownloadFromUrlInstaller(String id)
Method Detail

isUpToDate

protected boolean isUpToDate(FilePath expectedLocation,
                             DownloadFromUrlInstaller.Installable i)
                      throws IOException,
                             InterruptedException
Checks if the specified expected location already contains the installed version of the tool. This check needs to run fairly efficiently. The current implementation uses the souce URL of DownloadFromUrlInstaller.Installable, based on the assumption that released bits do not change its content.

Throws:
IOException
InterruptedException

getInstallable

public DownloadFromUrlInstaller.Installable getInstallable()
                                                    throws IOException
Gets the DownloadFromUrlInstaller.Installable identified by id.

Returns:
null if no such ID is found.
Throws:
IOException

performInstallation

public FilePath performInstallation(ToolInstallation tool,
                                    Node node,
                                    TaskListener log)
                             throws IOException,
                                    InterruptedException
Description copied from class: ToolInstaller
Ensure that the configured tool is really installed. If it is already installed, do nothing. Called only if ToolInstaller.appliesTo(Node) are true.

Specified by:
performInstallation in class ToolInstaller
Parameters:
tool - the tool being installed
node - the computer on which to install the tool
log - any status messages produced by the installation go here
Returns:
the (directory) path at which the tool can be found, typically coming from ToolInstaller.preferredLocation(hudson.tools.ToolInstallation, hudson.model.Node)
Throws:
IOException - if installation fails
InterruptedException - if communication with a slave is interrupted

findPullUpDirectory

protected FilePath findPullUpDirectory(FilePath root)
                                throws IOException,
                                       InterruptedException
Often an archive contains an extra top-level directory that's unnecessary when extracted on the disk into the expected location. If your installation sources provide that kind of archives, override this method to find the real root location.

The caller will "pull up" the discovered real root by throw away the intermediate directory, so that the user-configured "tool home" directory contains the right files.

The default implementation applies some heuristics to auto-determine if the pull up is necessary. This should work for typical archive files.

Parameters:
root - The directory that contains the extracted archive. This directory contains nothing but the extracted archive. For example, if the user installed http://archive.apache.org/dist/ant/binaries/jakarta-ant-1.1.zip , this directory would contain a single directory "jakarta-ant".
Returns:
Return the real top directory inside root that contains the meat. In the above example, root.child("jakarta-ant") should be returned. If there's no directory to pull up, return null.
Throws:
IOException
InterruptedException


Copyright © 2004-2013. All Rights Reserved.