Search in sources :

Example 6 with ChangeLogParser

use of liquibase.parser.ChangeLogParser in project liquibase by liquibase.

the class ChangeLogParserFactoryTest method unregister_instance.

@Test
public void unregister_instance() {
    ChangeLogParserFactory factory = ChangeLogParserFactory.getInstance();
    factory.unregisterAllParsers();
    assumeThat(ChangeLogParserFactory.getInstance().getParsers(), empty());
    ChangeLogParser mockChangeLogParser = new MockChangeLogParser(".test");
    factory.register(new XMLChangeLogSAXParser());
    factory.register(mockChangeLogParser);
    factory.register(new SqlChangeLogParser());
    assertEquals(3, factory.getParsers().size());
    factory.unregister(mockChangeLogParser);
    assertEquals(2, factory.getParsers().size());
}
Also used : SqlChangeLogParser(liquibase.parser.core.sql.SqlChangeLogParser) MockChangeLogParser(liquibase.parser.MockChangeLogParser) ChangeLogParserFactory(liquibase.parser.ChangeLogParserFactory) MockChangeLogParser(liquibase.parser.MockChangeLogParser) SqlChangeLogParser(liquibase.parser.core.sql.SqlChangeLogParser) ChangeLogParser(liquibase.parser.ChangeLogParser) XMLChangeLogSAXParser(liquibase.parser.core.xml.XMLChangeLogSAXParser) Test(org.junit.Test)

Example 7 with ChangeLogParser

use of liquibase.parser.ChangeLogParser in project liquibase by liquibase.

the class DatabaseChangeLog method include.

public boolean include(String fileName, boolean isRelativePath, ResourceAccessor resourceAccessor, ContextExpression includeContexts) throws LiquibaseException {
    if (fileName.equalsIgnoreCase(".svn") || fileName.equalsIgnoreCase("cvs")) {
        return false;
    }
    String relativeBaseFileName = this.getPhysicalFilePath();
    if (isRelativePath) {
        // workaround for FilenameUtils.normalize() returning null for relative paths like ../conf/liquibase.xml
        String tempFile = FilenameUtils.concat(FilenameUtils.getFullPath(relativeBaseFileName), fileName);
        if (tempFile != null && new File(tempFile).exists() == true) {
            fileName = tempFile;
        } else {
            fileName = FilenameUtils.getFullPath(relativeBaseFileName) + fileName;
        }
    }
    DatabaseChangeLog changeLog;
    try {
        DatabaseChangeLog rootChangeLog = ROOT_CHANGE_LOG.get();
        if (rootChangeLog == null) {
            ROOT_CHANGE_LOG.set(this);
        }
        DatabaseChangeLog parentChangeLog = PARENT_CHANGE_LOG.get();
        PARENT_CHANGE_LOG.set(this);
        try {
            ChangeLogParser parser = ChangeLogParserFactory.getInstance().getParser(fileName, resourceAccessor);
            changeLog = parser.parse(fileName, changeLogParameters, resourceAccessor);
            changeLog.setIncludeContexts(includeContexts);
        } finally {
            if (rootChangeLog == null) {
                ROOT_CHANGE_LOG.remove();
            }
            if (parentChangeLog == null) {
                PARENT_CHANGE_LOG.remove();
            } else {
                PARENT_CHANGE_LOG.set(parentChangeLog);
            }
        }
    } catch (UnknownChangelogFormatException e) {
        if (StringUtils.trimToEmpty(fileName).matches("\\.\\w+$")) {
            LogFactory.getInstance().getLog().warning("included file " + relativeBaseFileName + "/" + fileName + " is not a recognized file type");
        }
        return false;
    }
    PreconditionContainer preconditions = changeLog.getPreconditions();
    if (preconditions != null) {
        if (null == this.getPreconditions()) {
            this.setPreconditions(new PreconditionContainer());
        }
        this.getPreconditions().addNestedPrecondition(preconditions);
    }
    for (ChangeSet changeSet : changeLog.getChangeSets()) {
        addChangeSet(changeSet);
    }
    return true;
}
Also used : PreconditionContainer(liquibase.precondition.core.PreconditionContainer) ChangeLogParser(liquibase.parser.ChangeLogParser) UnknownChangelogFormatException(liquibase.exception.UnknownChangelogFormatException) File(java.io.File)

Example 8 with ChangeLogParser

