Class AbstractUpgradeManager
- java.lang.Object
-
- com.atlassian.bamboo.upgrade.AbstractUpgradeManager
-
- All Implemented Interfaces:
UpgradeManager
- Direct Known Subclasses:
BootstrapUpgradeManagerImpl
,UpgradeManagerImpl
public abstract class AbstractUpgradeManager extends Object implements UpgradeManager
-
-
Field Summary
Fields Modifier and Type Field Description protected com.atlassian.config.ApplicationConfiguration
applicationConfig
protected BootstrapManager
bootstrapManager
protected Comparator<String>
buildNumberComparator
protected String
fileName
protected String
newBuildNumber
protected String
oldBuildNumber
protected com.opensymphony.xwork2.TextProvider
textProvider
protected SortedMap<String,UpgradeTask>
upgradeTasks
protected UpgradeUtilityBean
upgradeUtilityBean
protected String
xPathExpression
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractUpgradeManager(@NotNull com.atlassian.config.ApplicationConfiguration applicationConfig, @NotNull String newBuildNumber, @NotNull String fileName, @NotNull String xPathExpression, @NotNull BootstrapManager bootstrapManager)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
classifyUpgradeTask(@NotNull String bambooBuildNumber, @NotNull UpgradeTask task)
protected SortedMap<String,UpgradeTask>
createTasks(@NotNull String xPathExpression, @NotNull String installationBuildNumber, @NotNull String upgradeBuildNumber)
Creates a mapping of build numbers to upgrade tasks.UpgradeTask
createUpgradeTask(String className)
protected <E extends Exception>
voidforEachTask(@NotNull String xPathExpression, @NotNull String installationBuildNumber, @NotNull String upgradeBuildNumber, BambooClosures.Throwing1<UpgradeTask,E> action)
Iterates over upgrade tasks, lazily instantiating them on the fly.@NotNull String
getBuildNumber()
This gets the current build numberprotected @NotNull String
getDescription(@NotNull UpgradeTask task, String thisTaskBuildNumber)
String
getOldBuildNumber()
protected org.dom4j.Document
getUpgradeDocument()
SortedMap<String,UpgradeTask>
getUpgradeTasks()
Gets a map of upgrade tasks which need to run.boolean
needUpgrade()
Determines whether we need to run the upgrade or not.protected void
populateRelevantUpgrades(@NotNull String buildNumberLo, @NotNull String buildNumberHi)
protected String
runUpgradeTask(@NotNull UpgradeTask task, @NotNull List<String> errors)
void
setTextProvider(com.opensymphony.xwork2.TextProvider textProvider)
void
setUpgradeUtilityBean(UpgradeUtilityBean upgradeUtilityBean)
protected boolean
shouldRunTask(@NotNull org.dom4j.Element element, @NotNull String installationBuildNumber, @NotNull String upgradeBuildNumber)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.atlassian.bamboo.upgrade.UpgradeManager
doUpgrade
-
-
-
-
Field Detail
-
buildNumberComparator
protected final Comparator<String> buildNumberComparator
-
oldBuildNumber
protected String oldBuildNumber
-
newBuildNumber
protected final String newBuildNumber
-
fileName
protected final String fileName
-
xPathExpression
protected final String xPathExpression
-
upgradeTasks
protected final SortedMap<String,UpgradeTask> upgradeTasks
-
applicationConfig
protected final com.atlassian.config.ApplicationConfiguration applicationConfig
-
bootstrapManager
protected final BootstrapManager bootstrapManager
-
upgradeUtilityBean
protected UpgradeUtilityBean upgradeUtilityBean
-
textProvider
protected com.opensymphony.xwork2.TextProvider textProvider
-
-
Constructor Detail
-
AbstractUpgradeManager
protected AbstractUpgradeManager(@NotNull @NotNull com.atlassian.config.ApplicationConfiguration applicationConfig, @NotNull @NotNull String newBuildNumber, @NotNull @NotNull String fileName, @NotNull @NotNull String xPathExpression, @NotNull @NotNull BootstrapManager bootstrapManager)
-
-
Method Detail
-
needUpgrade
public boolean needUpgrade()
Description copied from interface:UpgradeManager
Determines whether we need to run the upgrade or not.- Specified by:
needUpgrade
in interfaceUpgradeManager
- Returns:
boolean
whether the upgrade is needed
-
getBuildNumber
@NotNull public @NotNull String getBuildNumber()
Description copied from interface:UpgradeManager
This gets the current build number- Specified by:
getBuildNumber
in interfaceUpgradeManager
- Returns:
- the current build number (stored in application config file)
-
populateRelevantUpgrades
protected void populateRelevantUpgrades(@NotNull @NotNull String buildNumberLo, @NotNull @NotNull String buildNumberHi) throws UpgradeException
- Throws:
UpgradeException
-
classifyUpgradeTask
protected void classifyUpgradeTask(@NotNull @NotNull String bambooBuildNumber, @NotNull @NotNull UpgradeTask task) throws UpgradeException
- Throws:
UpgradeException
-
createTasks
protected SortedMap<String,UpgradeTask> createTasks(@NotNull @NotNull String xPathExpression, @NotNull @NotNull String installationBuildNumber, @NotNull @NotNull String upgradeBuildNumber) throws UpgradeException
Creates a mapping of build numbers to upgrade tasks.All matching upgrade tasks are instantiated by this method. This means that if there's a problem with instantiating at least one upgrade task (for example due to broken Spring dependencies), this method will throw.
To lazily iterate over upgrade tasks, use
forEachTask(String, String, String, BambooClosures.Throwing1)
.- Throws:
UpgradeException
-
forEachTask
protected <E extends Exception> void forEachTask(@NotNull @NotNull String xPathExpression, @NotNull @NotNull String installationBuildNumber, @NotNull @NotNull String upgradeBuildNumber, @NotNull BambooClosures.Throwing1<UpgradeTask,E> action) throws UpgradeException, E extends Exception
Iterates over upgrade tasks, lazily instantiating them on the fly.Provided
action
will be performed on all previous upgrade tasks before a new task is instantiated. This may be beneficial for validation tasks, to detect problems and report them nicely instead of relying on infrastructure exceptions. (For example, first upgrade task may detect broken DB configuration and fail, and subsequent one, requiring DB connection from Spring beans, won't even be created.)To eagerly instantiate all upgrade tasks, use
createTasks(String, String, String)
.- Throws:
UpgradeException
E extends Exception
-
createUpgradeTask
public UpgradeTask createUpgradeTask(String className) throws UpgradeException
- Throws:
UpgradeException
-
getUpgradeDocument
protected org.dom4j.Document getUpgradeDocument() throws org.dom4j.DocumentException
- Throws:
org.dom4j.DocumentException
-
runUpgradeTask
protected String runUpgradeTask(@NotNull @NotNull UpgradeTask task, @NotNull @NotNull List<String> errors)
-
getDescription
@NotNull protected @NotNull String getDescription(@NotNull @NotNull UpgradeTask task, String thisTaskBuildNumber)
-
shouldRunTask
protected boolean shouldRunTask(@NotNull @NotNull org.dom4j.Element element, @NotNull @NotNull String installationBuildNumber, @NotNull @NotNull String upgradeBuildNumber)
-
getUpgradeTasks
public SortedMap<String,UpgradeTask> getUpgradeTasks()
Gets a map of upgrade tasks which need to run.- Returns:
SortedMap
map of upgrade tasks, keys are the string representations of the build number.
-
getOldBuildNumber
public String getOldBuildNumber()
- Specified by:
getOldBuildNumber
in interfaceUpgradeManager
- Returns:
- build number before upgrade
-
setUpgradeUtilityBean
public void setUpgradeUtilityBean(UpgradeUtilityBean upgradeUtilityBean)
-
setTextProvider
public void setTextProvider(com.opensymphony.xwork2.TextProvider textProvider)
-
-