|
|
|
|
@ -36,8 +36,10 @@ import org.springframework.context.annotation.ConditionContext;
@@ -36,8 +36,10 @@ import org.springframework.context.annotation.ConditionContext;
|
|
|
|
|
import org.springframework.context.annotation.Conditional; |
|
|
|
|
import org.springframework.context.annotation.Configuration; |
|
|
|
|
import org.springframework.context.annotation.Import; |
|
|
|
|
import org.springframework.core.env.Environment; |
|
|
|
|
import org.springframework.core.type.AnnotatedTypeMetadata; |
|
|
|
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; |
|
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* {@link EnableAutoConfiguration Auto-configuration} for {@link DataSource}. |
|
|
|
|
@ -125,8 +127,7 @@ public class DataSourceAutoConfiguration {
@@ -125,8 +127,7 @@ public class DataSourceAutoConfiguration {
|
|
|
|
|
@Override |
|
|
|
|
public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) { |
|
|
|
|
ConditionMessage.Builder message = ConditionMessage.forCondition("EmbeddedDataSource"); |
|
|
|
|
boolean hasDatasourceUrl = context.getEnvironment().containsProperty(DATASOURCE_URL_PROPERTY); |
|
|
|
|
if (hasDatasourceUrl) { |
|
|
|
|
if (hasDataSourceUrlProperty(context)) { |
|
|
|
|
return ConditionOutcome.noMatch(message.because(DATASOURCE_URL_PROPERTY + " is set")); |
|
|
|
|
} |
|
|
|
|
if (anyMatches(context, metadata, this.pooledCondition)) { |
|
|
|
|
@ -139,6 +140,19 @@ public class DataSourceAutoConfiguration {
@@ -139,6 +140,19 @@ public class DataSourceAutoConfiguration {
|
|
|
|
|
return ConditionOutcome.match(message.found("embedded database").items(type)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean hasDataSourceUrlProperty(ConditionContext context) { |
|
|
|
|
Environment environment = context.getEnvironment(); |
|
|
|
|
if (environment.containsProperty(DATASOURCE_URL_PROPERTY)) { |
|
|
|
|
try { |
|
|
|
|
return StringUtils.hasText(environment.getProperty(DATASOURCE_URL_PROPERTY)); |
|
|
|
|
} |
|
|
|
|
catch (IllegalArgumentException ex) { |
|
|
|
|
// Ignore unresolvable placeholder errors
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|