Package com.xebialabs.xlrelease.domain

## Class CustomScriptTask

- java.lang.Object
- - com.xebialabs.deployit.plugin.api.udm.base.BaseConfigurationItem
  - - com.xebialabs.xlrelease.domain.PlanItem
    - - com.xebialabs.xlrelease.domain.Task
      - - com.xebialabs.xlrelease.domain.BaseScriptTask
        - - com.xebialabs.xlrelease.domain.CustomScriptTask

- All Implemented Interfaces:
    `ConfigurationItem`, `Lockable`, `VisitableItem`, `java.io.Serializable`, `java.lang.Comparable<BaseConfigurationItem>`

      @Metadata(label="Python Script",
                versioned=false)
      public class CustomScriptTask
      extends BaseScriptTask

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `IGNORE_SCRIPT_VARIABLE_INTERPOLATION` |
    `static java.lang.String` | `PYTHON_SCRIPT_PREFIX` |
    `static java.lang.String` | `SCRIPT_PROPERTY_NAME` |
    `static Type` | `UNKNOWN_TYPE` |
    `static java.lang.String` | `WAIT_FOR_SIGNAL_PROPERTY_NAME` |

    - ### Fields inherited from class com.xebialabs.xlrelease.domain.Task

      `CATEGORY_INPUT, CATEGORY_OUTPUT, delayDuringBlackout, DUE_SOON_THRESHOLD, executionId, failureHandler, failuresCount, hasBeenDelayed, hasBeenFlagged, IS_AUTOMATED_AND_IN_PROGRESS, maxCommentSize, originalScheduledStartDate, postponedDueToBlackout, postponedUntilEnvironmentsAreReserved, precondition, status, tags, taskFailureHandlerEnabled, taskRecoverOp, team, variableMapping, waitForScheduledStartDate`

    - ### Fields inherited from class com.xebialabs.xlrelease.domain.PlanItem

      `BY_TITLE, description, dueDate, endDate, flagComment, flagStatus, overdueNotified, owner, plannedDuration, scheduledStartDate, startDate, title`

    - ### Fields inherited from class com.xebialabs.deployit.plugin.api.udm.base.BaseConfigurationItem

      `id, syntheticProperties, type`

    - ### Fields inherited from interface com.xebialabs.deployit.plugin.api.udm.ConfigurationItem

      `SYNTHETIC_PROPERTIES_FIELD, TYPE_FIELD`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CustomScriptTask()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected Changes` | `execute​(java.lang.String targetId, TaskStartOrRetryOperation operation)` |
    `Changes` | `fail​(java.lang.String targetId, java.lang.String failReason, User user, boolean fromAbort)` |
    `java.util.Set<java.lang.String>` | `freezeVariablesInCustomFields​(java.util.Map<java.lang.String,​ValueWithInterpolation> variables, java.util.Map<java.lang.String,​java.lang.String> passwordVariables, Changes changes, boolean freezeEvenIfUnresolved)` | To be overridden in child classes with custom fields that can contain variables.
    `java.lang.String` | `getAbortScript()` |
    `java.lang.String` | `getAbortScriptPath()` |
    `java.lang.String` | `getEngine()` |
    `java.lang.Integer` | `getInterval()` |
    `java.lang.String` | `getNextScriptPath()` |
    `PythonScript` | `getPythonScript()` |
    `java.lang.String` | `getScriptPath()` |
    `java.lang.String` | `getStatusLine()` |
    `java.util.List<UsagePoint>` | `getVariableUsages()` |
    `boolean` | `hasAbortScript()` |
    `boolean` | `hasNextScriptToExecute()` |
    `boolean` | `isFailureHandlerEnabled()` |
    `boolean` | `isKeepPreviousOutputPropertiesOnRetry()` |
    `boolean` | `isPreconditionEnabled()` |
    `boolean` | `isPropertyVariableInterpolationOff​(PythonScript pythonScript)` |
    `boolean` | `isUnknown()` |
    `boolean` | `isWaitingForSignal()` |
    `void` | `resetSchedule()` |
    `Changes` | `retry​(java.lang.String targetId)` |
    `void` | `schedule​(java.lang.String scriptPath)` | Tells the custom script task that the next script needs to be scheduled after this Jython script is finished.
    `void` | `schedule​(java.lang.String scriptPath, java.lang.Integer interval)` | Tells the custom script task that the next script needs to be scheduled after this Jython script is finished with specified delay in seconds.
    `void` | `setInterval​(java.lang.Integer interval)` |
    `void` | `setKeepPreviousOutputPropertiesOnRetry​(boolean keepPreviousOutputPropertiesOnRetry)` |
    `void` | `setNextScriptPath​(java.lang.String nextScriptPath)` |
    `void` | `setPythonScript​(PythonScript pythonScript)` |
    `void` | `setStatusLine​(java.lang.String statusLine)` |
    `protected boolean` | `shouldFreezeVariableMapping​(CiProperty property)` |

    - ### Methods inherited from class com.xebialabs.xlrelease.domain.BaseScriptTask

      `executeScript`

    - ### Methods inherited from class com.xebialabs.xlrelease.domain.Task

      `abort, accept, addWatcher, applyDefaults, canBeBackup, canScheduleTaskStart, canStartNow, checkDatesValidity, clearComments, delayDuringBlackoutHasChanged, deleteAttachment, deleteTask, fail, fail, fail, failureHandlerHasChanged, findComment, freezeVariables, fromType, fromType, generateExecutionId, getAllTasks, getAttachments, getChildren, getCiUid, getComments, getConfigurationUri, getContainer, getDelayedCount, getDisplayPath, getElapsedDurationFraction, getExecutionId, getFacets, getFailureHandler, getFailuresCount, getFlaggedCount, getInputVariables, getMaxCommentSize, getOriginalScheduledStartDate, getPhase, getPrecondition, getReferencedVariables, getRelease, getReleaseOwner, getReleaseUid, getStatus, getTags, getTaskRecoverOp, getTaskType, getTeam, getUnboundRequiredVariables, getUrl, getVariableMapping, getWatchers, hasBeenDelayed, hasBeenFlagged, hasBeenStarted, hasFailureHandlerScript, hasTaskRecoverOp, hasTeam, hasVariableMapping, isAborted, isAbortScriptInProgress, isActive, isAssignedTo, isAutomated, isCheckAttributes, isCompletedInAdvance, isDefaultTaskType, isDefunct, isDelayDuringBlackout, isDone, isDoneInAdvance, isDueSoon, isDueSoonNotified, isFacetInProgress, isFailed, isFailing, isFailureHandlerInProgress, isGate, isInProgress, isLocked, isMovable, isNotYetReached, isParallelGroup, isPending, isPlanned, isPostponedDueToBlackout, isPostponedUntilEnvironmentsAreReserved, isPreconditionInProgress, isSkipped, isSkippedInAdvance, isStillExecutingScript, isTaskFailureHandlerEnabled, isTaskGroup, isUpdatable, isWaitForScheduledStartDate, isWaitingForInput, lock, markAsDone, ownerHasBeenReassigned, postponeUntilEnvironmentsAreReserved, preconditionHasChanged, removeWatcher, reopen, replaceTask, resetToPlanned, setAttachments, setCheckAttributes, setCiUid, setConfigurationUri, setContainer, setDelayDuringBlackout, setDueSoonNotified, setExecutionId, setFacets, setFailureHandler, setFailuresCount, setFlagStatus, setHasBeenDelayed, setHasBeenFlagged, setLocked, setMaxCommentSize, setOriginalScheduledStartDate, setPostponedDueToBlackout, setPostponedUntilEnvironmentsAreReserved, setPrecondition, setReleaseUid, setScheduledStartDate, setStatus, setTags, setTaskFailureHandlerEnabled, setTaskRecoverOp, setTeam, setVariableMapping, setWaitForScheduledStartDate, setWatchers, shouldFacetBeChecked, shouldNotifyDueSoon, shouldPreconditionBeChecked, start, startNow, startPending, startWithInput, teamHasBeenReassigned, unlock, updateComment`

    - ### Methods inherited from class com.xebialabs.xlrelease.domain.PlanItem

      `calculateDueDate, checkDatesValidity, getActualDuration, getComputedPlannedDuration, getDescription, getDueDate, getEndDate, getEndOrDueDate, getFlagComment, getFlagStatus, getOrCalculateDueDate, getOwner, getPlannedDuration, getScheduledStartDate, getStartDate, getStartOrScheduledDate, getTitle, hasDueDate, hasEndDate, hasEndOrDueDate, hasOwner, hasOwner, hasPlannedDuration, hasScheduledStartDate, hasStartDate, hasStartOrScheduledDate, hasTitle, hasTitle, hasValidStartDates, isFlagged, isOverdue, isOverdueNotified, isTitleContaining, moveChildren, setDates, setDescription, setDueDate, setEndDate, setFlagComment, setOverdueNotified, setOwner, setPlannedDuration, setStartAndEndDatesIfEmpty, setStartDate, setTitle, shouldNotifyOverdue, updateDates, updateDuration`

    - ### Methods inherited from class com.xebialabs.deployit.plugin.api.udm.base.BaseConfigurationItem

      `compareTo, equals, get$ciAttributes, get$directoryReference, get$externalProperties, get$internalId, get$referenceId, get$securedCi, get$securedDirectoryReference, get$token, get$validationMessages, getId, getName, getProperty, getPropertyDescriptor, getType, hashCode, hasProperty, set$ciAttributes, set$directoryReference, set$externalProperties, set$internalId, set$referenceId, set$securedCi, set$securedDirectoryReference, set$token, set$validationMessages, setId, setProperty, setType, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### UNKNOWN_TYPE

          public static final Type UNKNOWN_TYPE

    - #### PYTHON_SCRIPT_PREFIX

          public static final java.lang.String PYTHON_SCRIPT_PREFIX

      See Also:
        Constant Field Values

    - #### IGNORE_SCRIPT_VARIABLE_INTERPOLATION

          public static final java.lang.String IGNORE_SCRIPT_VARIABLE_INTERPOLATION

      See Also:
        Constant Field Values

    - #### SCRIPT_PROPERTY_NAME

          public static final java.lang.String SCRIPT_PROPERTY_NAME

      See Also:
        Constant Field Values

    - #### WAIT_FOR_SIGNAL_PROPERTY_NAME

          public static final java.lang.String WAIT_FOR_SIGNAL_PROPERTY_NAME

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### CustomScriptTask

          public CustomScriptTask()

  - ### Method Detail

    - #### freezeVariablesInCustomFields

          public java.util.Set<java.lang.String> freezeVariablesInCustomFields​(java.util.Map<java.lang.String,​ValueWithInterpolation> variables,
                                                                               java.util.Map<java.lang.String,​java.lang.String> passwordVariables,
                                                                               Changes changes,
                                                                               boolean freezeEvenIfUnresolved)

      Description copied from class: `Task`

      To be overridden in child classes with custom fields that can contain variables.

      Apply `VariableHelper.replaceAll(Object, Map, Set, boolean)` to each field; if child entities are modified, add them to `changes`.
      Overrides:
        `freezeVariablesInCustomFields` in class `Task`

    - #### shouldFreezeVariableMapping

          protected boolean shouldFreezeVariableMapping​(CiProperty property)

      Overrides:
        `shouldFreezeVariableMapping` in class `Task`

    - #### isPreconditionEnabled

          public boolean isPreconditionEnabled()

      Overrides:
        `isPreconditionEnabled` in class `Task`

    - #### isFailureHandlerEnabled

          public boolean isFailureHandlerEnabled()

      Overrides:
        `isFailureHandlerEnabled` in class `Task`

    - #### execute

          protected Changes execute​(java.lang.String targetId,
                                    TaskStartOrRetryOperation operation)

      Overrides:
        `execute` in class `Task`

    - #### getPythonScript

          public PythonScript getPythonScript()

    - #### setPythonScript

          public void setPythonScript​(PythonScript pythonScript)

    - #### getEngine

          public java.lang.String getEngine()

      Specified by:
        `getEngine` in class `BaseScriptTask`

    - #### getStatusLine

          public java.lang.String getStatusLine()

    - #### setStatusLine

          public void setStatusLine​(java.lang.String statusLine)

    - #### getVariableUsages

          public java.util.List<UsagePoint> getVariableUsages()

      Overrides:
        `getVariableUsages` in class `Task`

    - #### setNextScriptPath

          public void setNextScriptPath​(java.lang.String nextScriptPath)

    - #### getNextScriptPath

          public java.lang.String getNextScriptPath()

    - #### getInterval

          public java.lang.Integer getInterval()

    - #### setInterval

          public void setInterval​(java.lang.Integer interval)

    - #### hasNextScriptToExecute

          public boolean hasNextScriptToExecute()

    - #### schedule

          public void schedule​(java.lang.String scriptPath)

      Tells the custom script task that the next script needs to be scheduled after this Jython script is finished. The passed script path must be a valid Jython script on the classpath.

    - #### schedule

          public void schedule​(java.lang.String scriptPath,
                               java.lang.Integer interval)

      Tells the custom script task that the next script needs to be scheduled after this Jython script is finished with specified delay in seconds. The passed script path must be a valid Jython script on the classpath. The passed interval must be any value between 1 and 231-1.

    - #### resetSchedule

          public void resetSchedule()

    - #### fail

          public Changes fail​(java.lang.String targetId,
                              java.lang.String failReason,
                              User user,
                              boolean fromAbort)

      Overrides:
        `fail` in class `Task`

    - #### isWaitingForSignal

          public boolean isWaitingForSignal()

    - #### retry

          public Changes retry​(java.lang.String targetId)

      Overrides:
        `retry` in class `Task`

    - #### getScriptPath

          public java.lang.String getScriptPath()

    - #### hasAbortScript

          public boolean hasAbortScript()

      Overrides:
        `hasAbortScript` in class `Task`

    - #### getAbortScriptPath

          public java.lang.String getAbortScriptPath()

    - #### getAbortScript

          public java.lang.String getAbortScript()
                                          throws java.io.IOException

      Overrides:
        `getAbortScript` in class `Task`
      Throws:
        `java.io.IOException`

    - #### isPropertyVariableInterpolationOff

          public boolean isPropertyVariableInterpolationOff​(PythonScript pythonScript)

    - #### isUnknown

          public boolean isUnknown()

    - #### isKeepPreviousOutputPropertiesOnRetry

          public boolean isKeepPreviousOutputPropertiesOnRetry()

    - #### setKeepPreviousOutputPropertiesOnRetry

          public void setKeepPreviousOutputPropertiesOnRetry​(boolean keepPreviousOutputPropertiesOnRetry)