Commit ce440029 authored by Nathan Voxland's avatar Nathan Voxland Committed by Andy Wilkinson

Upgrade to Liquibase 3.3.0

This commit updates Spring Boot to Liquibase 3.3.0 and makes the
necessary changes to Boot's PackageScanClassResolver.

Previously, when a class found by the scan could not be loaded a
warning message was logged. This commit lowers these to debug level,
bringing them into line with logging that the standard Liquibase
implementation does. It also avoids a warning always being logged at
startup due to Liquibase's WatchCommand$DynamicContentHandler which
depends on Jetty (an optional dependency of Liquibase).

Closes gh-1382
parent a3d4e92d
......@@ -92,7 +92,7 @@
<json-path.version>0.9.1</json-path.version>
<jstl.version>1.2</jstl.version>
<junit.version>4.11</junit.version>
<liquibase.version>3.0.8</liquibase.version>
<liquibase.version>3.3.0</liquibase.version>
<log4j.version>1.2.17</log4j.version>
<log4j2.version>2.0.2</log4j2.version>
<logback.version>1.1.2</logback.version>
......
......@@ -17,11 +17,9 @@
package org.springframework.boot.liquibase;
import java.io.IOException;
import java.util.Set;
import liquibase.servicelocator.DefaultPackageScanClassResolver;
import liquibase.servicelocator.PackageScanClassResolver;
import liquibase.servicelocator.PackageScanFilter;
import org.apache.commons.logging.Log;
import org.springframework.core.io.Resource;
......@@ -48,16 +46,15 @@ public class SpringPackageScanClassResolver extends DefaultPackageScanClassResol
}
@Override
protected void find(PackageScanFilter test, String packageName, ClassLoader loader,
Set<Class<?>> classes) {
protected void findAllClasses(String packageName, ClassLoader loader) {
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(
loader);
try {
Resource[] resources = scan(loader, packageName);
for (Resource resource : resources) {
Class<?> candidate = loadClass(loader, metadataReaderFactory, resource);
if (candidate != null && test.matches(candidate)) {
classes.add(candidate);
Class<?> clazz = loadClass(loader, metadataReaderFactory, resource);
if (clazz != null) {
addFoundClass(clazz);
}
}
}
......@@ -80,12 +77,21 @@ public class SpringPackageScanClassResolver extends DefaultPackageScanClassResol
MetadataReader reader = readerFactory.getMetadataReader(resource);
return ClassUtils.forName(reader.getClassMetadata().getClassName(), loader);
}
catch (NoClassDefFoundError ex) {
handleFailure(resource, ex);
return null;
}
catch (Exception ex) {
if (this.logger.isWarnEnabled()) {
this.logger.warn("Ignoring cadidate class resource " + resource, ex);
}
handleFailure(resource, ex);
return null;
}
}
private void handleFailure(Resource resource, Throwable ex) {
if (this.logger.isDebugEnabled()) {
this.logger.debug("Ignoring candidate class resource " + resource
+ " due to " + ex);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment