Package com.xebialabs.xlrelease.service
Class PhaseService
- java.lang.Object
-
- com.xebialabs.xlrelease.service.PhaseService
-
@Service public class PhaseService extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringDEFAULT_RELEASE_PHASE_TITLEstatic java.lang.StringDEFAULT_WORKFLOW_PHASE_TITLE
-
Constructor Summary
Constructors Constructor Description PhaseService(com.xebialabs.xlrelease.service.CiIdService ciIdService, com.xebialabs.xlrelease.repository.ReleaseRepository releaseRepository, com.xebialabs.xlrelease.repository.PhaseRepository phaseRepository, XLReleaseEventBus eventBus, com.xebialabs.xlrelease.service.PhaseRestart phaseRestart, com.xebialabs.xlrelease.api.internal.InternalMetadataDecoratorService decoratorService, com.xebialabs.xlrelease.actors.ReleaseActorService releaseActorService)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description com.xebialabs.xlrelease.domain.Phasebuild(com.xebialabs.xlrelease.domain.Release release, com.xebialabs.xlrelease.domain.Phase phaseTemplate, java.lang.Integer position)com.xebialabs.xlrelease.domain.PhasecopyPhase(com.xebialabs.xlrelease.domain.Release release, java.lang.String originPhaseId, int targetPosition)com.xebialabs.xlrelease.domain.Phasecreate(java.lang.String parentId)com.xebialabs.xlrelease.domain.Phasecreate(java.lang.String parentId, com.xebialabs.xlrelease.domain.Phase phaseTemplate, java.lang.Integer position)voiddelete(java.lang.String phaseId)com.xebialabs.xlrelease.domain.PhaseduplicatePhase(java.lang.String originPhaseId)com.xebialabs.xlrelease.domain.PhasefindById(java.lang.String phaseId)com.xebialabs.xlrelease.domain.PhasefindByIdWithoutDecorators(java.lang.String phaseId)java.lang.StringgetTitle(java.lang.String id)com.xebialabs.xlrelease.domain.PhasemovePhase(com.xebialabs.xlrelease.domain.Release release, MovementIndexes movementIndexes)com.xebialabs.xlrelease.domain.ReleaserestartPhase(java.lang.String releaseId, java.lang.String phaseId, java.lang.String taskId, com.xebialabs.xlrelease.repository.PhaseVersion phaseVersion)com.xebialabs.xlrelease.domain.ReleaserestartPhase(java.lang.String releaseId, java.lang.String phaseId, java.lang.String taskId, com.xebialabs.xlrelease.repository.PhaseVersion phaseVersion, boolean resumeRelease)Should only be called not from Actor thread This method calls Actor to modify release (add copy of restarted phase), and then searches for dependencies (gate tasks) and updates them.com.xebialabs.xlrelease.service.PhaseRestart.RestartPhaseResultrestartPhases(java.lang.String releaseId, java.lang.String phaseId, java.lang.String taskId, com.xebialabs.xlrelease.repository.PhaseVersion phaseVersion, boolean resumeRelease, com.xebialabs.xlrelease.domain.Release release)com.xebialabs.xlrelease.domain.Phaseupdate(java.lang.String phaseId, com.xebialabs.xlrelease.domain.Phase toUpdate)
-
-
-
Field Detail
-
DEFAULT_RELEASE_PHASE_TITLE
public static final java.lang.String DEFAULT_RELEASE_PHASE_TITLE
- See Also:
- Constant Field Values
-
DEFAULT_WORKFLOW_PHASE_TITLE
public static final java.lang.String DEFAULT_WORKFLOW_PHASE_TITLE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PhaseService
@Autowired public PhaseService(com.xebialabs.xlrelease.service.CiIdService ciIdService, com.xebialabs.xlrelease.repository.ReleaseRepository releaseRepository, com.xebialabs.xlrelease.repository.PhaseRepository phaseRepository, XLReleaseEventBus eventBus, com.xebialabs.xlrelease.service.PhaseRestart phaseRestart, com.xebialabs.xlrelease.api.internal.InternalMetadataDecoratorService decoratorService, com.xebialabs.xlrelease.actors.ReleaseActorService releaseActorService)
-
-
Method Detail
-
create
@Timed public com.xebialabs.xlrelease.domain.Phase create(java.lang.String parentId)
-
create
@Timed public com.xebialabs.xlrelease.domain.Phase create(java.lang.String parentId, com.xebialabs.xlrelease.domain.Phase phaseTemplate, java.lang.Integer position)
-
build
public com.xebialabs.xlrelease.domain.Phase build(com.xebialabs.xlrelease.domain.Release release, com.xebialabs.xlrelease.domain.Phase phaseTemplate, java.lang.Integer position)
-
findById
@Timed public com.xebialabs.xlrelease.domain.Phase findById(java.lang.String phaseId)
-
findByIdWithoutDecorators
public com.xebialabs.xlrelease.domain.Phase findByIdWithoutDecorators(java.lang.String phaseId)
-
delete
@Timed public void delete(java.lang.String phaseId)
-
update
@Timed public com.xebialabs.xlrelease.domain.Phase update(java.lang.String phaseId, com.xebialabs.xlrelease.domain.Phase toUpdate)
-
copyPhase
@Timed public com.xebialabs.xlrelease.domain.Phase copyPhase(com.xebialabs.xlrelease.domain.Release release, java.lang.String originPhaseId, int targetPosition)
-
duplicatePhase
@Timed public com.xebialabs.xlrelease.domain.Phase duplicatePhase(java.lang.String originPhaseId)
-
movePhase
@Timed public com.xebialabs.xlrelease.domain.Phase movePhase(com.xebialabs.xlrelease.domain.Release release, MovementIndexes movementIndexes)
-
restartPhases
@Timed public com.xebialabs.xlrelease.service.PhaseRestart.RestartPhaseResult restartPhases(java.lang.String releaseId, java.lang.String phaseId, java.lang.String taskId, com.xebialabs.xlrelease.repository.PhaseVersion phaseVersion, boolean resumeRelease, com.xebialabs.xlrelease.domain.Release release)
-
restartPhase
@Timed public com.xebialabs.xlrelease.domain.Release restartPhase(java.lang.String releaseId, java.lang.String phaseId, java.lang.String taskId, com.xebialabs.xlrelease.repository.PhaseVersion phaseVersion)
-
restartPhase
@Timed public com.xebialabs.xlrelease.domain.Release restartPhase(java.lang.String releaseId, java.lang.String phaseId, java.lang.String taskId, com.xebialabs.xlrelease.repository.PhaseVersion phaseVersion, boolean resumeRelease)Should only be called not from Actor thread This method calls Actor to modify release (add copy of restarted phase), and then searches for dependencies (gate tasks) and updates them. To me there seem to be a race condition, because when release is started after phase restart, then release execution races against dependency update which may cause release tasks from restarted phase to be completed earlier than dependencies will be discovered and updated One of the solutions would be to not restart release until all dependencies will be discovered and updated. TODO FI-526 check consistency of this approach and fix
-
getTitle
@Timed public java.lang.String getTitle(java.lang.String id)
-
-