Class AbstractUpgradeManager
- All Implemented Interfaces:
UpgradeManager
- Direct Known Subclasses:
BootstrapUpgradeManagerImpl,UpgradeManagerImpl
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final com.atlassian.config.ApplicationConfigurationprotected final BootstrapManagerprotected final Comparator<String>protected final Stringprotected final Stringprotected Stringprotected com.opensymphony.xwork2.TextProviderprotected final SortedMap<String,UpgradeTask> protected UpgradeUtilityBeanprotected final String -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractUpgradeManager(@NotNull com.atlassian.config.ApplicationConfiguration applicationConfig, @NotNull String newBuildNumber, @NotNull String fileName, @NotNull String xPathExpression, @NotNull BootstrapManager bootstrapManager) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidclassifyUpgradeTask(@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.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 StringThis gets the current build numberprotected @NotNull StringgetDescription(@NotNull UpgradeTask task, String thisTaskBuildNumber) protected org.dom4j.DocumentGets a map of upgrade tasks which need to run.booleanDetermines whether we need to run the upgrade or not.protected voidpopulateRelevantUpgrades(@NotNull String buildNumberLo, @NotNull String buildNumberHi) protected StringrunUpgradeTask(@NotNull UpgradeTask task, @NotNull List<String> errors) voidsetTextProvider(com.opensymphony.xwork2.TextProvider textProvider) voidsetUpgradeUtilityBean(UpgradeUtilityBean upgradeUtilityBean) protected booleanshouldRunTask(@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, waitMethods inherited from interface com.atlassian.bamboo.upgrade.UpgradeManager
doUpgrade
-
Field Details
-
buildNumberComparator
-
oldBuildNumber
-
newBuildNumber
-
fileName
-
xPathExpression
-
upgradeTasks
-
applicationConfig
protected final com.atlassian.config.ApplicationConfiguration applicationConfig -
bootstrapManager
-
upgradeUtilityBean
-
textProvider
protected com.opensymphony.xwork2.TextProvider textProvider
-
-
Constructor Details
-
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 Details
-
needUpgrade
public boolean needUpgrade()Description copied from interface:UpgradeManagerDetermines whether we need to run the upgrade or not.- Specified by:
needUpgradein interfaceUpgradeManager- Returns:
booleanwhether the upgrade is needed
-
getBuildNumber
Description copied from interface:UpgradeManagerThis gets the current build number- Specified by:
getBuildNumberin 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, EIterates over upgrade tasks, lazily instantiating them on the fly.Provided
actionwill 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:
UpgradeExceptionE extends Exception
-
createUpgradeTask
- 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
-
getUpgradeTasks
Gets a map of upgrade tasks which need to run.- Returns:
SortedMapmap of upgrade tasks, keys are the string representations of the build number.
-
getOldBuildNumber
- Specified by:
getOldBuildNumberin interfaceUpgradeManager- Returns:
- build number before upgrade
-
setUpgradeUtilityBean
-
setTextProvider
public void setTextProvider(com.opensymphony.xwork2.TextProvider textProvider)
-