/** * Implementation checks the ChangeParameterMetaData for declared required fields and also * delegates logic to the {@link * liquibase.sqlgenerator.SqlGenerator#validate(liquibase.statement.SqlStatement, * liquibase.database.Database, liquibase.sqlgenerator.SqlGeneratorChain)} method on the {@link * SqlStatement} objects returned by {@link #generateStatements }. 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 */ @Override public ValidationErrors validate(Database database) { ValidationErrors changeValidationErrors = new ValidationErrors(); for (ChangeParameterMetaData param : ChangeFactory.getInstance().getChangeMetaData(this).getParameters().values()) { if (param.isRequiredFor(database) && param.getCurrentValue(this) == null) { changeValidationErrors.addError( param.getParameterName() + " is required for " + ChangeFactory.getInstance().getChangeMetaData(this).getName() + " on " + database.getShortName()); } } if (changeValidationErrors.hasErrors()) { return changeValidationErrors; } String unsupportedWarning = ChangeFactory.getInstance().getChangeMetaData(this).getName() + " is not supported on " + database.getShortName(); if (!this.supports(database)) { changeValidationErrors.addError(unsupportedWarning); } else if (!generateStatementsVolatile(database)) { boolean sawUnsupportedError = false; SqlStatement[] statements; statements = generateStatements(database); if (statements != null) { for (SqlStatement statement : statements) { boolean supported = SqlGeneratorFactory.getInstance().supports(statement, database); if (!supported && !sawUnsupportedError) { if (!statement.skipOnUnsupported()) { changeValidationErrors.addError(unsupportedWarning); sawUnsupportedError = true; } } else { changeValidationErrors.addAll( SqlGeneratorFactory.getInstance().validate(statement, database)); } } } } return changeValidationErrors; }