Class VcsRepositoryConfigurationServiceImpl
- All Implemented Interfaces:
VcsRepositoryConfigurationService
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.atlassian.bamboo.vcs.configuration.service.VcsRepositoryConfigurationService
VcsRepositoryConfigurationService.LinkedRepositoryAccess, VcsRepositoryConfigurationService.RepositoryAccess
-
Field Summary
Fields inherited from interface com.atlassian.bamboo.vcs.configuration.service.VcsRepositoryConfigurationService
LEGACY_VCS_PLUGINS_USED_BANDANA_KEY
-
Constructor Summary
ConstructorDescriptionVcsRepositoryConfigurationServiceImpl
(RepositoryDefinitionManager repositoryDefinitionManager, AuditLogService auditLogService, HibernateMutableAclService aclService, RawRepositoryConfigurationXmlConverter rawRepositoryConfigurationXmlConverter, ScopedExclusionService scopedExclusionService, TriggerConfigurationService triggerConfigurationService, TaskConfigurationService taskConfigurationService, ChainBranchManager chainBranchManager, EnvironmentTaskService environmentTaskService, BuildDefinitionManager buildDefinitionManager, com.atlassian.event.api.EventPublisher eventPublisher, BranchCreationFacade branchCreationFacade, VcsRepositoryManager vcsRepositoryManager, TransactionAndHibernateTemplate hibernateTemplate) -
Method Summary
Modifier and TypeMethodDescription@NotNull ErrorCollection
configureRssDetection
(long repositoryId, PartialVcsRepositoryData vcsRepositoryData, boolean isEnabled) Sets detection of Bamboo Specs for repository and saves new config.convertToNewRepositoryConfiguration
(@NotNull PartialVcsRepositoryData vcsRepositoryData) If repository data represents a repository implemented in the old system and appropriate new plugin exists, the data is converted to the new plugin.@NotNull PartialVcsRepositoryData
createLinkedRepository
(@NotNull PartialVcsRepositoryData newVcsConfiguration, @NotNull com.atlassian.user.User user, @NotNull VcsRepositoryConfigurationService.RepositoryAccess accessOption) Creates new linked repositoryorg.acegisecurity.acls.MutableAcl
createNewSharedRepositoryDefaultAcl
(@Nullable com.atlassian.user.User user, long repositoryId, VcsRepositoryConfigurationService.RepositoryAccess accessOption) Creates a defualt Acl for a specific repository which has: - READ permissions for the creator (if applicable) - READ permission to logged in users if ALL_USERS option is specified@NotNull PartialVcsRepositoryData
createPlanRepository
(@NotNull Plan plan, @NotNull PartialVcsRepositoryData newVcsConfiguration) Creates "plan local" repository and adds it to a plan.@NotNull PartialVcsRepositoryData
createProjectRepository
(@NotNull PartialVcsRepositoryData newVcsConfiguration, @Nullable com.atlassian.user.User user, @NotNull VcsRepositoryConfigurationService.RepositoryAccess accessOption) Creates new project repositoryvoid
deleteLinkedRepository
(long repositoryId) Removes linked repository.void
deleteProjectRepository
(long repositoryId) Removes project repository.void
deleteRepository
(@NotNull Plan plan, long repositoryId, Long replacementRepositoryId) Removes repository definition from a plan@NotNull PartialVcsRepositoryData
editLinkedRepository
(long repositoryId, @NotNull PartialVcsRepositoryData newVcsConfiguration) Edits existing linked repository@NotNull PartialVcsRepositoryData
editProjectRepository
(long repositoryId, @NotNull PartialVcsRepositoryData newVcsConfiguration) Edits existing project repository@NotNull PartialVcsRepositoryData
editRepository
(@NotNull Plan plan, long repositoryId, @NotNull PartialVcsRepositoryData newVcsConfiguration) Edits existing "plan local" repository.protected @NotNull List<PlanRepositoryLink>
getNewRepositoryList
(@NotNull List<PlanRepositoryLink> originalRepositories, @NotNull PlanRepositoryLink toMove, long beforeId, long afterId) getRelevantJobsForRepositoryIdChange
(@NotNull ImmutablePlan plan, long repositoryId) Gets list of jobs using a repository.@org.jetbrains.annotations.NotNull boolean
hasProjectSharedCredentialsForRepository
(PartialVcsRepositoryData vcsRepositoryData) @NotNull PartialVcsRepositoryData
linkRepositoryToPlan
(@NotNull Plan plan, long selectedRepositoryId) Connects a linked repository to a plan by creating a new repository that inherits all the data from the linked repository and adding it to the plan.mergeLinkedRepository
(@NotNull PartialVcsRepositoryData vcsRepositoryData) Merges the state of the given linked repository into the database.void
mergePlanRepositories
(@NotNull Plan plan, @NotNull List<PartialVcsRepositoryData> vcsRepositoryDataList) Merges the state of the given plan repositories into the database.mergeProjectRepository
(@NotNull PartialVcsRepositoryData vcsRepositoryData) Merges the state of the given project repository into the database.void
moveRepository
(@NotNull Plan plan, long repositoryId, long beforePosition, long afterPosition) Changes position of repository in the repository list.replaceRepositoryInPlan
(@NotNull Plan plan, @NotNull VcsRepositoryData parentRepository, @NotNull PartialVcsRepositoryData oldRepository, @NotNull PartialVcsRepositoryData newRepository) Replaces uses of a repository with another one.void
setParentOfPlanRepository
(@NotNull ImmutablePlan plan, long repositoryId, long parentRepositoryId) Creates or changes parent-child relationship for a plan repository.void
shareRepository
(@NotNull Plan plan, @NotNull PartialVcsRepositoryData repositoryData, @NotNull String repositoryName, @Nullable String userDescription, @NotNull com.atlassian.user.User user) Converts existing Plan repository to Linked repository.boolean
validateContinuableStatus
(@NotNull ResultsSummary resultSummary) Checks that result is continuable and repositories referenced by a result still exists in Bamboo db.void
validateLinkedRepository
(@NotNull PartialVcsRepositoryData vcsRepositoryData) Validate linked repository before saving it in database.boolean
validateLinkedRepositoryName
(@NotNull String repositoryName, @Nullable BambooIdProvider vcsRepositoryData) Checks if name of a linked repository is unique.void
validatePlanRepositoriesNamesAndOids
(@NotNull Plan plan, @NotNull List<PartialVcsRepositoryData> repositoryDataList) Validate repository names checking if there are no duplicates.void
validatePlanRepository
(@NotNull Plan plan, @NotNull PartialVcsRepositoryData vcsRepositoryData) Validate plan repository before saving it in database.void
validateProjectRepository
(@NotNull PartialVcsRepositoryData vcsRepositoryData) Validate project repository before saving it in database.boolean
validateProjectRepositoryName
(@NotNull String repositoryName, @NotNull Long projectId, @Nullable BambooIdProvider vcsRepositoryData) Checks if name of a project repository is unique in the project.boolean
validateRepositoryName
(@NotNull ImmutablePlan immutablePlan, @NotNull String repositoryName, @Nullable BambooIdProvider repositoryDefinition) Checks if provided name for repository is unique in the Planboolean
validateRestartableStatus
(@NotNull ResultsSummary resultSummary) Checks that result is restartable and repositories referenced by a result still exists in Bamboo db.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.vcs.configuration.service.VcsRepositoryConfigurationService
createLinkedRepository
-
Constructor Details
-
VcsRepositoryConfigurationServiceImpl
public VcsRepositoryConfigurationServiceImpl(RepositoryDefinitionManager repositoryDefinitionManager, AuditLogService auditLogService, HibernateMutableAclService aclService, RawRepositoryConfigurationXmlConverter rawRepositoryConfigurationXmlConverter, ScopedExclusionService scopedExclusionService, TriggerConfigurationService triggerConfigurationService, TaskConfigurationService taskConfigurationService, ChainBranchManager chainBranchManager, EnvironmentTaskService environmentTaskService, BuildDefinitionManager buildDefinitionManager, com.atlassian.event.api.EventPublisher eventPublisher, BranchCreationFacade branchCreationFacade, VcsRepositoryManager vcsRepositoryManager, TransactionAndHibernateTemplate hibernateTemplate)
-
-
Method Details
-
createPlanRepository
@NotNull public @NotNull PartialVcsRepositoryData createPlanRepository(@NotNull @NotNull Plan plan, @NotNull @NotNull PartialVcsRepositoryData newVcsConfiguration) Description copied from interface:VcsRepositoryConfigurationService
Creates "plan local" repository and adds it to a plan.- Specified by:
createPlanRepository
in interfaceVcsRepositoryConfigurationService
- Returns:
-
editRepository
@NotNull public @NotNull PartialVcsRepositoryData editRepository(@NotNull @NotNull Plan plan, long repositoryId, @NotNull @NotNull PartialVcsRepositoryData newVcsConfiguration) Description copied from interface:VcsRepositoryConfigurationService
Edits existing "plan local" repository.- Specified by:
editRepository
in interfaceVcsRepositoryConfigurationService
- Returns:
-
setParentOfPlanRepository
public void setParentOfPlanRepository(@NotNull @NotNull ImmutablePlan plan, long repositoryId, long parentRepositoryId) Description copied from interface:VcsRepositoryConfigurationService
Creates or changes parent-child relationship for a plan repository.- Specified by:
setParentOfPlanRepository
in interfaceVcsRepositoryConfigurationService
-
replaceRepositoryInPlan
public PartialVcsRepositoryData replaceRepositoryInPlan(@NotNull @NotNull Plan plan, @NotNull @NotNull VcsRepositoryData parentRepository, @NotNull @NotNull PartialVcsRepositoryData oldRepository, @NotNull @NotNull PartialVcsRepositoryData newRepository) Description copied from interface:VcsRepositoryConfigurationService
Replaces uses of a repository with another one.- Specified by:
replaceRepositoryInPlan
in interfaceVcsRepositoryConfigurationService
- Returns:
-
linkRepositoryToPlan
@NotNull public @NotNull PartialVcsRepositoryData linkRepositoryToPlan(@NotNull @NotNull Plan plan, long selectedRepositoryId) Description copied from interface:VcsRepositoryConfigurationService
Connects a linked repository to a plan by creating a new repository that inherits all the data from the linked repository and adding it to the plan.- Specified by:
linkRepositoryToPlan
in interfaceVcsRepositoryConfigurationService
- Returns:
-
createLinkedRepository
@NotNull public @NotNull PartialVcsRepositoryData createLinkedRepository(@NotNull @NotNull PartialVcsRepositoryData newVcsConfiguration, @NotNull @NotNull com.atlassian.user.User user, @NotNull @NotNull VcsRepositoryConfigurationService.RepositoryAccess accessOption) Description copied from interface:VcsRepositoryConfigurationService
Creates new linked repository- Specified by:
createLinkedRepository
in interfaceVcsRepositoryConfigurationService
- Returns:
-
createProjectRepository
@NotNull public @NotNull PartialVcsRepositoryData createProjectRepository(@NotNull @NotNull PartialVcsRepositoryData newVcsConfiguration, @Nullable @Nullable com.atlassian.user.User user, @NotNull @NotNull VcsRepositoryConfigurationService.RepositoryAccess accessOption) Description copied from interface:VcsRepositoryConfigurationService
Creates new project repository- Specified by:
createProjectRepository
in interfaceVcsRepositoryConfigurationService
- Returns:
-
editLinkedRepository
@NotNull public @NotNull PartialVcsRepositoryData editLinkedRepository(long repositoryId, @NotNull @NotNull PartialVcsRepositoryData newVcsConfiguration) Description copied from interface:VcsRepositoryConfigurationService
Edits existing linked repository- Specified by:
editLinkedRepository
in interfaceVcsRepositoryConfigurationService
- Returns:
-
editProjectRepository
@NotNull public @NotNull PartialVcsRepositoryData editProjectRepository(long repositoryId, @NotNull @NotNull PartialVcsRepositoryData newVcsConfiguration) Description copied from interface:VcsRepositoryConfigurationService
Edits existing project repository- Specified by:
editProjectRepository
in interfaceVcsRepositoryConfigurationService
- Returns:
-
deleteLinkedRepository
public void deleteLinkedRepository(long repositoryId) Description copied from interface:VcsRepositoryConfigurationService
Removes linked repository.- Specified by:
deleteLinkedRepository
in interfaceVcsRepositoryConfigurationService
-
deleteProjectRepository
public void deleteProjectRepository(long repositoryId) Description copied from interface:VcsRepositoryConfigurationService
Removes project repository.- Specified by:
deleteProjectRepository
in interfaceVcsRepositoryConfigurationService
-
validateLinkedRepositoryName
public boolean validateLinkedRepositoryName(@NotNull @NotNull String repositoryName, @Nullable @Nullable BambooIdProvider vcsRepositoryData) Description copied from interface:VcsRepositoryConfigurationService
Checks if name of a linked repository is unique.- Specified by:
validateLinkedRepositoryName
in interfaceVcsRepositoryConfigurationService
- Returns:
-
validateProjectRepositoryName
public boolean validateProjectRepositoryName(@NotNull @NotNull String repositoryName, @NotNull @NotNull Long projectId, @Nullable @Nullable BambooIdProvider vcsRepositoryData) Description copied from interface:VcsRepositoryConfigurationService
Checks if name of a project repository is unique in the project.- Specified by:
validateProjectRepositoryName
in interfaceVcsRepositoryConfigurationService
- Returns:
-
validateRepositoryName
public boolean validateRepositoryName(@NotNull @NotNull ImmutablePlan immutablePlan, @NotNull @NotNull String repositoryName, @Nullable @Nullable BambooIdProvider repositoryDefinition) Description copied from interface:VcsRepositoryConfigurationService
Checks if provided name for repository is unique in the Plan- Specified by:
validateRepositoryName
in interfaceVcsRepositoryConfigurationService
-
deleteRepository
public void deleteRepository(@NotNull @NotNull Plan plan, long repositoryId, Long replacementRepositoryId) Description copied from interface:VcsRepositoryConfigurationService
Removes repository definition from a plan- Specified by:
deleteRepository
in interfaceVcsRepositoryConfigurationService
replacementRepositoryId
- repository id to replace removed one in tasks depending on it
-
moveRepository
public void moveRepository(@NotNull @NotNull Plan plan, long repositoryId, long beforePosition, long afterPosition) throws IllegalArgumentException, IllegalStateException Description copied from interface:VcsRepositoryConfigurationService
Changes position of repository in the repository list. Important for setting default repository- Specified by:
moveRepository
in interfaceVcsRepositoryConfigurationService
repositoryId
- the RepositoryDefinition to movebeforePosition
- position of the RepositoryDefinition that will be before the moving Repository, -1 if the beginning of the listafterPosition
- position of the RepositoryDefinition that will be after the moving Repository, -1 if the end of the list- Throws:
IllegalArgumentException
IllegalStateException
-
getNewRepositoryList
@NotNull protected @NotNull List<PlanRepositoryLink> getNewRepositoryList(@NotNull @NotNull List<PlanRepositoryLink> originalRepositories, @NotNull @NotNull PlanRepositoryLink toMove, long beforeId, long afterId) -
validateRestartableStatus
Description copied from interface:VcsRepositoryConfigurationService
Checks that result is restartable and repositories referenced by a result still exists in Bamboo db.- Specified by:
validateRestartableStatus
in interfaceVcsRepositoryConfigurationService
-
validateContinuableStatus
Description copied from interface:VcsRepositoryConfigurationService
Checks that result is continuable and repositories referenced by a result still exists in Bamboo db.- Specified by:
validateContinuableStatus
in interfaceVcsRepositoryConfigurationService
-
getRelevantJobsForRepositoryIdChange
public Map<ImmutableJob,List<TaskDefinition>> getRelevantJobsForRepositoryIdChange(@NotNull @NotNull ImmutablePlan plan, long repositoryId) Description copied from interface:VcsRepositoryConfigurationService
Gets list of jobs using a repository.- Specified by:
getRelevantJobsForRepositoryIdChange
in interfaceVcsRepositoryConfigurationService
-
convertToNewRepositoryConfiguration
public PartialVcsRepositoryData convertToNewRepositoryConfiguration(@NotNull @NotNull PartialVcsRepositoryData vcsRepositoryData) Description copied from interface:VcsRepositoryConfigurationService
If repository data represents a repository implemented in the old system and appropriate new plugin exists, the data is converted to the new plugin. Otherwise, original data is returned.- Specified by:
convertToNewRepositoryConfiguration
in interfaceVcsRepositoryConfigurationService
- Returns:
-
validateProjectRepository
public void validateProjectRepository(@NotNull @NotNull PartialVcsRepositoryData vcsRepositoryData) throws com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException Description copied from interface:VcsRepositoryConfigurationService
Validate project repository before saving it in database.- Specified by:
validateProjectRepository
in interfaceVcsRepositoryConfigurationService
- Parameters:
vcsRepositoryData
- imported project repository- Throws:
com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException
-
validateLinkedRepository
public void validateLinkedRepository(@NotNull @NotNull PartialVcsRepositoryData vcsRepositoryData) throws com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException Description copied from interface:VcsRepositoryConfigurationService
Validate linked repository before saving it in database.- Specified by:
validateLinkedRepository
in interfaceVcsRepositoryConfigurationService
- Parameters:
vcsRepositoryData
- imported linked repository- Throws:
com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException
-
mergeLinkedRepository
public PartialVcsRepositoryData mergeLinkedRepository(@NotNull @NotNull PartialVcsRepositoryData vcsRepositoryData) throws com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException Description copied from interface:VcsRepositoryConfigurationService
Merges the state of the given linked repository into the database.This service will attempt to merge the entity based on
ImmutableEntityWithOid.getOid()
, and if there's no match, based onDescriptionProvider.getName()
. If an existing entity is found, then it will be updated. Otherwise, a new database entity will be created.It's assumed that this method is used in specs import only as it's sending analytic event.
- Specified by:
mergeLinkedRepository
in interfaceVcsRepositoryConfigurationService
- Parameters:
vcsRepositoryData
- imported linked repository- Returns:
- an object after persisting to the database - either the newly created or updated database object
- Throws:
com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException
-
mergeProjectRepository
public PartialVcsRepositoryData mergeProjectRepository(@NotNull @NotNull PartialVcsRepositoryData vcsRepositoryData) throws com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException Description copied from interface:VcsRepositoryConfigurationService
Merges the state of the given project repository into the database.This service will attempt to merge the entity based on
ImmutableEntityWithOid.getOid()
, and if there's no match, based onDescriptionProvider.getName()
. If an existing entity is found, then it will be updated. Otherwise, a new database entity will be created. It's assumed that this method is used in specs import only as it's sending analytic event.- Specified by:
mergeProjectRepository
in interfaceVcsRepositoryConfigurationService
- Parameters:
vcsRepositoryData
- imported project repository- Returns:
- an object after persisting to the database - either the newly created or updated database object
- Throws:
com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException
-
validatePlanRepository
public void validatePlanRepository(@NotNull @NotNull Plan plan, @NotNull @NotNull PartialVcsRepositoryData vcsRepositoryData) throws com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException Description copied from interface:VcsRepositoryConfigurationService
Validate plan repository before saving it in database.- Specified by:
validatePlanRepository
in interfaceVcsRepositoryConfigurationService
vcsRepositoryData
- imported plan repository- Throws:
com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException
-
validatePlanRepositoriesNamesAndOids
public void validatePlanRepositoriesNamesAndOids(@NotNull @NotNull Plan plan, @NotNull @NotNull List<PartialVcsRepositoryData> repositoryDataList) throws com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException Description copied from interface:VcsRepositoryConfigurationService
Validate repository names checking if there are no duplicates.- Specified by:
validatePlanRepositoriesNamesAndOids
in interfaceVcsRepositoryConfigurationService
- Throws:
com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException
-
mergePlanRepositories
public void mergePlanRepositories(@NotNull @NotNull Plan plan, @NotNull @NotNull List<PartialVcsRepositoryData> vcsRepositoryDataList) throws com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException Description copied from interface:VcsRepositoryConfigurationService
Merges the state of the given plan repositories into the database. Note that it is up to the caller to validate if the resulting changes of repository configurations are actually legal.This service will attempt to merge the entities based on
BambooIdProvider.getId()
, and if there's no match, a new database entity will be created. All other repositories in plan will be removed.- Specified by:
mergePlanRepositories
in interfaceVcsRepositoryConfigurationService
vcsRepositoryDataList
- list of imported plan repositories- Throws:
com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException
-
configureRssDetection
@NotNull public @NotNull ErrorCollection configureRssDetection(long repositoryId, PartialVcsRepositoryData vcsRepositoryData, boolean isEnabled) Description copied from interface:VcsRepositoryConfigurationService
Sets detection of Bamboo Specs for repository and saves new config. Validates if repository supports RSS.- Specified by:
configureRssDetection
in interfaceVcsRepositoryConfigurationService
- Parameters:
repositoryId
- id of repositoryvcsRepositoryData
- repository configuration, remains unchangedisEnabled
- true if Specs detection should be enabled, false otherwise- Returns:
- a list of errors.
-