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
Executes a given shell executable.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface liquibase.serializer.LiquibaseSerializable
LiquibaseSerializable.SerializationType -
Field Summary
FieldsFields inherited from class liquibase.change.AbstractChange
NODENAME_COLUMNFields inherited from interface liquibase.change.Change
EMPTY_CHANGE, SHOULD_EXECUTEFields inherited from interface liquibase.serializer.LiquibaseSerializable
GENERIC_CHANGELOG_EXTENSION_NAMESPACE, GENERIC_SNAPSHOT_EXTENSION_NAMESPACE, STANDARD_CHANGELOG_NAMESPACE, STANDARD_SNAPSHOT_NAMESPACEFields inherited from interface liquibase.plugin.Plugin
PRIORITY_DATABASE, PRIORITY_DEFAULT, PRIORITY_NOT_APPLICABLE, PRIORITY_SPECIALIZED -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidprotected ExecuteShellCommandChange.StreamGobblercreateErrorGobbler(InputStream processStream, OutputStream outputStream) createFinalCommandArray(Database database) protected ProcessBuildercreateProcessBuilder(Database database) protected voidcustomLoadLogic(ParsedNode parsedNode, ResourceAccessor resourceAccessor) protected voidexecuteCommand(Database database) voidDefault implementation is a no-opbooleangenerateRollbackStatementsVolatile(Database database) Implementation 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.generateStatements(Database database) Generates theSqlStatementobjects required to run the change for the given database.booleangenerateStatementsVolatile(Database database) Implementation delegates logic to theSqlGenerator.generateStatementsIsVolatile(Database)method on theSqlStatementobjects returned byChange.generateStatements(liquibase.database.Database).getArgs()protected StringConfirmation message to be displayed after the change is executed.protected IntegerMax bytes to copy from output toprocessResult(int, String, String, Database).getOs()protected longprotected voidprocessResult(int returnCode, String errorStreamOut, String infoStreamOut, Database database) Called byexecuteCommand(Database)after running the command.voidbooleanDefault implementation always returns true.toString()Implementation 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).Implementation delegates logic to theSqlGenerator.warn(liquibase.statement.SqlStatement, liquibase.database.Database, liquibase.sqlgenerator.SqlGeneratorChain)method on theSqlStatementobjects returned byChange.generateStatements(liquibase.database.Database).Methods inherited from class liquibase.change.AbstractChange
checkStatus, createAlternateParameterNames, createChangeMetaData, createChangeParameterMetadata, createDescriptionMetaData, createEmptyColumnConfig, createExampleValueMetaData, createInverses, createMustEqualExistingMetaData, createRequiredDatabasesMetaData, createSerializationTypeMetaData, createSinceMetaData, createSupportedDatabasesMetaData, equals, generateCheckSum, generateRollbackStatements, getAffectedDatabaseObjects, getChangeSet, getDescription, getExcludedFieldFilters, getResourceAccessor, getSerializableFieldNamespace, getSerializableFields, getSerializableFieldType, getSerializableFieldValue, getSerializedObjectName, hashCode, isInvalidProperty, load, modify, serialize, serializeValue, setChangeSet, setResourceAccessor, shouldExecuteChange, supports, supportsRollbackMethods inherited from class liquibase.AbstractExtensibleObject
clone, describe, get, get, get, getAttributes, getFieldValue, getObjectMetaData, getValuePath, has, setMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface liquibase.ExtensibleObject
clone, describe, get, get, getAttributes, getObjectMetaData, getValuePath, has, set
-
Field Details
-
finalCommandArray
-
maxStreamGobblerOutput
-
-
Constructor Details
-
ExecuteShellCommandChange
public ExecuteShellCommandChange()
-
-
Method Details
-
shouldRunOnOs
public boolean shouldRunOnOs()Description copied from interface:ChangeDefault implementation always returns true. Any implementation can override. Currently only ExecuteShellCommandChange overrides- Returns:
- boolean
-
generateStatementsVolatile
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
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
-
getArgs
-
addArg
-
getTimeout
-
getOs
-
setOs
-
validate
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
-
finishInitialization
Description copied from class:AbstractChangeDefault implementation is a no-op- Specified by:
finishInitializationin interfaceChange- Overrides:
finishInitializationin classAbstractChange- Throws:
SetupException
-
warn
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
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). -
createFinalCommandArray
-
executeCommand
- Throws:
Exception
-
createErrorGobbler
protected ExecuteShellCommandChange.StreamGobbler createErrorGobbler(InputStream processStream, OutputStream outputStream) -
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
-
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
-
getSerializedObjectNamespace
- Specified by:
getSerializedObjectNamespacein interfaceLiquibaseSerializable- Overrides:
getSerializedObjectNamespacein classAbstractChange
-
customLoadLogic
protected void customLoadLogic(ParsedNode parsedNode, ResourceAccessor resourceAccessor) throws ParsedNodeException - Overrides:
customLoadLogicin classAbstractChange- Throws:
ParsedNodeException
-
toString
- Overrides:
toStringin classAbstractChange
-