Class PhaseService


  • @Service
    public class PhaseService
    extends java.lang.Object
    • 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.Phase build​(com.xebialabs.xlrelease.domain.Release release, com.xebialabs.xlrelease.domain.Phase phaseTemplate, java.lang.Integer position)  
      com.xebialabs.xlrelease.domain.Phase copyPhase​(com.xebialabs.xlrelease.domain.Release release, java.lang.String originPhaseId, int targetPosition)  
      com.xebialabs.xlrelease.domain.Phase create​(java.lang.String parentId)  
      com.xebialabs.xlrelease.domain.Phase create​(java.lang.String parentId, com.xebialabs.xlrelease.domain.Phase phaseTemplate, java.lang.Integer position)  
      void delete​(java.lang.String phaseId)  
      com.xebialabs.xlrelease.domain.Phase duplicatePhase​(java.lang.String originPhaseId)  
      com.xebialabs.xlrelease.domain.Phase findById​(java.lang.String phaseId)  
      com.xebialabs.xlrelease.domain.Phase findByIdWithoutDecorators​(java.lang.String phaseId)  
      java.lang.String getTitle​(java.lang.String id)  
      com.xebialabs.xlrelease.domain.Phase movePhase​(com.xebialabs.xlrelease.domain.Release release, MovementIndexes movementIndexes)  
      com.xebialabs.xlrelease.domain.Release restartPhase​(java.lang.String releaseId, java.lang.String phaseId, java.lang.String taskId, com.xebialabs.xlrelease.repository.PhaseVersion phaseVersion)  
      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.
      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)  
      com.xebialabs.xlrelease.domain.Phase update​(java.lang.String phaseId, com.xebialabs.xlrelease.domain.Phase toUpdate)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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)