use of liquibase.parser.ChangeLogParser in project liquibase by liquibase.

the class Liquibase method getDatabaseChangeLog.

public DatabaseChangeLog getDatabaseChangeLog() throws LiquibaseException {
    if (databaseChangeLog == null && changeLogFile != null) {
        ChangeLogParser parser = ChangeLogParserFactory.getInstance().getParser(changeLogFile, resourceAccessor);
        databaseChangeLog = parser.parse(changeLogFile, changeLogParameters, resourceAccessor);
    }
    return databaseChangeLog;
}
Also used : ChangeLogParser(liquibase.parser.ChangeLogParser)

Example 9 with ChangeLogParser

use of liquibase.parser.ChangeLogParser in project liquibase by liquibase.

the class ChangeLogParserFactoryTest method getParser_byExtension.

@Test
public void getParser_byExtension() throws Exception {
    ChangeLogParserFactory.getInstance().unregisterAllParsers();
    assumeThat(ChangeLogParserFactory.getInstance().getParsers(), empty());
    XMLChangeLogSAXParser xmlChangeLogParser = new XMLChangeLogSAXParser();
    ChangeLogParserFactory.getInstance().register(xmlChangeLogParser);
    ChangeLogParserFactory.getInstance().register(new SqlChangeLogParser());
    ChangeLogParser parser = ChangeLogParserFactory.getInstance().getParser("xml", new JUnitResourceAccessor());
    assertNotNull(parser);
    assertSame(xmlChangeLogParser, parser);
}
Also used : SqlChangeLogParser(liquibase.parser.core.sql.SqlChangeLogParser) MockChangeLogParser(liquibase.parser.MockChangeLogParser) SqlChangeLogParser(liquibase.parser.core.sql.SqlChangeLogParser) ChangeLogParser(liquibase.parser.ChangeLogParser) JUnitResourceAccessor(liquibase.test.JUnitResourceAccessor) XMLChangeLogSAXParser(liquibase.parser.core.xml.XMLChangeLogSAXParser) Test(org.junit.Test)

Example 10 with ChangeLogParser

use of liquibase.parser.ChangeLogParser in project liquibase by liquibase.

the class DeactivateChangelogCommandStep method parseChangeLogFile.

private DatabaseChangeLog parseChangeLogFile(String changeLogFile) throws LiquibaseException {
    ResourceAccessor resourceAccessor = Scope.getCurrentScope().getResourceAccessor();
    ChangeLogParser parser = ChangeLogParserFactory.getInstance().getParser(changeLogFile, resourceAccessor);
    ChangeLogParameters changeLogParameters = new ChangeLogParameters();
    return parser.parse(changeLogFile, changeLogParameters, resourceAccessor);
}
Also used : ResourceAccessor(liquibase.resource.ResourceAccessor) ChangeLogParameters(liquibase.changelog.ChangeLogParameters) ChangeLogParser(liquibase.parser.ChangeLogParser)

Aggregations

ChangeLogParser (liquibase.parser.ChangeLogParser)12 ChangeLogParameters (liquibase.changelog.ChangeLogParameters)5 ResourceAccessor (liquibase.resource.ResourceAccessor)5 XMLChangeLogSAXParser (liquibase.parser.core.xml.XMLChangeLogSAXParser)4 File (java.io.File)3 MockChangeLogParser (liquibase.parser.MockChangeLogParser)3 SqlChangeLogParser (liquibase.parser.core.sql.SqlChangeLogParser)3 ClassLoaderResourceAccessor (liquibase.resource.ClassLoaderResourceAccessor)3 Test (org.junit.Test)3 FileOutputStream (java.io.FileOutputStream)2 ArrayList (java.util.ArrayList)2 DatabaseChangeLog (liquibase.changelog.DatabaseChangeLog)2 PreconditionContainer (liquibase.precondition.core.PreconditionContainer)2 CompositeResourceAccessor (liquibase.resource.CompositeResourceAccessor)2 FileSystemResourceAccessor (liquibase.resource.FileSystemResourceAccessor)2 ChangeLogSerializer (liquibase.serializer.ChangeLogSerializer)2 JUnitResourceAccessor (liquibase.test.JUnitResourceAccessor)2 Method (java.lang.reflect.Method)1 SAXParserFactory (javax.xml.parsers.SAXParserFactory)1 CommandResult (liquibase.command.CommandResult)1