Package liquibase.change.core
Class ExecuteShellCommandChange
- java.lang.Object
-
- liquibase.AbstractExtensibleObject
-
- liquibase.plugin.AbstractPlugin
-
- liquibase.change.AbstractChange
-
- liquibase.change.core.ExecuteShellCommandChange
-
- All Implemented Interfaces:
Cloneable,Change,ExtensibleObject,Plugin,LiquibaseSerializable
public class ExecuteShellCommandChange extends AbstractChange
Executes a given shell executable.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classExecuteShellCommandChange.StreamGobbler-
Nested classes/interfaces inherited from interface liquibase.serializer.LiquibaseSerializable
LiquibaseSerializable.SerializationType
-
-
Field Summary
Fields Modifier and Type Field Description protected List<String>finalCommandArrayprotected IntegermaxStreamGobblerOutput-
Fields inherited from class liquibase.change.AbstractChange
NODENAME_COLUMN
-
Fields inherited from interface liquibase.change.Change
EMPTY_CHANGE, SHOULD_EXECUTE
-
Fields inherited from interface liquibase.serializer.LiquibaseSerializable
GENERIC_CHANGELOG_EXTENSION_NAMESPACE, GENERIC_SNAPSHOT_EXTENSION_NAMESPACE, STANDARD_CHANGELOG_NAMESPACE, STANDARD_SNAPSHOT_NAMESPACE
-
Fields inherited from interface liquibase.plugin.Plugin
PRIORITY_DATABASE, PRIORITY_DEFAULT, PRIORITY_NOT_APPLICABLE, PRIORITY_SPECIALIZED
-
-
Constructor Summary
Constructors Constructor Description ExecuteShellCommandChange()
-
Method Summary
-
Methods inherited from class liquibase.change.AbstractChange
checkStatus, createChangeMetaData, createChangeParameterMetadata, createDescriptionMetaData, createEmptyColumnConfig, createExampleValueMetaData, createInverses, createMustEqualExistingMetaData, createRequiredDatabasesMetaData, createSerializationTypeMetaData, createSinceMetaData, createSupportedDatabasesMetaData, equals, finishInitialization, generateCheckSum, generateRollbackStatements, getAffectedDatabaseObjects, getChangeSet, getDescription, getExcludedFieldFilters, getResourceAccessor, getSerializableFieldNamespace, getSerializableFields, getSerializableFieldType, getSerializableFieldValue, getSerializedObjectName, hashCode, isInvalidProperty, load, serialize, serializeValue, setChangeSet, setResourceAccessor, shouldExecuteChange, supports, supportsRollback
-
Methods inherited from class liquibase.AbstractExtensibleObject
clone, describe, get, get, get, getAttributes, getFieldValue, getObjectMetaData, getValuePath, has, set
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface liquibase.ExtensibleObject
clone, describe, get, get, getAttributes, getObjectMetaData, getValuePath, has, set
-
-
-
-
Method Detail
-
generateStatementsVolatile
public boolean generateStatementsVolatile(Database database)
Description copied from class:AbstractChangeImplementation delegates logic to theSqlGenerator.generateStatementsIsVolatile(Database)method on theSqlStatementobjects returned byChange.generateStatements(liquibase.database.Database). If zero or null SqlStatements are returned by generateStatements then this method returns false.- Specified by:
generateStatementsVolatilein interfaceChange- Overrides:
generateStatementsVolatilein classAbstractChange
-
generateRollbackStatementsVolatile
public boolean generateRollbackStatementsVolatile(Database database)
Description copied from class:AbstractChangeImplementation delegates logic to theSqlGenerator.generateRollbackStatementsIsVolatile(Database)method on theSqlStatementobjects returned byChange.generateStatements(liquibase.database.Database)If no or null SqlStatements are returned by generateRollbackStatements then this method returns false.- Specified by:
generateRollbackStatementsVolatilein interfaceChange- Overrides:
generateRollbackStatementsVolatilein classAbstractChange
-
getExecutable
public String getExecutable()
-
setExecutable
public void setExecutable(String executable)
-
addArg
public void addArg(String arg)
-
getTimeout
public String getTimeout()
-
setTimeout
public void setTimeout(String timeout)
-
setOs
public void setOs(String os)
-
validate
public ValidationErrors validate(Database database)
Description copied from class:AbstractChangeImplementation checks the ChangeParameterMetaData for declared required fields and also delegates logic to theSqlGenerator.validate(liquibase.statement.SqlStatement, liquibase.database.Database, liquibase.sqlgenerator.SqlGeneratorChain)method on theSqlStatementobjects returned byChange.generateStatements(liquibase.database.Database). If no or null SqlStatements are returned by generateStatements then this method returns no errors. If there are no parameters than this method returns no errors- Specified by:
validatein interfaceChange- Overrides:
validatein classAbstractChange
-
warn
public Warnings warn(Database database)
Description copied from class:AbstractChangeImplementation delegates logic to theSqlGenerator.warn(liquibase.statement.SqlStatement, liquibase.database.Database, liquibase.sqlgenerator.SqlGeneratorChain)method on theSqlStatementobjects returned byChange.generateStatements(liquibase.database.Database). If a generated statement is not supported for the given database, no warning will be added since that is a validation error. If no or null SqlStatements are returned by generateStatements then this method returns no warnings.- Specified by:
warnin interfaceChange- Overrides:
warnin classAbstractChange
-
generateStatements
public SqlStatement[] generateStatements(Database database)
Description copied from interface:ChangeGenerates theSqlStatementobjects required to run the change for the given database. NOTE: This method may be called multiple times throughout the changelog execution process and may be called in documentation generation and other integration points as well. If this method reads from the current database state or uses any other logic that will be affected by whether previous changeSets have ran or not, you must return true fromChange.generateStatementsVolatile(liquibase.database.Database).
-
nonExecutedCleanup
protected void nonExecutedCleanup()
-
createErrorGobbler
protected ExecuteShellCommandChange.StreamGobbler createErrorGobbler(InputStream processStream, OutputStream outputStream)
-
getMaxStreamGobblerOutput
protected Integer getMaxStreamGobblerOutput()
Max bytes to copy from output toprocessResult(int, String, String, Database). If null, process all output.- Returns:
-
getTimeoutInMillis
protected long getTimeoutInMillis()
- Returns:
- the timeout value in millisecond
-
processResult
protected void processResult(int returnCode, String errorStreamOut, String infoStreamOut, Database database)Called byexecuteCommand(Database)after running the command. Default implementation throws an error if returnCode != 0
-
createProcessBuilder
protected ProcessBuilder createProcessBuilder(Database database)
-
getConfirmationMessage
public String getConfirmationMessage()
Description copied from interface:ChangeConfirmation message to be displayed after the change is executed. Should include relevant configuration settings to make it as helpful as possible. This method may be called outside the changelog execution process, such as in documentation generation.
-
getCommandString
protected String getCommandString()
-
getSerializedObjectNamespace
public String getSerializedObjectNamespace()
- Specified by:
getSerializedObjectNamespacein interfaceLiquibaseSerializable- Overrides:
getSerializedObjectNamespacein classAbstractChange
-
customLoadLogic
protected void customLoadLogic(ParsedNode parsedNode, ResourceAccessor resourceAccessor) throws ParsedNodeException
- Overrides:
customLoadLogicin classAbstractChange- Throws:
ParsedNodeException
-
toString
public String toString()
- Overrides:
toStringin classAbstractChange
-
-