Remove deprecated code in Spring Boot 2.3
Closes gh-24806
This commit is contained in:
commit
2de8c49d9f
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -93,17 +93,6 @@ public final class MeterValue {
|
|||
return new MeterValue(DurationStyle.detectAndParse(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a new {@link MeterValue} instance for the given long value.
|
||||
* @param value the source value
|
||||
* @return a {@link MeterValue} instance
|
||||
* @deprecated as of 2.3.0 in favor of {@link #valueOf(double)}
|
||||
*/
|
||||
@Deprecated
|
||||
public static MeterValue valueOf(long value) {
|
||||
return new MeterValue(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a new {@link MeterValue} instance for the given double value.
|
||||
* @param value the source value
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -20,7 +20,6 @@ import java.util.LinkedHashMap;
|
|||
import java.util.Map;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
|
||||
/**
|
||||
|
@ -262,12 +261,6 @@ public class MetricsProperties {
|
|||
return this.percentiles;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "management.metrics.distribution.slo")
|
||||
public Map<String, ServiceLevelObjectiveBoundary[]> getSla() {
|
||||
return this.slo;
|
||||
}
|
||||
|
||||
public Map<String, ServiceLevelObjectiveBoundary[]> getSlo() {
|
||||
return this.slo;
|
||||
}
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import io.micrometer.core.instrument.Meter;
|
||||
|
||||
/**
|
||||
* A boundary for a service-level agreement (SLA) for use when configuring Micrometer. Can
|
||||
* be specified as either a {@link Long} (applicable to timers and distribution summaries)
|
||||
* or a {@link Duration} (applicable to only timers).
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @since 2.0.0
|
||||
* @deprecated as of 2.3.0 in favor of {@link ServiceLevelObjectiveBoundary}
|
||||
*/
|
||||
@Deprecated
|
||||
public final class ServiceLevelAgreementBoundary {
|
||||
|
||||
private final MeterValue value;
|
||||
|
||||
ServiceLevelAgreementBoundary(MeterValue value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the underlying value of the SLA in form suitable to apply to the given meter
|
||||
* type.
|
||||
* @param meterType the meter type
|
||||
* @return the value or {@code null} if the value cannot be applied
|
||||
*/
|
||||
public Long getValue(Meter.Type meterType) {
|
||||
Double value = this.value.getValue(meterType);
|
||||
return (value != null) ? value.longValue() : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a new {@link ServiceLevelAgreementBoundary} instance for the given long
|
||||
* value.
|
||||
* @param value the source value
|
||||
* @return a {@link ServiceLevelAgreementBoundary} instance
|
||||
*/
|
||||
public static ServiceLevelAgreementBoundary valueOf(long value) {
|
||||
return new ServiceLevelAgreementBoundary(MeterValue.valueOf(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a new {@link ServiceLevelAgreementBoundary} instance for the given String
|
||||
* value.
|
||||
* @param value the source value
|
||||
* @return a {@link ServiceLevelAgreementBoundary} instance
|
||||
*/
|
||||
public static ServiceLevelAgreementBoundary valueOf(String value) {
|
||||
return new ServiceLevelAgreementBoundary(MeterValue.valueOf(value));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -203,15 +203,6 @@ class PropertiesMeterFilterTests {
|
|||
.containsExactly(1, 1.5, 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void configureWhenHasDeprecatedSlaShouldSetSlaToValue() {
|
||||
PropertiesMeterFilter filter = new PropertiesMeterFilter(
|
||||
createProperties("distribution.sla.spring.boot=1,2,3"));
|
||||
assertThat(filter.configure(createMeterId("spring.boot"), DistributionStatisticConfig.DEFAULT)
|
||||
.getServiceLevelObjectiveBoundaries()).containsExactly(1000000, 2000000, 3000000);
|
||||
}
|
||||
|
||||
@Test
|
||||
void configureWhenHasSloShouldSetSloToValue() {
|
||||
PropertiesMeterFilter filter = new PropertiesMeterFilter(
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -128,13 +128,12 @@ class ManagementErrorEndpointTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void errorResponseWithDefaultErrorAttributesSubclassUsingDeprecatedApiAndDelegation() {
|
||||
void errorResponseWithDefaultErrorAttributesSubclassUsingDelegation() {
|
||||
ErrorAttributes attributes = new DefaultErrorAttributes() {
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
|
||||
Map<String, Object> response = super.getErrorAttributes(webRequest, includeStackTrace);
|
||||
public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) {
|
||||
Map<String, Object> response = super.getErrorAttributes(webRequest, options);
|
||||
response.put("error", "custom error");
|
||||
response.put("custom", "value");
|
||||
response.remove("path");
|
||||
|
@ -151,7 +150,7 @@ class ManagementErrorEndpointTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void errorResponseWithDefaultErrorAttributesSubclassUsingDeprecatedApiWithoutDelegation() {
|
||||
void errorResponseWithDefaultErrorAttributesSubclassWithoutDelegation() {
|
||||
ErrorAttributes attributes = new DefaultErrorAttributes() {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -104,22 +104,6 @@ public class CachingOperationInvoker implements OperationInvoker {
|
|||
return new CachedResponse(response, accessTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply caching configuration when appropriate to the given invoker.
|
||||
* @param invoker the invoker to wrap
|
||||
* @param timeToLive the maximum time in milliseconds that a response can be cached
|
||||
* @return a caching version of the invoker or the original instance if caching is not
|
||||
* required
|
||||
* @deprecated as of 2.3.0 to make it package-private in 2.4
|
||||
*/
|
||||
@Deprecated
|
||||
public static OperationInvoker apply(OperationInvoker invoker, long timeToLive) {
|
||||
if (timeToLive > 0) {
|
||||
return new CachingOperationInvoker(invoker, timeToLive);
|
||||
}
|
||||
return invoker;
|
||||
}
|
||||
|
||||
/**
|
||||
* A cached response that encapsulates the response itself and the time at which it
|
||||
* was created.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -94,30 +94,6 @@ public final class WebClientExchangeTags {
|
|||
return CLIENT_ERROR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@code status} {@code Tag} derived from the
|
||||
* {@link ClientResponse#statusCode()} of the given {@code response}.
|
||||
* @param response the response
|
||||
* @return the status tag
|
||||
* @deprecated since 2.3.0 in favor of {@link #status(ClientResponse, Throwable)}
|
||||
*/
|
||||
@Deprecated
|
||||
public static Tag status(ClientResponse response) {
|
||||
return Tag.of("status", String.valueOf(response.rawStatusCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@code status} {@code Tag} derived from the exception thrown by the
|
||||
* client.
|
||||
* @param throwable the exception
|
||||
* @return the status tag
|
||||
* @deprecated since 2.3.0 in favor of {@link #status(ClientResponse, Throwable)}
|
||||
*/
|
||||
@Deprecated
|
||||
public static Tag status(Throwable throwable) {
|
||||
return (throwable instanceof IOException) ? IO_ERROR : CLIENT_ERROR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@code clientName} {@code Tag} derived from the
|
||||
* {@link java.net.URI#getHost host} of the {@link ClientRequest#url() URL} of the
|
||||
|
|
|
@ -62,7 +62,6 @@ dependencies {
|
|||
optional("org.apache.tomcat.embed:tomcat-embed-el")
|
||||
optional("org.apache.tomcat.embed:tomcat-embed-websocket")
|
||||
optional("org.apache.tomcat:tomcat-jdbc")
|
||||
optional("org.codehaus.btm:btm")
|
||||
optional("org.codehaus.groovy:groovy-templates")
|
||||
optional("com.github.ben-manes.caffeine:caffeine")
|
||||
optional("com.github.mxab.thymeleaf.extras:thymeleaf-extras-data-attribute")
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.batch;
|
||||
|
||||
import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
|
||||
/**
|
||||
* {@link ApplicationRunner} to {@link JobLauncher launch} Spring Batch jobs. Runs all
|
||||
* jobs in the surrounding context by default. Can also be used to launch a specific job
|
||||
* by providing a jobName.
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Jean-Pierre Bergamin
|
||||
* @author Mahmoud Ben Hassine
|
||||
* @since 1.0.0
|
||||
* @deprecated since 2.3.0 in favor of {@link JobLauncherApplicationRunner}
|
||||
*/
|
||||
@Deprecated
|
||||
public class JobLauncherCommandLineRunner extends JobLauncherApplicationRunner {
|
||||
|
||||
/**
|
||||
* Create a new {@link JobLauncherCommandLineRunner}.
|
||||
* @param jobLauncher to launch jobs
|
||||
* @param jobExplorer to check the job repository for previous executions
|
||||
* @param jobRepository to check if a job instance exists with the given parameters
|
||||
* when running a job
|
||||
*/
|
||||
public JobLauncherCommandLineRunner(JobLauncher jobLauncher, JobExplorer jobExplorer, JobRepository jobRepository) {
|
||||
super(jobLauncher, jobExplorer, jobRepository);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -39,20 +39,16 @@ import org.springframework.util.ObjectUtils;
|
|||
* Couchbase cache configuration.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
* @since 1.4.0
|
||||
* @deprecated since 2.3.3 as this class is not intended for public use. It will be made
|
||||
* package-private in a future release
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnClass({ Cluster.class, CouchbaseClientFactory.class, CouchbaseCacheManager.class })
|
||||
@ConditionalOnMissingBean(CacheManager.class)
|
||||
@ConditionalOnSingleCandidate(CouchbaseClientFactory.class)
|
||||
@Conditional(CacheCondition.class)
|
||||
@Deprecated
|
||||
public class CouchbaseCacheConfiguration {
|
||||
class CouchbaseCacheConfiguration {
|
||||
|
||||
@Bean
|
||||
public CouchbaseCacheManager cacheManager(CacheProperties cacheProperties, CacheManagerCustomizers customizers,
|
||||
CouchbaseCacheManager cacheManager(CacheProperties cacheProperties, CacheManagerCustomizers customizers,
|
||||
ObjectProvider<CouchbaseCacheManagerBuilderCustomizer> couchbaseCacheManagerBuilderCustomizers,
|
||||
CouchbaseClientFactory clientFactory) {
|
||||
List<String> cacheNames = cacheProperties.getCacheNames();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -24,7 +24,6 @@ import java.util.List;
|
|||
import com.datastax.oss.driver.api.core.DefaultConsistencyLevel;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
|
||||
|
||||
/**
|
||||
* Configuration properties for Cassandra.
|
||||
|
@ -126,17 +125,6 @@ public class CassandraProperties {
|
|||
this.sessionName = sessionName;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.data.cassandra.session-name")
|
||||
public String getClusterName() {
|
||||
return getSessionName();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setClusterName(String clusterName) {
|
||||
setSessionName(clusterName);
|
||||
}
|
||||
|
||||
public List<String> getContactPoints() {
|
||||
return this.contactPoints;
|
||||
}
|
||||
|
@ -181,61 +169,6 @@ public class CassandraProperties {
|
|||
this.compression = compression;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.data.cassandra.request.consistency")
|
||||
public DefaultConsistencyLevel getConsistencyLevel() {
|
||||
return getRequest().getConsistency();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setConsistencyLevel(DefaultConsistencyLevel consistency) {
|
||||
getRequest().setConsistency(consistency);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.data.cassandra.request.serial-consistency")
|
||||
public DefaultConsistencyLevel getSerialConsistencyLevel() {
|
||||
return getRequest().getSerialConsistency();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setSerialConsistencyLevel(DefaultConsistencyLevel serialConsistency) {
|
||||
getRequest().setSerialConsistency(serialConsistency);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.data.cassandra.request.page-size")
|
||||
public int getFetchSize() {
|
||||
return getRequest().getPageSize();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setFetchSize(int fetchSize) {
|
||||
getRequest().setPageSize(fetchSize);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.data.cassandra.connection.init-query-timeout")
|
||||
public Duration getConnectTimeout() {
|
||||
return getConnection().getInitQueryTimeout();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setConnectTimeout(Duration connectTimeout) {
|
||||
getConnection().setInitQueryTimeout(connectTimeout);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.data.cassandra.request.timeout")
|
||||
public Duration getReadTimeout() {
|
||||
return getRequest().getTimeout();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setReadTimeout(Duration readTimeout) {
|
||||
getRequest().setTimeout(readTimeout);
|
||||
}
|
||||
|
||||
public boolean isSsl() {
|
||||
return this.ssl;
|
||||
}
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.elasticsearch.rest;
|
||||
|
||||
import org.elasticsearch.client.RestClientBuilder;
|
||||
|
||||
/**
|
||||
* Callback interface that can be implemented by beans wishing to further customize the
|
||||
* {@link org.elasticsearch.client.RestClient} via a {@link RestClientBuilder} whilst
|
||||
* retaining default auto-configuration.
|
||||
*
|
||||
* @author Brian Clozel
|
||||
* @since 2.1.0
|
||||
* @deprecated as of 2.3.1 in favor of
|
||||
* {@link org.springframework.boot.autoconfigure.elasticsearch.RestClientBuilderCustomizer}
|
||||
*/
|
||||
@FunctionalInterface
|
||||
@Deprecated
|
||||
public interface RestClientBuilderCustomizer
|
||||
extends org.springframework.boot.autoconfigure.elasticsearch.RestClientBuilderCustomizer {
|
||||
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Deprecated auto-configuration for Elasticsearch client, superseded by classes in
|
||||
* {@code org.springframework.boot.autoconfigure.elasticsearch}.
|
||||
*/
|
||||
package org.springframework.boot.autoconfigure.elasticsearch.rest;
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -21,8 +21,6 @@ import java.util.List;
|
|||
import com.mongodb.client.MongoClient;
|
||||
import com.mongodb.client.MongoClients;
|
||||
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
/**
|
||||
* A factory for a blocking {@link MongoClient}.
|
||||
*
|
||||
|
@ -39,30 +37,6 @@ import org.springframework.core.env.Environment;
|
|||
*/
|
||||
public class MongoClientFactory extends MongoClientFactorySupport<MongoClient> {
|
||||
|
||||
/**
|
||||
* Construct a factory for creating a blocking {@link MongoClient}.
|
||||
* @param properties configuration properties
|
||||
* @param environment a Spring {@link Environment} containing configuration properties
|
||||
* @deprecated since 2.3.0 in favor of {@link #MongoClientFactory(List)}
|
||||
*/
|
||||
@Deprecated
|
||||
public MongoClientFactory(MongoProperties properties, Environment environment) {
|
||||
this(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a factory for creating a blocking {@link MongoClient}.
|
||||
* @param properties configuration properties
|
||||
* @param environment a Spring {@link Environment} containing configuration properties
|
||||
* @param builderCustomizers a list of configuration settings customizers
|
||||
* @deprecated since 2.4.0 in favor of {@link #MongoClientFactory(List)}
|
||||
*/
|
||||
@Deprecated
|
||||
public MongoClientFactory(MongoProperties properties, Environment environment,
|
||||
List<MongoClientSettingsBuilderCustomizer> builderCustomizers) {
|
||||
this(builderCustomizers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a factory for creating a blocking {@link MongoClient}.
|
||||
* @param builderCustomizers a list of configuration settings customizers
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -24,8 +24,6 @@ import com.mongodb.MongoClientSettings;
|
|||
import com.mongodb.MongoClientSettings.Builder;
|
||||
import com.mongodb.MongoDriverInformation;
|
||||
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
/**
|
||||
* Base class for setup that is common to MongoDB client factories.
|
||||
*
|
||||
|
@ -40,13 +38,6 @@ public abstract class MongoClientFactorySupport<T> {
|
|||
|
||||
private final BiFunction<MongoClientSettings, MongoDriverInformation, T> clientCreator;
|
||||
|
||||
@Deprecated
|
||||
protected MongoClientFactorySupport(MongoProperties properties, Environment environment,
|
||||
List<MongoClientSettingsBuilderCustomizer> builderCustomizers,
|
||||
BiFunction<MongoClientSettings, MongoDriverInformation, T> clientCreator) {
|
||||
this(builderCustomizers, clientCreator);
|
||||
}
|
||||
|
||||
protected MongoClientFactorySupport(List<MongoClientSettingsBuilderCustomizer> builderCustomizers,
|
||||
BiFunction<MongoClientSettings, MongoDriverInformation, T> clientCreator) {
|
||||
this.builderCustomizers = (builderCustomizers != null) ? builderCustomizers : Collections.emptyList();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -21,8 +21,6 @@ import java.util.List;
|
|||
import com.mongodb.reactivestreams.client.MongoClient;
|
||||
import com.mongodb.reactivestreams.client.MongoClients;
|
||||
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
/**
|
||||
* A factory for a reactive {@link MongoClient}.
|
||||
*
|
||||
|
@ -33,19 +31,6 @@ import org.springframework.core.env.Environment;
|
|||
*/
|
||||
public class ReactiveMongoClientFactory extends MongoClientFactorySupport<MongoClient> {
|
||||
|
||||
/**
|
||||
* Construct a factory for creating a {@link MongoClient}.
|
||||
* @param properties configuration properties
|
||||
* @param environment a Spring {@link Environment} containing configuration properties
|
||||
* @param builderCustomizers a list of configuration settings customizers
|
||||
* @deprecated since 2.4.0 in favor of {@link #ReactiveMongoClientFactory(List)}
|
||||
*/
|
||||
@Deprecated
|
||||
public ReactiveMongoClientFactory(MongoProperties properties, Environment environment,
|
||||
List<MongoClientSettingsBuilderCustomizer> builderCustomizers) {
|
||||
super(properties, environment, builderCustomizers, MongoClients::create);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a factory for creating a {@link MongoClient}.
|
||||
* @param builderCustomizers a list of configuration settings customizers
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,6 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.security.saml2.provider.service.registration.Saml2MessageBinding;
|
||||
|
||||
|
@ -257,17 +256,6 @@ public class Saml2RelyingPartyProperties {
|
|||
this.metadataUri = metadataUri;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(reason = "moved to 'singlesignon.url'")
|
||||
public String getSsoUrl() {
|
||||
return this.singlesignon.getUrl();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setSsoUrl(String ssoUrl) {
|
||||
this.singlesignon.setUrl(ssoUrl);
|
||||
}
|
||||
|
||||
public Singlesignon getSinglesignon() {
|
||||
return this.singlesignon;
|
||||
}
|
||||
|
|
|
@ -1,121 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.transaction.jta;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import javax.jms.Message;
|
||||
import javax.transaction.TransactionManager;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import bitronix.tm.BitronixTransactionManager;
|
||||
import bitronix.tm.TransactionManagerServices;
|
||||
import bitronix.tm.jndi.BitronixContext;
|
||||
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.jdbc.XADataSourceWrapper;
|
||||
import org.springframework.boot.jms.XAConnectionFactoryWrapper;
|
||||
import org.springframework.boot.system.ApplicationHome;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.jta.JtaTransactionManager;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* JTA Configuration for <A href="https://github.com/bitronix/btm">Bitronix</A>.
|
||||
*
|
||||
* @author Josh Long
|
||||
* @author Phillip Webb
|
||||
* @author Andy Wilkinson
|
||||
* @author Kazuki Shimizu
|
||||
* @deprecated since 2.3.0 as the Bitronix project is no longer being maintained
|
||||
*/
|
||||
@Deprecated
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableConfigurationProperties(JtaProperties.class)
|
||||
@ConditionalOnClass({ JtaTransactionManager.class, BitronixContext.class })
|
||||
@ConditionalOnMissingBean(org.springframework.transaction.TransactionManager.class)
|
||||
class BitronixJtaConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@ConfigurationProperties(prefix = "spring.jta.bitronix.properties")
|
||||
bitronix.tm.Configuration bitronixConfiguration(JtaProperties jtaProperties) {
|
||||
bitronix.tm.Configuration config = TransactionManagerServices.getConfiguration();
|
||||
if (StringUtils.hasText(jtaProperties.getTransactionManagerId())) {
|
||||
config.setServerId(jtaProperties.getTransactionManagerId());
|
||||
}
|
||||
File logBaseDir = getLogBaseDir(jtaProperties);
|
||||
config.setLogPart1Filename(new File(logBaseDir, "part1.btm").getAbsolutePath());
|
||||
config.setLogPart2Filename(new File(logBaseDir, "part2.btm").getAbsolutePath());
|
||||
config.setDisableJmx(true);
|
||||
return config;
|
||||
}
|
||||
|
||||
private File getLogBaseDir(JtaProperties jtaProperties) {
|
||||
if (StringUtils.hasLength(jtaProperties.getLogDir())) {
|
||||
return new File(jtaProperties.getLogDir());
|
||||
}
|
||||
File home = new ApplicationHome().getDir();
|
||||
return new File(home, "transaction-logs");
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(TransactionManager.class)
|
||||
BitronixTransactionManager bitronixTransactionManager(bitronix.tm.Configuration configuration) {
|
||||
// Inject configuration to force ordering
|
||||
return TransactionManagerServices.getTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(XADataSourceWrapper.class)
|
||||
org.springframework.boot.jta.bitronix.BitronixXADataSourceWrapper xaDataSourceWrapper() {
|
||||
return new org.springframework.boot.jta.bitronix.BitronixXADataSourceWrapper();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
static org.springframework.boot.jta.bitronix.BitronixDependentBeanFactoryPostProcessor bitronixDependentBeanFactoryPostProcessor() {
|
||||
return new org.springframework.boot.jta.bitronix.BitronixDependentBeanFactoryPostProcessor();
|
||||
}
|
||||
|
||||
@Bean
|
||||
JtaTransactionManager transactionManager(UserTransaction userTransaction, TransactionManager transactionManager,
|
||||
ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
|
||||
JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(userTransaction, transactionManager);
|
||||
transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize(jtaTransactionManager));
|
||||
return jtaTransactionManager;
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnClass(Message.class)
|
||||
static class BitronixJtaJmsConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(XAConnectionFactoryWrapper.class)
|
||||
org.springframework.boot.jta.bitronix.BitronixXAConnectionFactoryWrapper xaConnectionFactoryWrapper() {
|
||||
return new org.springframework.boot.jta.bitronix.BitronixXAConnectionFactoryWrapper();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -35,13 +35,12 @@ import org.springframework.context.annotation.Import;
|
|||
* @author Nishant Raut
|
||||
* @since 1.2.0
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnClass(javax.transaction.Transaction.class)
|
||||
@ConditionalOnProperty(prefix = "spring.jta", value = "enabled", matchIfMissing = true)
|
||||
@AutoConfigureBefore({ XADataSourceAutoConfiguration.class, ActiveMQAutoConfiguration.class,
|
||||
ArtemisAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
|
||||
@Import({ JndiJtaConfiguration.class, BitronixJtaConfiguration.class, AtomikosJtaConfiguration.class })
|
||||
@Import({ JndiJtaConfiguration.class, AtomikosJtaConfiguration.class })
|
||||
public class JtaAutoConfiguration {
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -101,6 +101,28 @@ public class ErrorProperties {
|
|||
return this.whitelabel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Include Stacktrace attribute options.
|
||||
*/
|
||||
public enum IncludeStacktrace {
|
||||
|
||||
/**
|
||||
* Never add stacktrace information.
|
||||
*/
|
||||
NEVER,
|
||||
|
||||
/**
|
||||
* Always add stacktrace information.
|
||||
*/
|
||||
ALWAYS,
|
||||
|
||||
/**
|
||||
* Add error attribute when the appropriate request parameter is "true".
|
||||
*/
|
||||
ON_PARAM
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Include error attributes options.
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -31,7 +31,6 @@ import java.util.Map;
|
|||
import io.undertow.UndertowOptions;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
import org.springframework.boot.convert.DurationUnit;
|
||||
import org.springframework.boot.web.server.Compression;
|
||||
|
@ -411,28 +410,6 @@ public class ServerProperties {
|
|||
*/
|
||||
private final Remoteip remoteip = new Remoteip();
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.tomcat.threads.max")
|
||||
public int getMaxThreads() {
|
||||
return getThreads().getMax();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setMaxThreads(int maxThreads) {
|
||||
getThreads().setMax(maxThreads);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.tomcat.threads.min-spare")
|
||||
public int getMinSpareThreads() {
|
||||
return getThreads().getMinSpare();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setMinSpareThreads(int minSpareThreads) {
|
||||
getThreads().setMinSpare(minSpareThreads);
|
||||
}
|
||||
|
||||
public DataSize getMaxHttpFormPostSize() {
|
||||
return this.maxHttpFormPostSize;
|
||||
}
|
||||
|
@ -465,72 +442,6 @@ public class ServerProperties {
|
|||
this.basedir = basedir;
|
||||
}
|
||||
|
||||
@DeprecatedConfigurationProperty(replacement = "server.tomcat.remoteip.internal-proxies")
|
||||
@Deprecated
|
||||
public String getInternalProxies() {
|
||||
return this.remoteip.getInternalProxies();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setInternalProxies(String internalProxies) {
|
||||
this.remoteip.setInternalProxies(internalProxies);
|
||||
}
|
||||
|
||||
@DeprecatedConfigurationProperty(replacement = "server.tomcat.remoteip.protocol-header")
|
||||
@Deprecated
|
||||
public String getProtocolHeader() {
|
||||
return this.remoteip.getProtocolHeader();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setProtocolHeader(String protocolHeader) {
|
||||
this.remoteip.setProtocolHeader(protocolHeader);
|
||||
}
|
||||
|
||||
@DeprecatedConfigurationProperty(replacement = "server.tomcat.remoteip.protocol-header-https-value")
|
||||
@Deprecated
|
||||
public String getProtocolHeaderHttpsValue() {
|
||||
return this.remoteip.getProtocolHeaderHttpsValue();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setProtocolHeaderHttpsValue(String protocolHeaderHttpsValue) {
|
||||
this.remoteip.setProtocolHeaderHttpsValue(protocolHeaderHttpsValue);
|
||||
}
|
||||
|
||||
@DeprecatedConfigurationProperty(replacement = "server.tomcat.remoteip.host-header")
|
||||
@Deprecated
|
||||
public String getHostHeader() {
|
||||
return this.remoteip.getHostHeader();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setHostHeader(String hostHeader) {
|
||||
this.remoteip.setHostHeader(hostHeader);
|
||||
}
|
||||
|
||||
@DeprecatedConfigurationProperty(replacement = "server.tomcat.remote.port-header")
|
||||
@Deprecated
|
||||
public String getPortHeader() {
|
||||
return this.remoteip.getPortHeader();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setPortHeader(String portHeader) {
|
||||
this.remoteip.setPortHeader(portHeader);
|
||||
}
|
||||
|
||||
@DeprecatedConfigurationProperty(replacement = "server.tomcat.remoteip.remote-ip-header")
|
||||
@Deprecated
|
||||
public String getRemoteIpHeader() {
|
||||
return this.remoteip.getRemoteIpHeader();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setRemoteIpHeader(String remoteIpHeader) {
|
||||
this.remoteip.setRemoteIpHeader(remoteIpHeader);
|
||||
}
|
||||
|
||||
public Boolean getRedirectContextRoot() {
|
||||
return this.redirectContextRoot;
|
||||
}
|
||||
|
@ -539,11 +450,6 @@ public class ServerProperties {
|
|||
this.redirectContextRoot = redirectContextRoot;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public Boolean getUseRelativeRedirects() {
|
||||
return this.useRelativeRedirects;
|
||||
}
|
||||
|
||||
public boolean isUseRelativeRedirects() {
|
||||
return this.useRelativeRedirects;
|
||||
}
|
||||
|
@ -552,11 +458,6 @@ public class ServerProperties {
|
|||
this.useRelativeRedirects = useRelativeRedirects;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setUseRelativeRedirects(Boolean useRelativeRedirects) {
|
||||
this.useRelativeRedirects = (useRelativeRedirects != null) ? useRelativeRedirects : false;
|
||||
}
|
||||
|
||||
public Charset getUriEncoding() {
|
||||
return this.uriEncoding;
|
||||
}
|
||||
|
@ -1093,72 +994,6 @@ public class ServerProperties {
|
|||
this.maxHttpFormPostSize = maxHttpFormPostSize;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.jetty.threads.acceptors")
|
||||
public Integer getAcceptors() {
|
||||
return getThreads().getAcceptors();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setAcceptors(Integer acceptors) {
|
||||
getThreads().setAcceptors(acceptors);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.jetty.threads.selectors")
|
||||
public Integer getSelectors() {
|
||||
return getThreads().getSelectors();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setSelectors(Integer selectors) {
|
||||
getThreads().setSelectors(selectors);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.jetty.threads.min")
|
||||
public Integer getMinThreads() {
|
||||
return getThreads().getMin();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setMinThreads(Integer minThreads) {
|
||||
getThreads().setMin(minThreads);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.jetty.threads.max")
|
||||
public Integer getMaxThreads() {
|
||||
return getThreads().getMax();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setMaxThreads(Integer maxThreads) {
|
||||
getThreads().setMax(maxThreads);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.jetty.threads.max-queue-capacity")
|
||||
public Integer getMaxQueueCapacity() {
|
||||
return getThreads().getMaxQueueCapacity();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setMaxQueueCapacity(Integer maxQueueCapacity) {
|
||||
getThreads().setMaxQueueCapacity(maxQueueCapacity);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.jetty.threads.idle-timeout")
|
||||
public Duration getThreadIdleTimeout() {
|
||||
return getThreads().getIdleTimeout();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setThreadIdleTimeout(Duration threadIdleTimeout) {
|
||||
getThreads().setIdleTimeout(threadIdleTimeout);
|
||||
}
|
||||
|
||||
public Duration getConnectionIdleTimeout() {
|
||||
return this.connectionIdleTimeout;
|
||||
}
|
||||
|
@ -1579,28 +1414,6 @@ public class ServerProperties {
|
|||
this.bufferSize = bufferSize;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.undertow.threads.io")
|
||||
public Integer getIoThreads() {
|
||||
return getThreads().getIo();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setIoThreads(Integer ioThreads) {
|
||||
getThreads().setIo(ioThreads);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "server.undertow.threads.worker")
|
||||
public Integer getWorkerThreads() {
|
||||
return getThreads().getWorker();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setWorkerThreads(Integer workerThreads) {
|
||||
getThreads().setWorker(workerThreads);
|
||||
}
|
||||
|
||||
public Boolean getDirectBuffers() {
|
||||
return this.directBuffers;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -46,18 +46,6 @@ public class WebConversionService extends DefaultFormattingConversionService {
|
|||
private static final boolean JSR_354_PRESENT = ClassUtils.isPresent("javax.money.MonetaryAmount",
|
||||
WebConversionService.class.getClassLoader());
|
||||
|
||||
/**
|
||||
* Create a new WebConversionService that configures formatters with the provided date
|
||||
* format, or register the default ones if no custom format is provided.
|
||||
* @param dateFormat the custom date format to use for date conversions
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #WebConversionService(DateTimeFormatters)}
|
||||
*/
|
||||
@Deprecated
|
||||
public WebConversionService(String dateFormat) {
|
||||
this(new DateTimeFormatters().dateFormat(dateFormat));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new WebConversionService that configures formatters with the provided
|
||||
* date, time, and date-time formats, or registers the default if no custom format is
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -17,7 +17,6 @@
|
|||
package org.springframework.boot.autoconfigure.web.reactive;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
|
@ -62,17 +61,6 @@ public class WebFluxProperties {
|
|||
return candidate;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.webflux.format.date")
|
||||
public String getDateFormat() {
|
||||
return this.format.getDate();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setDateFormat(String dateFormat) {
|
||||
this.format.setDate(dateFormat);
|
||||
}
|
||||
|
||||
public Format getFormat() {
|
||||
return this.format;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -25,7 +25,6 @@ import javax.servlet.http.HttpServletRequest;
|
|||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions;
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions.Include;
|
||||
import org.springframework.boot.web.servlet.error.ErrorAttributes;
|
||||
import org.springframework.boot.web.servlet.error.ErrorController;
|
||||
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
|
||||
|
@ -70,20 +69,6 @@ public abstract class AbstractErrorController implements ErrorController {
|
|||
return sorted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Map} of the error attributes.
|
||||
* @param request the source request
|
||||
* @param includeStackTrace if stack trace elements should be included
|
||||
* @return the error attributes
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #getErrorAttributes(HttpServletRequest, ErrorAttributeOptions)}
|
||||
*/
|
||||
@Deprecated
|
||||
protected Map<String, Object> getErrorAttributes(HttpServletRequest request, boolean includeStackTrace) {
|
||||
return getErrorAttributes(request,
|
||||
(includeStackTrace) ? ErrorAttributeOptions.of(Include.STACK_TRACE) : ErrorAttributeOptions.defaults());
|
||||
}
|
||||
|
||||
protected Map<String, Object> getErrorAttributes(HttpServletRequest request, ErrorAttributeOptions options) {
|
||||
WebRequest webRequest = new ServletWebRequest(request);
|
||||
return this.errorAttributes.getErrorAttributes(webRequest, options);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -81,12 +81,6 @@ public class BasicErrorController extends AbstractErrorController {
|
|||
this.errorProperties = errorProperties;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public String getErrorPath() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@RequestMapping(produces = MediaType.TEXT_HTML_VALUE)
|
||||
public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {
|
||||
HttpStatus status = getStatus(request);
|
||||
|
|
|
@ -1041,119 +1041,6 @@
|
|||
"name": "spring.jpa.open-in-view",
|
||||
"defaultValue": true
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.allow-multiple-lrc",
|
||||
"description": "Whether to allow multiple LRC resources to be enlisted into the same transaction.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.asynchronous2-pc",
|
||||
"description": "Whether to enable asynchronously execution of two phase commit.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.background-recovery-interval",
|
||||
"description": "Interval in minutes at which to run the recovery process in the background.",
|
||||
"defaultValue": 1,
|
||||
"deprecation": {
|
||||
"replacement": "spring.jta.bitronix.properties.background-recovery-interval-seconds"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.background-recovery-interval-seconds",
|
||||
"description": "Interval in seconds at which to run the recovery process in the background.",
|
||||
"defaultValue": 60
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.current-node-only-recovery",
|
||||
"description": "Whether to recover only the current node. Should be enabled if you run multiple instances of the transaction manager on the same JMS and JDBC resources.",
|
||||
"defaultValue": true
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.debug-zero-resource-transaction",
|
||||
"description": "Whether to log the creation and commit call stacks of transactions executed without a single enlisted resource.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.default-transaction-timeout",
|
||||
"description": "Default transaction timeout, in seconds.",
|
||||
"defaultValue": 60
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.disable-jmx",
|
||||
"description": "Whether to enable JMX support.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.exception-analyzer",
|
||||
"description": "Set the fully qualified name of the exception analyzer implementation to use."
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.filter-log-status",
|
||||
"description": "Whether to enable filtering of logs so that only mandatory logs are written.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.force-batching-enabled",
|
||||
"description": "Whether disk forces are batched.",
|
||||
"defaultValue": true
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.forced-write-enabled",
|
||||
"description": "Whether logs are forced to disk.",
|
||||
"defaultValue": true
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.graceful-shutdown-interval",
|
||||
"description": "Maximum amount of seconds the TM waits for transactions to get done before aborting them at shutdown time.",
|
||||
"defaultValue": 60
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.jndi-transaction-synchronization-registry-name",
|
||||
"description": "JNDI name of the TransactionSynchronizationRegistry."
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.jndi-user-transaction-name",
|
||||
"description": "JNDI name of the UserTransaction."
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.journal",
|
||||
"description": "Name of the journal. Can be 'disk', 'null', or a class name.",
|
||||
"defaultValue": "disk"
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.log-part1-filename",
|
||||
"description": "Name of the first fragment of the journal.",
|
||||
"defaultValue": "btm1.tlog"
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.log-part2-filename",
|
||||
"description": "Name of the second fragment of the journal.",
|
||||
"defaultValue": "btm2.tlog"
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.max-log-size-in-mb",
|
||||
"description": "Maximum size in megabytes of the journal fragments.",
|
||||
"defaultValue": 2
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.resource-configuration-filename",
|
||||
"description": "ResourceLoader configuration file name."
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.server-id",
|
||||
"description": "ASCII ID that must uniquely identify this TM instance. Defaults to the machine's IP address."
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.skip-corrupted-logs",
|
||||
"description": "Skip corrupted transactions log entries. Use only at last resort when all you have to recover is a pair of corrupted files.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.properties.warn-about-zero-resource-transaction",
|
||||
"description": "Whether to log a warning for transactions executed without a single enlisted resource.",
|
||||
"defaultValue": true
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.enabled",
|
||||
"type": "java.lang.Boolean",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -107,16 +107,6 @@ class ElasticsearchRestClientAutoConfigurationTests {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void configureWhenDeprecatedBuilderCustomizerShouldApply() {
|
||||
this.contextRunner.withUserConfiguration(DeprecatedBuilderCustomizerConfiguration.class).run((context) -> {
|
||||
assertThat(context).hasSingleBean(RestHighLevelClient.class);
|
||||
RestHighLevelClient restClient = context.getBean(RestHighLevelClient.class);
|
||||
assertThat(restClient.getLowLevelClient()).hasFieldOrPropertyWithValue("pathPrefix", "/deprecated");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void configureWithNoTimeoutsApplyDefaults() {
|
||||
this.contextRunner.run((context) -> {
|
||||
|
@ -296,17 +286,6 @@ class ElasticsearchRestClientAutoConfigurationTests {
|
|||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@Deprecated
|
||||
static class DeprecatedBuilderCustomizerConfiguration {
|
||||
|
||||
@Bean
|
||||
org.springframework.boot.autoconfigure.elasticsearch.rest.RestClientBuilderCustomizer myCustomizer() {
|
||||
return (builder) -> builder.setPathPrefix("/deprecated");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class CustomRestHighLevelClientConfiguration {
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -39,16 +39,6 @@ class Saml2RelyingPartyPropertiesTests {
|
|||
|
||||
private final Saml2RelyingPartyProperties properties = new Saml2RelyingPartyProperties();
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void customizeSsoUrlDeprecated() {
|
||||
bind("spring.security.saml2.relyingparty.registration.simplesamlphp.identity-provider.sso-url",
|
||||
"https://simplesaml-for-spring-saml/SSOService.php");
|
||||
assertThat(
|
||||
this.properties.getRegistration().get("simplesamlphp").getIdentityprovider().getSinglesignon().getUrl())
|
||||
.isEqualTo("https://simplesaml-for-spring-saml/SSOService.php");
|
||||
}
|
||||
|
||||
@Test
|
||||
void customizeSsoUrl() {
|
||||
bind("spring.security.saml2.relyingparty.registration.simplesamlphp.identity-provider.single-sign-on.url",
|
||||
|
|
|
@ -18,8 +18,6 @@ package org.springframework.boot.autoconfigure.transaction.jta;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import javax.jms.ConnectionFactory;
|
||||
|
@ -29,7 +27,6 @@ import javax.jms.XAConnectionFactory;
|
|||
import javax.jms.XASession;
|
||||
import javax.sql.DataSource;
|
||||
import javax.sql.XADataSource;
|
||||
import javax.transaction.TransactionManager;
|
||||
import javax.transaction.UserTransaction;
|
||||
import javax.transaction.xa.XAResource;
|
||||
|
||||
|
@ -67,7 +64,6 @@ import static org.mockito.Mockito.mock;
|
|||
* @author Kazuki Shimizu
|
||||
* @author Nishant Raut
|
||||
*/
|
||||
// @SuppressWarnings("deprecation")
|
||||
class JtaAutoConfigurationTests {
|
||||
|
||||
private AnnotationConfigApplicationContext context;
|
||||
|
@ -111,37 +107,6 @@ class JtaAutoConfigurationTests {
|
|||
this.context.getBean(JtaTransactionManager.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void bitronixSanityCheck() {
|
||||
this.context = new AnnotationConfigApplicationContext(JtaProperties.class, BitronixJtaConfiguration.class);
|
||||
this.context.getBean(bitronix.tm.Configuration.class);
|
||||
this.context.getBean(TransactionManager.class);
|
||||
this.context.getBean(XADataSourceWrapper.class);
|
||||
this.context.getBean(XAConnectionFactoryWrapper.class);
|
||||
this.context.getBean(org.springframework.boot.jta.bitronix.BitronixDependentBeanFactoryPostProcessor.class);
|
||||
this.context.getBean(JtaTransactionManager.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void defaultBitronixServerId() throws UnknownHostException {
|
||||
this.context = new AnnotationConfigApplicationContext(BitronixJtaConfiguration.class);
|
||||
String serverId = this.context.getBean(bitronix.tm.Configuration.class).getServerId();
|
||||
assertThat(serverId).isEqualTo(InetAddress.getLocalHost().getHostAddress());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void customBitronixServerId() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues.of("spring.jta.transactionManagerId:custom").applyTo(this.context);
|
||||
this.context.register(BitronixJtaConfiguration.class);
|
||||
this.context.refresh();
|
||||
String serverId = this.context.getBean(bitronix.tm.Configuration.class).getServerId();
|
||||
assertThat(serverId).isEqualTo("custom");
|
||||
}
|
||||
|
||||
@Test
|
||||
void defaultAtomikosTransactionManagerName(@TempDir Path dir) throws IOException {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
|
@ -166,20 +131,6 @@ class JtaAutoConfigurationTests {
|
|||
assertThat(connectionFactory.getMaxPoolSize()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void bitronixConnectionFactoryPoolConfiguration() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues.of("spring.jta.bitronix.connectionfactory.minPoolSize:5",
|
||||
"spring.jta.bitronix.connectionfactory.maxPoolSize:10").applyTo(this.context);
|
||||
this.context.register(BitronixJtaConfiguration.class, PoolConfiguration.class);
|
||||
this.context.refresh();
|
||||
org.springframework.boot.jta.bitronix.PoolingConnectionFactoryBean connectionFactory = this.context
|
||||
.getBean(org.springframework.boot.jta.bitronix.PoolingConnectionFactoryBean.class);
|
||||
assertThat(connectionFactory.getMinPoolSize()).isEqualTo(5);
|
||||
assertThat(connectionFactory.getMaxPoolSize()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void atomikosDataSourcePoolConfiguration() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
|
@ -193,21 +144,6 @@ class JtaAutoConfigurationTests {
|
|||
assertThat(dataSource.getMaxPoolSize()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void bitronixDataSourcePoolConfiguration() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues
|
||||
.of("spring.jta.bitronix.datasource.minPoolSize:5", "spring.jta.bitronix.datasource.maxPoolSize:10")
|
||||
.applyTo(this.context);
|
||||
this.context.register(BitronixJtaConfiguration.class, PoolConfiguration.class);
|
||||
this.context.refresh();
|
||||
org.springframework.boot.jta.bitronix.PoolingDataSourceBean dataSource = this.context
|
||||
.getBean(org.springframework.boot.jta.bitronix.PoolingDataSourceBean.class);
|
||||
assertThat(dataSource.getMinPoolSize()).isEqualTo(5);
|
||||
assertThat(dataSource.getMaxPoolSize()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void atomikosCustomizeJtaTransactionManagerUsingProperties() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
|
@ -221,20 +157,6 @@ class JtaAutoConfigurationTests {
|
|||
assertThat(transactionManager.isRollbackOnCommitFailure()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void bitronixCustomizeJtaTransactionManagerUsingProperties() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues
|
||||
.of("spring.transaction.default-timeout:30", "spring.transaction.rollback-on-commit-failure:true")
|
||||
.applyTo(this.context);
|
||||
this.context.register(BitronixJtaConfiguration.class, TransactionAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
JtaTransactionManager transactionManager = this.context.getBean(JtaTransactionManager.class);
|
||||
assertThat(transactionManager.getDefaultTimeout()).isEqualTo(30);
|
||||
assertThat(transactionManager.isRollbackOnCommitFailure()).isTrue();
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class CustomTransactionManagerConfig {
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -216,105 +216,48 @@ class ServerPropertiesTests {
|
|||
assertThat(this.properties.getTomcat().getThreads().getMax()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeTomcatMaxThreadsDeprecated() {
|
||||
bind("server.tomcat.maxThreads", "10");
|
||||
assertThat(this.properties.getTomcat().getThreads().getMax()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeTomcatMinSpareThreads() {
|
||||
bind("server.tomcat.threads.min-spare", "10");
|
||||
assertThat(this.properties.getTomcat().getThreads().getMinSpare()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeTomcatMinSpareThreadsDeprecated() {
|
||||
bind("server.tomcat.min-spare-threads", "10");
|
||||
assertThat(this.properties.getTomcat().getThreads().getMinSpare()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeJettyAcceptors() {
|
||||
bind("server.jetty.threads.acceptors", "10");
|
||||
assertThat(this.properties.getJetty().getThreads().getAcceptors()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeJettyAcceptorsDeprecated() {
|
||||
bind("server.jetty.acceptors", "10");
|
||||
assertThat(this.properties.getJetty().getThreads().getAcceptors()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeJettySelectors() {
|
||||
bind("server.jetty.threads.selectors", "10");
|
||||
assertThat(this.properties.getJetty().getThreads().getSelectors()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeJettySelectorsDeprecated() {
|
||||
bind("server.jetty.selectors", "10");
|
||||
assertThat(this.properties.getJetty().getSelectors()).isEqualTo(10);
|
||||
assertThat(this.properties.getJetty().getThreads().getSelectors()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeJettyMaxThreads() {
|
||||
bind("server.jetty.threads.max", "10");
|
||||
assertThat(this.properties.getJetty().getThreads().getMax()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeJettyMaxThreadsDeprecated() {
|
||||
bind("server.jetty.maxThreads", "10");
|
||||
assertThat(this.properties.getJetty().getThreads().getMax()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeJettyMinThreads() {
|
||||
bind("server.jetty.threads.min", "10");
|
||||
assertThat(this.properties.getJetty().getThreads().getMin()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeJettyMinThreadsDeprecated() {
|
||||
bind("server.jetty.minThreads", "10");
|
||||
assertThat(this.properties.getJetty().getThreads().getMin()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeJettyIdleTimeout() {
|
||||
bind("server.jetty.threads.idle-timeout", "10s");
|
||||
assertThat(this.properties.getJetty().getThreads().getIdleTimeout()).isEqualTo(Duration.ofSeconds(10));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeJettyIdleTimeoutDeprecated() {
|
||||
bind("server.jetty.thread-idle-timeout", "10s");
|
||||
assertThat(this.properties.getJetty().getThreads().getIdleTimeout()).hasSeconds(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeJettyMaxQueueCapacity() {
|
||||
bind("server.jetty.threads.max-queue-capacity", "5150");
|
||||
assertThat(this.properties.getJetty().getThreads().getMaxQueueCapacity()).isEqualTo(5150);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeJettyMaxQueueCapacityDeprecated() {
|
||||
bind("server.jetty.max-queue-capacity", "5150");
|
||||
assertThat(this.properties.getJetty().getThreads().getMaxQueueCapacity()).isEqualTo(5150);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeUndertowServerOption() {
|
||||
bind("server.undertow.options.server.ALWAYS_SET_KEEP_ALIVE", "true");
|
||||
|
@ -335,26 +278,12 @@ class ServerPropertiesTests {
|
|||
assertThat(this.properties.getUndertow().getThreads().getIo()).isEqualTo(4);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeUndertowIoThreadsDeprecated() {
|
||||
bind("server.undertow.ioThreads", "4");
|
||||
assertThat(this.properties.getUndertow().getThreads().getIo()).isEqualTo(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeUndertowWorkerThreads() {
|
||||
bind("server.undertow.threads.worker", "10");
|
||||
assertThat(this.properties.getUndertow().getThreads().getWorker()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Test
|
||||
void testCustomizeUndertowWorkerThreadsDeprecated() {
|
||||
bind("server.undertow.workerThreads", "10");
|
||||
assertThat(this.properties.getUndertow().getThreads().getWorker()).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomizeJettyAccessLog() {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -164,7 +164,7 @@ class JettyWebServerFactoryCustomizerTests {
|
|||
|
||||
@Test
|
||||
void threadPoolMaxThreadsCanBeCustomized() {
|
||||
bind("server.jetty.max-threads=100");
|
||||
bind("server.jetty.threads.max=100");
|
||||
JettyWebServer server = customizeAndGetServer();
|
||||
QueuedThreadPool threadPool = (QueuedThreadPool) server.getServer().getThreadPool();
|
||||
assertThat(threadPool.getMaxThreads()).isEqualTo(100);
|
||||
|
@ -172,7 +172,7 @@ class JettyWebServerFactoryCustomizerTests {
|
|||
|
||||
@Test
|
||||
void threadPoolMinThreadsCanBeCustomized() {
|
||||
bind("server.jetty.min-threads=100");
|
||||
bind("server.jetty.threads.min=100");
|
||||
JettyWebServer server = customizeAndGetServer();
|
||||
QueuedThreadPool threadPool = (QueuedThreadPool) server.getServer().getThreadPool();
|
||||
assertThat(threadPool.getMinThreads()).isEqualTo(100);
|
||||
|
@ -198,8 +198,8 @@ class JettyWebServerFactoryCustomizerTests {
|
|||
|
||||
@Test
|
||||
void threadPoolWithMaxQueueCapacityEqualToZeroCustomizesThreadPool() {
|
||||
bind("server.jetty.threads.max-queue-capacity=0", "server.jetty.min-threads=100",
|
||||
"server.jetty.max-threads=100", "server.jetty.threads.idle-timeout=6s");
|
||||
bind("server.jetty.threads.max-queue-capacity=0", "server.jetty.threads.min=100",
|
||||
"server.jetty.threads.max=100", "server.jetty.threads.idle-timeout=6s");
|
||||
JettyWebServer server = customizeAndGetServer();
|
||||
QueuedThreadPool threadPool = (QueuedThreadPool) server.getServer().getThreadPool();
|
||||
assertThat(threadPool.getMinThreads()).isEqualTo(100);
|
||||
|
@ -220,8 +220,8 @@ class JettyWebServerFactoryCustomizerTests {
|
|||
|
||||
@Test
|
||||
void threadPoolWithMaxQueueCapacityPositiveCustomizesThreadPool() {
|
||||
bind("server.jetty.threads.max-queue-capacity=1234", "server.jetty.min-threads=10",
|
||||
"server.jetty.max-threads=150", "server.jetty.threads.idle-timeout=3s");
|
||||
bind("server.jetty.threads.max-queue-capacity=1234", "server.jetty.threads.min=10",
|
||||
"server.jetty.threads.max=150", "server.jetty.threads.idle-timeout=3s");
|
||||
JettyWebServer server = customizeAndGetServer();
|
||||
QueuedThreadPool threadPool = (QueuedThreadPool) server.getServer().getThreadPool();
|
||||
assertThat(threadPool.getMinThreads()).isEqualTo(10);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -186,26 +186,6 @@ class TomcatWebServerFactoryCustomizerTests {
|
|||
assertThat(remoteIpValve.getInternalProxies()).isEqualTo("192.168.0.1");
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void customRemoteIpValveWithDeprecatedProperties() {
|
||||
bind("server.tomcat.remote-ip-header=x-my-remote-ip-header",
|
||||
"server.tomcat.protocol-header=x-my-protocol-header", "server.tomcat.internal-proxies=192.168.0.1",
|
||||
"server.tomcat.host-header=x-my-forward-host", "server.tomcat.port-header=x-my-forward-port",
|
||||
"server.tomcat.protocol-header-https-value=On");
|
||||
TomcatServletWebServerFactory factory = customizeAndGetFactory();
|
||||
assertThat(factory.getEngineValves()).hasSize(1);
|
||||
Valve valve = factory.getEngineValves().iterator().next();
|
||||
assertThat(valve).isInstanceOf(RemoteIpValve.class);
|
||||
RemoteIpValve remoteIpValve = (RemoteIpValve) valve;
|
||||
assertThat(remoteIpValve.getProtocolHeader()).isEqualTo("x-my-protocol-header");
|
||||
assertThat(remoteIpValve.getProtocolHeaderHttpsValue()).isEqualTo("On");
|
||||
assertThat(remoteIpValve.getRemoteIpHeader()).isEqualTo("x-my-remote-ip-header");
|
||||
assertThat(remoteIpValve.getHostHeader()).isEqualTo("x-my-forward-host");
|
||||
assertThat(remoteIpValve.getPortHeader()).isEqualTo("x-my-forward-port");
|
||||
assertThat(remoteIpValve.getInternalProxies()).isEqualTo("192.168.0.1");
|
||||
}
|
||||
|
||||
@Test
|
||||
void customStaticResourceAllowCaching() {
|
||||
bind("server.tomcat.resource.allow-caching=false");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -212,15 +212,6 @@ class WebFluxAutoConfigurationTests {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void customDateFormatWithDeprecatedProperty() {
|
||||
this.contextRunner.withPropertyValues("spring.webflux.date-format:dd*MM*yyyy").run((context) -> {
|
||||
FormattingConversionService conversionService = context.getBean(FormattingConversionService.class);
|
||||
Date date = Date.from(ZonedDateTime.of(1988, 6, 25, 20, 30, 0, 0, ZoneId.systemDefault()).toInstant());
|
||||
assertThat(conversionService.convert(date, String.class)).isEqualTo("25*06*1988");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void customDateFormat() {
|
||||
this.contextRunner.withPropertyValues("spring.webflux.format.date:dd*MM*yyyy").run((context) -> {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -36,6 +36,7 @@ import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplic
|
|||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||
import org.springframework.boot.test.system.CapturedOutput;
|
||||
import org.springframework.boot.test.system.OutputCaptureExtension;
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions;
|
||||
import org.springframework.boot.web.reactive.error.DefaultErrorAttributes;
|
||||
import org.springframework.boot.web.reactive.error.ErrorAttributes;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
@ -337,7 +338,7 @@ class DefaultErrorWebExceptionHandlerIntegrationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void defaultErrorAttributesSubclassUsingDeprecatedApiAndDelegation() {
|
||||
void defaultErrorAttributesSubclassUsingDelegation() {
|
||||
this.contextRunner.withUserConfiguration(CustomErrorAttributesWithDelegation.class).run((context) -> {
|
||||
WebTestClient client = getWebClient(context);
|
||||
client.get().uri("/badRequest").exchange().expectStatus().isBadRequest().expectBody().jsonPath("status")
|
||||
|
@ -347,7 +348,7 @@ class DefaultErrorWebExceptionHandlerIntegrationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void defaultErrorAttributesSubclassUsingDeprecatedApiWithoutDelegation() {
|
||||
void defaultErrorAttributesSubclassWithoutDelegation() {
|
||||
this.contextRunner.withUserConfiguration(CustomErrorAttributesWithoutDelegation.class).run((context) -> {
|
||||
WebTestClient client = getWebClient(context);
|
||||
client.get().uri("/badRequest").exchange().expectStatus().isBadRequest().expectBody().jsonPath("status")
|
||||
|
@ -425,9 +426,8 @@ class DefaultErrorWebExceptionHandlerIntegrationTests {
|
|||
ErrorAttributes errorAttributes() {
|
||||
return new DefaultErrorAttributes() {
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public Map<String, Object> getErrorAttributes(ServerRequest request, boolean includeStackTrace) {
|
||||
Map<String, Object> errorAttributes = super.getErrorAttributes(request, includeStackTrace);
|
||||
public Map<String, Object> getErrorAttributes(ServerRequest request, ErrorAttributeOptions options) {
|
||||
Map<String, Object> errorAttributes = super.getErrorAttributes(request, options);
|
||||
errorAttributes.put("error", "custom error");
|
||||
errorAttributes.put("newAttribute", "value");
|
||||
errorAttributes.remove("path");
|
||||
|
@ -446,8 +446,7 @@ class DefaultErrorWebExceptionHandlerIntegrationTests {
|
|||
ErrorAttributes errorAttributes() {
|
||||
return new DefaultErrorAttributes() {
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public Map<String, Object> getErrorAttributes(ServerRequest request, boolean includeStackTrace) {
|
||||
public Map<String, Object> getErrorAttributes(ServerRequest request, ErrorAttributeOptions options) {
|
||||
Map<String, Object> errorAttributes = new HashMap<>();
|
||||
errorAttributes.put("status", 400);
|
||||
errorAttributes.put("error", "custom error");
|
||||
|
|
|
@ -128,13 +128,6 @@ bom {
|
|||
]
|
||||
}
|
||||
}
|
||||
library("Bitronix", "2.1.4") {
|
||||
group("org.codehaus.btm") {
|
||||
modules = [
|
||||
"btm"
|
||||
]
|
||||
}
|
||||
}
|
||||
library("Build Helper Maven Plugin", "3.2.0") {
|
||||
group("org.codehaus.mojo") {
|
||||
plugins = [
|
||||
|
@ -1421,7 +1414,6 @@ bom {
|
|||
"spring-boot-starter-jooq",
|
||||
"spring-boot-starter-json",
|
||||
"spring-boot-starter-jta-atomikos",
|
||||
"spring-boot-starter-jta-bitronix",
|
||||
"spring-boot-starter-log4j2",
|
||||
"spring-boot-starter-logging",
|
||||
"spring-boot-starter-mail",
|
||||
|
|
|
@ -6472,7 +6472,6 @@ When a `jndi-name` is set, it takes precedence over all other Session-related se
|
|||
[[boot-features-jta]]
|
||||
== Distributed Transactions with JTA
|
||||
Spring Boot supports distributed JTA transactions across multiple XA resources by using an https://www.atomikos.com/[Atomikos] embedded transaction manager.
|
||||
Deprecated support for using a https://github.com/bitronix/btm[Bitronix] embedded transaction manager is also provided but it will be removed in a future release.
|
||||
JTA transactions are also supported when deploying to a suitable Java EE Application Server.
|
||||
|
||||
When a JTA environment is detected, Spring's `JtaTransactionManager` is used to manage transactions.
|
||||
|
@ -6499,24 +6498,6 @@ To ensure uniqueness in production, you should configure the configprop:spring.j
|
|||
|
||||
|
||||
|
||||
[[boot-features-jta-bitronix]]
|
||||
=== Using a Bitronix Transaction Manager
|
||||
NOTE: As of Spring Boot 2.3, support for Bitronix has been deprecated and will be removed in a future release.
|
||||
|
||||
You can use the `spring-boot-starter-jta-bitronix` starter to add the appropriate Bitronix dependencies to your project.
|
||||
As with Atomikos, Spring Boot automatically configures Bitronix and post-processes your beans to ensure that startup and shutdown ordering is correct.
|
||||
|
||||
By default, Bitronix transaction log files (`part1.btm` and `part2.btm`) are written to a `transaction-logs` directory in your application home directory.
|
||||
You can customize the location of this directory by setting the configprop:spring.jta.log-dir[] property.
|
||||
Properties starting with `spring.jta.bitronix.properties` are also bound to the `bitronix.tm.Configuration` bean, allowing for complete customization.
|
||||
See the https://github.com/bitronix/btm/wiki/Transaction-manager-configuration[Bitronix documentation] for details.
|
||||
|
||||
NOTE: To ensure that multiple transaction managers can safely coordinate the same resource managers, each Bitronix instance must be configured with a unique ID.
|
||||
By default, this ID is the IP address of the machine on which Bitronix is running.
|
||||
To ensure uniqueness in production, you should configure the configprop:spring.jta.transaction-manager-id[] property with a different value for each instance of your application.
|
||||
|
||||
|
||||
|
||||
[[boot-features-jta-javaee]]
|
||||
=== Using a Java EE Managed Transaction Manager
|
||||
If you package your Spring Boot application as a `war` or `ear` file and deploy it to a Java EE application server, you can use your application server's built-in transaction manager.
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
plugins {
|
||||
id "org.springframework.boot.starter"
|
||||
}
|
||||
|
||||
description = "Starter for JTA transactions using Bitronix. Deprecated since 2.3.0"
|
||||
|
||||
dependencies {
|
||||
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
|
||||
api("jakarta.jms:jakarta.jms-api")
|
||||
api("jakarta.transaction:jakarta.transaction-api")
|
||||
api("org.codehaus.btm:btm") {
|
||||
exclude group: "javax.transaction", module: "jta"
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -128,26 +128,4 @@ public interface BootArchive extends Task {
|
|||
*/
|
||||
void setClasspath(FileCollection classpath);
|
||||
|
||||
/**
|
||||
* Returns {@code true} if the Devtools jar should be excluded, otherwise
|
||||
* {@code false}.
|
||||
* @return {@code true} if the Devtools jar should be excluded, or {@code false} if
|
||||
* not
|
||||
* @deprecated since 2.3.0 in favour of configuring a classpath that does not include
|
||||
* development-only dependencies
|
||||
*/
|
||||
@Input
|
||||
@Deprecated
|
||||
boolean isExcludeDevtools();
|
||||
|
||||
/**
|
||||
* Sets whether or not the Devtools jar should be excluded.
|
||||
* @param excludeDevtools {@code true} if the Devtools jar should be excluded, or
|
||||
* {@code false} if not
|
||||
* @deprecated since 2.3.0 in favour of configuring a classpath that does not include
|
||||
* development-only dependencies
|
||||
*/
|
||||
@Deprecated
|
||||
void setExcludeDevtools(boolean excludeDevtools);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -76,15 +76,12 @@ class BootArchiveSupport {
|
|||
|
||||
private LaunchScriptConfiguration launchScript;
|
||||
|
||||
private boolean excludeDevtools = false;
|
||||
|
||||
BootArchiveSupport(String loaderMainClass, Spec<FileCopyDetails> librarySpec,
|
||||
Function<FileCopyDetails, ZipCompression> compressionResolver) {
|
||||
this.loaderMainClass = loaderMainClass;
|
||||
this.librarySpec = librarySpec;
|
||||
this.compressionResolver = compressionResolver;
|
||||
this.requiresUnpack.include(Specs.satisfyNone());
|
||||
configureExclusions();
|
||||
}
|
||||
|
||||
void configureManifest(Manifest manifest, String mainClass, String classes, String lib, String classPathIndex,
|
||||
|
@ -149,15 +146,6 @@ class BootArchiveSupport {
|
|||
this.requiresUnpack.include(spec);
|
||||
}
|
||||
|
||||
boolean isExcludeDevtools() {
|
||||
return this.excludeDevtools;
|
||||
}
|
||||
|
||||
void setExcludeDevtools(boolean excludeDevtools) {
|
||||
this.excludeDevtools = excludeDevtools;
|
||||
configureExclusions();
|
||||
}
|
||||
|
||||
void excludeNonZipLibraryFiles(FileCopyDetails details) {
|
||||
if (this.librarySpec.isSatisfiedBy(details)) {
|
||||
excludeNonZipFiles(details);
|
||||
|
@ -190,14 +178,6 @@ class BootArchiveSupport {
|
|||
return true;
|
||||
}
|
||||
|
||||
private void configureExclusions() {
|
||||
Set<String> excludes = new HashSet<>();
|
||||
if (this.excludeDevtools) {
|
||||
excludes.add("**/spring-boot-devtools-*.jar");
|
||||
}
|
||||
this.exclusions.setExcludes(excludes);
|
||||
}
|
||||
|
||||
void moveModuleInfoToRoot(CopySpec spec) {
|
||||
spec.filesMatching("module-info.class", BootArchiveSupport::moveToRoot);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -22,8 +22,6 @@ import java.util.concurrent.Callable;
|
|||
import java.util.function.Function;
|
||||
|
||||
import org.gradle.api.Action;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.artifacts.ResolvableDependencies;
|
||||
import org.gradle.api.file.CopySpec;
|
||||
import org.gradle.api.file.FileCollection;
|
||||
|
@ -128,18 +126,6 @@ public class BootJar extends Jar implements BootArchive {
|
|||
return this.support.createCopyAction(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link Configuration Configurations} of the project associated with
|
||||
* this task.
|
||||
* @return the configurations
|
||||
* @deprecated since 2.3.5 in favor of {@link Project#getConfigurations}
|
||||
*/
|
||||
@Internal
|
||||
@Deprecated
|
||||
protected Iterable<Configuration> getConfigurations() {
|
||||
return getProject().getConfigurations();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Property<String> getMainClass() {
|
||||
return this.mainClass;
|
||||
|
@ -232,18 +218,6 @@ public class BootJar extends Jar implements BootArchive {
|
|||
this.classpath = getProject().files(classpath);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public boolean isExcludeDevtools() {
|
||||
return this.support.isExcludeDevtools();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void setExcludeDevtools(boolean excludeDevtools) {
|
||||
this.support.setExcludeDevtools(excludeDevtools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@code CopySpec} that can be used to add content to the {@code BOOT-INF}
|
||||
* directory of the jar.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -169,18 +169,6 @@ public class BootWar extends War implements BootArchive {
|
|||
this.providedClasspath = getProject().files(classpath);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public boolean isExcludeDevtools() {
|
||||
return this.support.isExcludeDevtools();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void setExcludeDevtools(boolean excludeDevtools) {
|
||||
this.support.setExcludeDevtools(excludeDevtools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the {@link ZipCompression} that should be used when adding the file
|
||||
* represented by the given {@code details} to the jar. By default, any
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -369,19 +369,6 @@ abstract class AbstractBootArchiveTests<T extends Jar & BootArchive> {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void devtoolsJarCanBeIncluded() throws IOException {
|
||||
this.task.getMainClass().set("com.example.Main");
|
||||
this.task.classpath(jarFile("spring-boot-devtools-0.1.2.jar"));
|
||||
this.task.setExcludeDevtools(false);
|
||||
executeTask();
|
||||
assertThat(this.task.getArchiveFile().get().getAsFile()).exists();
|
||||
try (JarFile jarFile = new JarFile(this.task.getArchiveFile().get().getAsFile())) {
|
||||
assertThat(jarFile.getEntry(this.libPath + "spring-boot-devtools-0.1.2.jar")).isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void allEntriesUseUnixPlatformAndUtf8NameEncoding() throws IOException {
|
||||
this.task.getMainClass().set("com.example.Main");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -80,18 +80,6 @@ class BootWarTests extends AbstractBootArchiveTests<BootWar> {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void devtoolsJarCanBeIncludedWhenItsOnTheProvidedClasspath() throws IOException {
|
||||
getTask().getMainClass().set("com.example.Main");
|
||||
getTask().providedClasspath(jarFile("spring-boot-devtools-0.1.2.jar"));
|
||||
getTask().setExcludeDevtools(false);
|
||||
executeTask();
|
||||
try (JarFile jarFile = new JarFile(getTask().getArchiveFile().get().getAsFile())) {
|
||||
assertThat(jarFile.getEntry("WEB-INF/lib-provided/spring-boot-devtools-0.1.2.jar")).isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void webappResourcesInDirectoriesThatOverlapWithLoaderCanBePackaged() throws IOException {
|
||||
File webappDirectory = new File(this.temp, "src/main/webapp");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -42,20 +42,7 @@ public interface Layout {
|
|||
* @return the location of the library relative to the root of the archive (should end
|
||||
* with '/') or {@code null} if the library should not be included.
|
||||
*/
|
||||
default String getLibraryLocation(String libraryName, LibraryScope scope) {
|
||||
return getLibraryDestination(libraryName, scope);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the destination path for a given library.
|
||||
* @param libraryName the name of the library (excluding any path)
|
||||
* @param scope the scope of the library
|
||||
* @return the destination relative to the root of the archive (should end with '/')
|
||||
* or {@code null} if the library should not be included.
|
||||
* @deprecated since 2.3.0 in favor of {@link #getLibraryLocation}
|
||||
*/
|
||||
@Deprecated
|
||||
String getLibraryDestination(String libraryName, LibraryScope scope);
|
||||
String getLibraryLocation(String libraryName, LibraryScope scope);
|
||||
|
||||
/**
|
||||
* Returns the location of classes within the archive.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -73,12 +73,6 @@ public final class Layouts {
|
|||
return "BOOT-INF/lib/";
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
public String getLibraryDestination(String libraryName, LibraryScope scope) {
|
||||
return "BOOT-INF/lib/";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClassesLocation() {
|
||||
return "";
|
||||
|
@ -161,12 +155,6 @@ public final class Layouts {
|
|||
return SCOPE_LOCATION.get(scope);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
public String getLibraryDestination(String libraryName, LibraryScope scope) {
|
||||
return SCOPE_LOCATION.get(scope);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClassesLocation() {
|
||||
return "WEB-INF/classes/";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -175,16 +175,6 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo {
|
|||
@Parameter(property = "spring-boot.run.main-class")
|
||||
private String mainClass;
|
||||
|
||||
/**
|
||||
* Additional directories besides the classes directory that should be added to the
|
||||
* classpath.
|
||||
* @since 1.0.0
|
||||
* @deprecated since 2.3.0 in favor of {@code directories}
|
||||
*/
|
||||
@Deprecated
|
||||
@Parameter(property = "spring-boot.run.folders")
|
||||
private String[] folders;
|
||||
|
||||
/**
|
||||
* Additional directories besides the classes directory that should be added to the
|
||||
* classpath.
|
||||
|
@ -462,11 +452,6 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo {
|
|||
}
|
||||
|
||||
private void addUserDefinedDirectories(List<URL> urls) throws MalformedURLException {
|
||||
if (this.folders != null) {
|
||||
for (String folder : this.folders) {
|
||||
urls.add(new File(folder).toURI().toURL());
|
||||
}
|
||||
}
|
||||
if (this.directories != null) {
|
||||
for (String directory : this.directories) {
|
||||
urls.add(new File(directory).toURI().toURL());
|
||||
|
|
|
@ -44,7 +44,6 @@ dependencies {
|
|||
optional("org.apache.tomcat.embed:tomcat-embed-jasper")
|
||||
optional("org.apache.tomcat:tomcat-jdbc")
|
||||
optional("org.assertj:assertj-core")
|
||||
optional("org.codehaus.btm:btm")
|
||||
optional("org.codehaus.groovy:groovy")
|
||||
optional("org.codehaus.groovy:groovy-xml")
|
||||
optional("org.eclipse.jetty:jetty-servlets")
|
||||
|
|
|
@ -423,7 +423,7 @@ public class SpringApplication {
|
|||
// Not allowed in some environments.
|
||||
}
|
||||
}
|
||||
refresh((ApplicationContext) context);
|
||||
refresh(context);
|
||||
}
|
||||
|
||||
private void configureHeadlessProperty() {
|
||||
|
@ -747,18 +747,6 @@ public class SpringApplication {
|
|||
return new BeanDefinitionLoader(registry, sources);
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh the underlying {@link ApplicationContext}.
|
||||
* @param applicationContext the application context to refresh
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #refresh(ConfigurableApplicationContext)}
|
||||
*/
|
||||
@Deprecated
|
||||
protected void refresh(ApplicationContext applicationContext) {
|
||||
Assert.isInstanceOf(ConfigurableApplicationContext.class, applicationContext);
|
||||
refresh((ConfigurableApplicationContext) applicationContext);
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh the underlying {@link ApplicationContext}.
|
||||
* @param applicationContext the application context to refresh
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import javax.transaction.TransactionManager;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
|
||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.core.Ordered;
|
||||
|
||||
/**
|
||||
* {@link BeanFactoryPostProcessor} to automatically register the recommended
|
||||
* {@link ConfigurableListableBeanFactory#registerDependentBean(String, String)
|
||||
* dependencies} for correct Bitronix shutdown ordering. With Bitronix it appears that
|
||||
* ConnectionFactory and DataSource beans must be shutdown before the
|
||||
* {@link TransactionManager}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @since 1.2.0
|
||||
* @deprecated since 2.3.0 as the Bitronix project is no longer being maintained
|
||||
*/
|
||||
@Deprecated
|
||||
public class BitronixDependentBeanFactoryPostProcessor implements BeanFactoryPostProcessor, Ordered {
|
||||
|
||||
private static final String[] NO_BEANS = {};
|
||||
|
||||
private int order = Ordered.LOWEST_PRECEDENCE;
|
||||
|
||||
@Override
|
||||
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
|
||||
String[] transactionManagers = beanFactory.getBeanNamesForType(TransactionManager.class, true, false);
|
||||
for (String transactionManager : transactionManagers) {
|
||||
addTransactionManagerDependencies(beanFactory, transactionManager);
|
||||
}
|
||||
}
|
||||
|
||||
private void addTransactionManagerDependencies(ConfigurableListableBeanFactory beanFactory,
|
||||
String transactionManager) {
|
||||
for (String dependentBeanName : getBeanNamesForType(beanFactory, "javax.jms.ConnectionFactory")) {
|
||||
beanFactory.registerDependentBean(transactionManager, dependentBeanName);
|
||||
}
|
||||
for (String dependentBeanName : getBeanNamesForType(beanFactory, "javax.sql.DataSource")) {
|
||||
beanFactory.registerDependentBean(transactionManager, dependentBeanName);
|
||||
}
|
||||
}
|
||||
|
||||
private String[] getBeanNamesForType(ConfigurableListableBeanFactory beanFactory, String type) {
|
||||
try {
|
||||
return beanFactory.getBeanNamesForType(Class.forName(type), true, false);
|
||||
}
|
||||
catch (ClassNotFoundException | NoClassDefFoundError ex) {
|
||||
// Ignore
|
||||
}
|
||||
return NO_BEANS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return this.order;
|
||||
}
|
||||
|
||||
public void setOrder(int order) {
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import javax.jms.ConnectionFactory;
|
||||
import javax.jms.XAConnectionFactory;
|
||||
|
||||
import org.springframework.boot.jms.XAConnectionFactoryWrapper;
|
||||
|
||||
/**
|
||||
* {@link XAConnectionFactoryWrapper} that uses a Bitronix
|
||||
* {@link PoolingConnectionFactoryBean} to wrap a {@link XAConnectionFactory}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @since 1.2.0
|
||||
* @deprecated since 2.3.0 as the Bitronix project is no longer being maintained
|
||||
*/
|
||||
@Deprecated
|
||||
public class BitronixXAConnectionFactoryWrapper implements XAConnectionFactoryWrapper {
|
||||
|
||||
@Override
|
||||
public ConnectionFactory wrapConnectionFactory(XAConnectionFactory connectionFactory) {
|
||||
PoolingConnectionFactoryBean pool = new PoolingConnectionFactoryBean();
|
||||
pool.setConnectionFactory(connectionFactory);
|
||||
return pool;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import javax.sql.XADataSource;
|
||||
|
||||
import org.springframework.boot.jdbc.XADataSourceWrapper;
|
||||
|
||||
/**
|
||||
* {@link XADataSourceWrapper} that uses a Bitronix {@link PoolingDataSourceBean} to wrap
|
||||
* a {@link XADataSource}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @since 1.2.0
|
||||
* @deprecated since 2.3.0 as the Bitronix project is no longer being maintained
|
||||
*/
|
||||
@Deprecated
|
||||
public class BitronixXADataSourceWrapper implements XADataSourceWrapper {
|
||||
|
||||
@Override
|
||||
public PoolingDataSourceBean wrapDataSource(XADataSource dataSource) throws Exception {
|
||||
PoolingDataSourceBean pool = new PoolingDataSourceBean();
|
||||
pool.setDataSource(dataSource);
|
||||
return pool;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,157 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.jms.JMSException;
|
||||
import javax.jms.XAConnection;
|
||||
import javax.jms.XAConnectionFactory;
|
||||
import javax.jms.XAJMSContext;
|
||||
|
||||
import bitronix.tm.resource.common.ResourceBean;
|
||||
import bitronix.tm.resource.common.XAStatefulHolder;
|
||||
import bitronix.tm.resource.jms.PoolingConnectionFactory;
|
||||
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
import org.springframework.beans.factory.DisposableBean;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Spring friendly version of {@link PoolingConnectionFactory}. Provides sensible defaults
|
||||
* and also supports direct wrapping of a {@link XAConnectionFactory} instance.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Josh Long
|
||||
* @author Andy Wilkinson
|
||||
* @since 1.2.0
|
||||
* @deprecated since 2.3.0 as the Bitronix project is no longer being maintained
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressWarnings("serial")
|
||||
@ConfigurationProperties(prefix = "spring.jta.bitronix.connectionfactory")
|
||||
public class PoolingConnectionFactoryBean extends PoolingConnectionFactory
|
||||
implements BeanNameAware, InitializingBean, DisposableBean {
|
||||
|
||||
private static final ThreadLocal<PoolingConnectionFactoryBean> source = new ThreadLocal<>();
|
||||
|
||||
private String beanName;
|
||||
|
||||
private XAConnectionFactory connectionFactory;
|
||||
|
||||
public PoolingConnectionFactoryBean() {
|
||||
setMaxPoolSize(10);
|
||||
setTestConnections(true);
|
||||
setAutomaticEnlistingEnabled(true);
|
||||
setAllowLocalTransactions(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void init() {
|
||||
source.set(this);
|
||||
try {
|
||||
super.init();
|
||||
}
|
||||
finally {
|
||||
source.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBeanName(String name) {
|
||||
this.beanName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
if (!StringUtils.hasLength(getUniqueName())) {
|
||||
setUniqueName(this.beanName);
|
||||
}
|
||||
init();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() throws Exception {
|
||||
close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the {@link XAConnectionFactory} directly, instead of calling
|
||||
* {@link #setClassName(String)}.
|
||||
* @param connectionFactory the connection factory to use
|
||||
*/
|
||||
public void setConnectionFactory(XAConnectionFactory connectionFactory) {
|
||||
this.connectionFactory = connectionFactory;
|
||||
setClassName(DirectXAConnectionFactory.class.getName());
|
||||
setDriverProperties(new Properties());
|
||||
}
|
||||
|
||||
protected final XAConnectionFactory getConnectionFactory() {
|
||||
return this.connectionFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XAStatefulHolder createPooledConnection(Object xaFactory, ResourceBean bean) throws Exception {
|
||||
if (xaFactory instanceof DirectXAConnectionFactory) {
|
||||
xaFactory = ((DirectXAConnectionFactory) xaFactory).getConnectionFactory();
|
||||
}
|
||||
return super.createPooledConnection(xaFactory, bean);
|
||||
}
|
||||
|
||||
/**
|
||||
* A {@link XAConnectionFactory} implementation that delegates to the
|
||||
* {@link ThreadLocal} {@link PoolingConnectionFactoryBean}.
|
||||
*
|
||||
* @see PoolingConnectionFactoryBean#setConnectionFactory(XAConnectionFactory)
|
||||
*/
|
||||
public static class DirectXAConnectionFactory implements XAConnectionFactory {
|
||||
|
||||
private final XAConnectionFactory connectionFactory;
|
||||
|
||||
public DirectXAConnectionFactory() {
|
||||
this.connectionFactory = source.get().connectionFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XAConnection createXAConnection() throws JMSException {
|
||||
return this.connectionFactory.createXAConnection();
|
||||
}
|
||||
|
||||
@Override
|
||||
public XAConnection createXAConnection(String userName, String password) throws JMSException {
|
||||
return this.connectionFactory.createXAConnection(userName, password);
|
||||
}
|
||||
|
||||
public XAConnectionFactory getConnectionFactory() {
|
||||
return this.connectionFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XAJMSContext createXAContext() {
|
||||
return this.connectionFactory.createXAContext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public XAJMSContext createXAContext(String username, String password) {
|
||||
return this.connectionFactory.createXAContext(username, password);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,179 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLFeatureNotSupportedException;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.sql.XAConnection;
|
||||
import javax.sql.XADataSource;
|
||||
|
||||
import bitronix.tm.resource.common.ResourceBean;
|
||||
import bitronix.tm.resource.common.XAStatefulHolder;
|
||||
import bitronix.tm.resource.jdbc.PoolingDataSource;
|
||||
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Spring friendly version of {@link PoolingDataSource}. Provides sensible defaults and
|
||||
* also supports direct wrapping of a {@link XADataSource} instance.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Josh Long
|
||||
* @author Andy Wilkinson
|
||||
* @since 1.2.0
|
||||
* @deprecated since 2.3.0 as the Bitronix project is no longer being maintained
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressWarnings("serial")
|
||||
@ConfigurationProperties(prefix = "spring.jta.bitronix.datasource")
|
||||
public class PoolingDataSourceBean extends PoolingDataSource implements BeanNameAware, InitializingBean {
|
||||
|
||||
private static final ThreadLocal<PoolingDataSourceBean> source = new ThreadLocal<>();
|
||||
|
||||
private XADataSource dataSource;
|
||||
|
||||
private String beanName;
|
||||
|
||||
public PoolingDataSourceBean() {
|
||||
setMaxPoolSize(10);
|
||||
setAllowLocalTransactions(true);
|
||||
setEnableJdbc4ConnectionTest(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void init() {
|
||||
source.set(this);
|
||||
try {
|
||||
super.init();
|
||||
}
|
||||
finally {
|
||||
source.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBeanName(String name) {
|
||||
this.beanName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
if (!StringUtils.hasLength(getUniqueName())) {
|
||||
setUniqueName(this.beanName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the {@link XADataSource} directly, instead of calling
|
||||
* {@link #setClassName(String)}.
|
||||
* @param dataSource the data source to use
|
||||
*/
|
||||
public void setDataSource(XADataSource dataSource) {
|
||||
this.dataSource = dataSource;
|
||||
setClassName(DirectXADataSource.class.getName());
|
||||
setDriverProperties(new Properties());
|
||||
}
|
||||
|
||||
protected final XADataSource getDataSource() {
|
||||
return this.dataSource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XAStatefulHolder createPooledConnection(Object xaFactory, ResourceBean bean) throws Exception {
|
||||
if (xaFactory instanceof DirectXADataSource) {
|
||||
xaFactory = ((DirectXADataSource) xaFactory).getDataSource();
|
||||
}
|
||||
return super.createPooledConnection(xaFactory, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
|
||||
XADataSource dataSource = this.dataSource;
|
||||
if (dataSource != null) {
|
||||
try {
|
||||
return dataSource.getParentLogger();
|
||||
}
|
||||
catch (Exception ex) {
|
||||
// Swallow and continue
|
||||
}
|
||||
}
|
||||
return Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* A {@link XADataSource} implementation that delegates to the {@link ThreadLocal}
|
||||
* {@link PoolingDataSourceBean}.
|
||||
*
|
||||
* @see PoolingDataSourceBean#setDataSource(XADataSource)
|
||||
*/
|
||||
public static class DirectXADataSource implements XADataSource {
|
||||
|
||||
private final XADataSource dataSource;
|
||||
|
||||
public DirectXADataSource() {
|
||||
this.dataSource = source.get().dataSource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PrintWriter getLogWriter() throws SQLException {
|
||||
return this.dataSource.getLogWriter();
|
||||
}
|
||||
|
||||
@Override
|
||||
public XAConnection getXAConnection() throws SQLException {
|
||||
return this.dataSource.getXAConnection();
|
||||
}
|
||||
|
||||
@Override
|
||||
public XAConnection getXAConnection(String user, String password) throws SQLException {
|
||||
return this.dataSource.getXAConnection(user, password);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLogWriter(PrintWriter out) throws SQLException {
|
||||
this.dataSource.setLogWriter(out);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLoginTimeout(int seconds) throws SQLException {
|
||||
this.dataSource.setLoginTimeout(seconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLoginTimeout() throws SQLException {
|
||||
return this.dataSource.getLoginTimeout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
|
||||
return this.dataSource.getParentLogger();
|
||||
}
|
||||
|
||||
public XADataSource getDataSource() {
|
||||
return this.dataSource;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Support classes for Bitronix JTA.
|
||||
* @deprecated since 2.3.0 as the Bitronix project is no longer being maintained
|
||||
*/
|
||||
package org.springframework.boot.jta.bitronix;
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -21,7 +21,6 @@ import io.undertow.Undertow.Builder;
|
|||
import io.undertow.server.HttpHandler;
|
||||
import io.undertow.servlet.api.DeploymentManager;
|
||||
|
||||
import org.springframework.boot.web.server.Compression;
|
||||
import org.springframework.boot.web.server.WebServer;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
|
@ -44,58 +43,6 @@ public class UndertowServletWebServer extends UndertowWebServer {
|
|||
|
||||
private final DeploymentManager manager;
|
||||
|
||||
/**
|
||||
* Create a new {@link UndertowServletWebServer} instance.
|
||||
* @param builder the builder
|
||||
* @param manager the deployment manager
|
||||
* @param contextPath the root context path
|
||||
* @param autoStart if the server should be started
|
||||
* @param compression compression configuration
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #UndertowServletWebServer(io.undertow.Undertow.Builder, Iterable, String, boolean)}
|
||||
*/
|
||||
@Deprecated
|
||||
public UndertowServletWebServer(Builder builder, DeploymentManager manager, String contextPath, boolean autoStart,
|
||||
Compression compression) {
|
||||
this(builder, manager, contextPath, false, autoStart, compression);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@link UndertowServletWebServer} instance.
|
||||
* @param builder the builder
|
||||
* @param manager the deployment manager
|
||||
* @param contextPath the root context path
|
||||
* @param useForwardHeaders if x-forward headers should be used
|
||||
* @param autoStart if the server should be started
|
||||
* @param compression compression configuration
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #UndertowServletWebServer(io.undertow.Undertow.Builder, Iterable, String, boolean)}
|
||||
*/
|
||||
@Deprecated
|
||||
public UndertowServletWebServer(Builder builder, DeploymentManager manager, String contextPath,
|
||||
boolean useForwardHeaders, boolean autoStart, Compression compression) {
|
||||
this(builder, manager, contextPath, useForwardHeaders, autoStart, compression, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@link UndertowServletWebServer} instance.
|
||||
* @param builder the builder
|
||||
* @param manager the deployment manager
|
||||
* @param contextPath the root context path
|
||||
* @param useForwardHeaders if x-forward headers should be used
|
||||
* @param autoStart if the server should be started
|
||||
* @param compression compression configuration
|
||||
* @param serverHeader string to be used in HTTP header
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #UndertowServletWebServer(io.undertow.Undertow.Builder, Iterable, String, boolean)}
|
||||
*/
|
||||
@Deprecated
|
||||
public UndertowServletWebServer(Builder builder, DeploymentManager manager, String contextPath,
|
||||
boolean useForwardHeaders, boolean autoStart, Compression compression, String serverHeader) {
|
||||
this(builder, UndertowWebServerFactoryDelegate.createHttpHandlerFactories(compression, useForwardHeaders,
|
||||
serverHeader, null, new DeploymentManagerHttpHandlerFactory(manager)), contextPath, autoStart);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@link UndertowServletWebServer} instance.
|
||||
* @param builder the builder
|
||||
|
|
|
@ -83,21 +83,7 @@ public class UndertowWebServer implements WebServer {
|
|||
* @param autoStart if the server should be started
|
||||
*/
|
||||
public UndertowWebServer(Undertow.Builder builder, boolean autoStart) {
|
||||
this(builder, autoStart, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@link UndertowWebServer} instance.
|
||||
* @param builder the builder
|
||||
* @param autoStart if the server should be started
|
||||
* @param closeable called when the server is stopped
|
||||
* @since 2.0.4
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #UndertowWebServer(io.undertow.Undertow.Builder, Iterable, boolean)}
|
||||
*/
|
||||
@Deprecated
|
||||
public UndertowWebServer(Undertow.Builder builder, boolean autoStart, Closeable closeable) {
|
||||
this(builder, Collections.singleton(new CloseableHttpHandlerFactory(closeable)), autoStart);
|
||||
this(builder, Collections.singleton(new CloseableHttpHandlerFactory(null)), autoStart);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -63,32 +63,9 @@ public class DefaultErrorAttributes implements ErrorAttributes {
|
|||
|
||||
private static final String ERROR_ATTRIBUTE = DefaultErrorAttributes.class.getName() + ".ERROR";
|
||||
|
||||
private final Boolean includeException;
|
||||
|
||||
/**
|
||||
* Create a new {@link DefaultErrorAttributes} instance.
|
||||
*/
|
||||
public DefaultErrorAttributes() {
|
||||
this.includeException = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@link DefaultErrorAttributes} instance.
|
||||
* @param includeException whether to include the "exception" attribute
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link ErrorAttributeOptions#including(Include...)}
|
||||
*/
|
||||
@Deprecated
|
||||
public DefaultErrorAttributes(boolean includeException) {
|
||||
this.includeException = includeException;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getErrorAttributes(ServerRequest request, ErrorAttributeOptions options) {
|
||||
Map<String, Object> errorAttributes = getErrorAttributes(request, options.isIncluded(Include.STACK_TRACE));
|
||||
if (Boolean.TRUE.equals(this.includeException)) {
|
||||
options = options.including(Include.EXCEPTION);
|
||||
}
|
||||
if (!options.isIncluded(Include.EXCEPTION)) {
|
||||
errorAttributes.remove("exception");
|
||||
}
|
||||
|
@ -104,9 +81,7 @@ public class DefaultErrorAttributes implements ErrorAttributes {
|
|||
return errorAttributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public Map<String, Object> getErrorAttributes(ServerRequest request, boolean includeStackTrace) {
|
||||
private Map<String, Object> getErrorAttributes(ServerRequest request, boolean includeStackTrace) {
|
||||
Map<String, Object> errorAttributes = new LinkedHashMap<>();
|
||||
errorAttributes.put("timestamp", new Date());
|
||||
errorAttributes.put("path", request.path());
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -20,7 +20,6 @@ import java.util.Collections;
|
|||
import java.util.Map;
|
||||
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions;
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions.Include;
|
||||
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||
import org.springframework.web.reactive.function.server.ServerResponse;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
|
@ -35,20 +34,6 @@ import org.springframework.web.server.ServerWebExchange;
|
|||
*/
|
||||
public interface ErrorAttributes {
|
||||
|
||||
/**
|
||||
* Return a {@link Map} of the error attributes. The map can be used as the model of
|
||||
* an error page, or returned as a {@link ServerResponse} body.
|
||||
* @param request the source request
|
||||
* @param includeStackTrace if stack trace attribute should be included
|
||||
* @return a map of error attributes
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #getErrorAttributes(ServerRequest, ErrorAttributeOptions)}
|
||||
*/
|
||||
@Deprecated
|
||||
default Map<String, Object> getErrorAttributes(ServerRequest request, boolean includeStackTrace) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a {@link Map} of the error attributes. The map can be used as the model of
|
||||
* an error page, or returned as a {@link ServerResponse} body.
|
||||
|
@ -57,7 +42,7 @@ public interface ErrorAttributes {
|
|||
* @return a map of error attributes
|
||||
*/
|
||||
default Map<String, Object> getErrorAttributes(ServerRequest request, ErrorAttributeOptions options) {
|
||||
return getErrorAttributes(request, options.isIncluded(Include.STACK_TRACE));
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -70,26 +70,6 @@ public class DefaultErrorAttributes implements ErrorAttributes, HandlerException
|
|||
|
||||
private static final String ERROR_ATTRIBUTE = DefaultErrorAttributes.class.getName() + ".ERROR";
|
||||
|
||||
private final Boolean includeException;
|
||||
|
||||
/**
|
||||
* Create a new {@link DefaultErrorAttributes} instance.
|
||||
*/
|
||||
public DefaultErrorAttributes() {
|
||||
this.includeException = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@link DefaultErrorAttributes} instance.
|
||||
* @param includeException whether to include the "exception" attribute
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link ErrorAttributeOptions#including(Include...)}
|
||||
*/
|
||||
@Deprecated
|
||||
public DefaultErrorAttributes(boolean includeException) {
|
||||
this.includeException = includeException;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return Ordered.HIGHEST_PRECEDENCE;
|
||||
|
@ -109,9 +89,6 @@ public class DefaultErrorAttributes implements ErrorAttributes, HandlerException
|
|||
@Override
|
||||
public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) {
|
||||
Map<String, Object> errorAttributes = getErrorAttributes(webRequest, options.isIncluded(Include.STACK_TRACE));
|
||||
if (Boolean.TRUE.equals(this.includeException)) {
|
||||
options = options.including(Include.EXCEPTION);
|
||||
}
|
||||
if (!options.isIncluded(Include.EXCEPTION)) {
|
||||
errorAttributes.remove("exception");
|
||||
}
|
||||
|
@ -127,9 +104,7 @@ public class DefaultErrorAttributes implements ErrorAttributes, HandlerException
|
|||
return errorAttributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
|
||||
private Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
|
||||
Map<String, Object> errorAttributes = new LinkedHashMap<>();
|
||||
errorAttributes.put("timestamp", new Date());
|
||||
addStatus(errorAttributes, webRequest);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -20,7 +20,6 @@ import java.util.Collections;
|
|||
import java.util.Map;
|
||||
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions;
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions.Include;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.context.request.WebRequest;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
@ -35,21 +34,6 @@ import org.springframework.web.servlet.ModelAndView;
|
|||
*/
|
||||
public interface ErrorAttributes {
|
||||
|
||||
/**
|
||||
* Returns a {@link Map} of the error attributes. The map can be used as the model of
|
||||
* an error page {@link ModelAndView}, or returned as a
|
||||
* {@link ResponseBody @ResponseBody}.
|
||||
* @param webRequest the source request
|
||||
* @param includeStackTrace if stack trace element should be included
|
||||
* @return a map of error attributes
|
||||
* @deprecated since 2.3.0 in favor of
|
||||
* {@link #getErrorAttributes(WebRequest, ErrorAttributeOptions)}
|
||||
*/
|
||||
@Deprecated
|
||||
default Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Map} of the error attributes. The map can be used as the model of
|
||||
* an error page {@link ModelAndView}, or returned as a
|
||||
|
@ -60,7 +44,7 @@ public interface ErrorAttributes {
|
|||
* @since 2.3.0
|
||||
*/
|
||||
default Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) {
|
||||
return getErrorAttributes(webRequest, options.isIncluded(Include.STACK_TRACE));
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -26,16 +26,6 @@ import org.springframework.stereotype.Controller;
|
|||
* @author Scott Frederick
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface ErrorController {
|
||||
|
||||
/**
|
||||
* The return value from this method is not used; the property `server.error.path`
|
||||
* must be set to override the default error page path.
|
||||
* @return the error path
|
||||
* @deprecated since 2.3.0 in favor of setting the property `server.error.path`
|
||||
*/
|
||||
@Deprecated
|
||||
String getErrorPath();
|
||||
|
||||
}
|
||||
|
|
|
@ -469,273 +469,331 @@
|
|||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.acquire-increment",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Number of connections to create when growing the pool.",
|
||||
"defaultValue": 1
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.acquisition-interval",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Time, in seconds, to wait before trying to acquire a connection again after an invalid connection was acquired.",
|
||||
"defaultValue": 1
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.acquisition-timeout",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Timeout, in seconds, for acquiring connections from the pool.",
|
||||
"defaultValue": 30
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.allow-local-transactions",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether the transaction manager should allow mixing XA and non-XA transactions.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.apply-transaction-timeout",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether the transaction timeout should be set on the XAResource when it is enlisted.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.automatic-enlisting-enabled",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether resources should be enlisted and delisted automatically.",
|
||||
"defaultValue": true
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.cache-producers-consumers",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether producers and consumers should be cached.",
|
||||
"defaultValue": true
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.class-name",
|
||||
"type": "java.lang.String",
|
||||
"description": "Underlying implementation class name of the XA resource."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.defer-connection-release",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether the provider can run many transactions on the same connection and supports transaction interleaving.",
|
||||
"defaultValue": true
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.disabled",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether this resource is disabled, meaning it's temporarily forbidden to acquire a connection from its pool.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.driver-properties",
|
||||
"type": "java.util.Properties",
|
||||
"description": "Properties that should be set on the underlying implementation."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.ignore-recovery-failures",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether recovery failures should be ignored.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.max-idle-time",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Time, in seconds, after which connections are cleaned up from the pool.",
|
||||
"defaultValue": 60
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.max-pool-size",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Maximum size of the pool. 0 denotes no limit.",
|
||||
"defaultValue": 0
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.min-pool-size",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Minimum size of the pool.",
|
||||
"defaultValue": 0
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.password",
|
||||
"type": "java.lang.String",
|
||||
"description": "Password to use to connect to the JMS provider."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.share-transaction-connections",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether connections in the ACCESSIBLE state can be shared within the context of a transaction.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.test-connections",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether connections should be tested when acquired from the pool.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.two-pc-ordering-position",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Position that this resource should take during two-phase commit (always first is Integer.MIN_VALUE, always last is Integer.MAX_VALUE).",
|
||||
"defaultValue": 1
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.unique-name",
|
||||
"type": "java.lang.String",
|
||||
"description": "Unique name used to identify the resource during recovery.",
|
||||
"defaultValue": "jmsConnectionFactory"
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.use-tm-join",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether TMJOIN should be used when starting XAResources.",
|
||||
"defaultValue": true
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.connectionfactory.user",
|
||||
"type": "java.lang.String",
|
||||
"description": "User to use to connect to the JMS provider."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.acquire-increment",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Number of connections to create when growing the pool.",
|
||||
"defaultValue": 1
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.acquisition-interval",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Time, in seconds, to wait before trying to acquire a connection again after an invalid connection was acquired.",
|
||||
"defaultValue": 1
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.acquisition-timeout",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Timeout, in seconds, for acquiring connections from the pool.",
|
||||
"defaultValue": 30
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.allow-local-transactions",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether the transaction manager should allow mixing XA and non-XA transactions.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.apply-transaction-timeout",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether the transaction timeout should be set on the XAResource when it is enlisted.",
|
||||
"defaultValue": "false"
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.automatic-enlisting-enabled",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether resources should be enlisted and delisted automatically.",
|
||||
"defaultValue": true
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.class-name",
|
||||
"type": "java.lang.String",
|
||||
"description": "Underlying implementation class name of the XA resource."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.cursor-holdability",
|
||||
"type": "java.lang.String",
|
||||
"description": "Default cursor holdability for connections."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.defer-connection-release",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether the database can run many transactions on the same connection and supports transaction interleaving.",
|
||||
"defaultValue": true
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.disabled",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether this resource is disabled, meaning it's temporarily forbidden to acquire a connection from its pool.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.driver-properties",
|
||||
"type": "java.util.Properties",
|
||||
"description": "Properties that should be set on the underlying implementation."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.enable-jdbc4-connection-test",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether Connection.isValid() is called when acquiring a connection from the pool.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.ignore-recovery-failures",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether recovery failures should be ignored.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.isolation-level",
|
||||
"type": "java.lang.String",
|
||||
"description": "Default isolation level for connections."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.local-auto-commit",
|
||||
"type": "java.lang.String",
|
||||
"description": "Default auto-commit mode for local transactions."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.login-timeout",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Timeout, in seconds, for establishing a database connection."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.max-idle-time",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Time, in seconds, after which connections are cleaned up from the pool.",
|
||||
"defaultValue": 60
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.max-pool-size",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Maximum size of the pool. 0 denotes no limit.",
|
||||
"defaultValue": 0
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.min-pool-size",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Minimum size of the pool.",
|
||||
"defaultValue": 0
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.prepared-statement-cache-size",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Target size of the prepared statement cache. 0 disables the cache.",
|
||||
"defaultValue": 0
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.share-transaction-connections",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether connections in the ACCESSIBLE state can be shared within the context of a transaction.",
|
||||
"defaultValue": false
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.test-query",
|
||||
"type": "java.lang.String",
|
||||
"description": "SQL query or statement used to validate a connection before returning it."
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.two-pc-ordering-position",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "Position that this resource should take during two-phase commit (always first is Integer.MIN_VALUE, and always last is Integer.MAX_VALUE).",
|
||||
"defaultValue": 1
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.unique-name",
|
||||
"type": "java.lang.String",
|
||||
"description": "Unique name used to identify the resource during recovery.",
|
||||
"defaultValue": "dataSource"
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.jta.bitronix.datasource.use-tm-join",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether TMJOIN should be used when starting XAResources.",
|
||||
"defaultValue": true
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "spring.main.allow-bean-definition-overriding",
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import javax.jms.ConnectionFactory;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import bitronix.tm.BitronixTransactionManager;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
/**
|
||||
* Tests for {@link BitronixDependentBeanFactoryPostProcessor}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@Deprecated
|
||||
class BitronixDependentBeanFactoryPostProcessorTests {
|
||||
|
||||
private AnnotationConfigApplicationContext context;
|
||||
|
||||
@Test
|
||||
void setsDependsOn() {
|
||||
DefaultListableBeanFactory beanFactory = spy(new DefaultListableBeanFactory());
|
||||
this.context = new AnnotationConfigApplicationContext(beanFactory);
|
||||
this.context.register(Config.class);
|
||||
this.context.refresh();
|
||||
String name = "bitronixTransactionManager";
|
||||
verify(beanFactory).registerDependentBean(name, "dataSource");
|
||||
verify(beanFactory).registerDependentBean(name, "connectionFactory");
|
||||
this.context.close();
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class Config {
|
||||
|
||||
@Bean
|
||||
DataSource dataSource() {
|
||||
return mock(DataSource.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
ConnectionFactory connectionFactory() {
|
||||
return mock(ConnectionFactory.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
BitronixTransactionManager bitronixTransactionManager() {
|
||||
return mock(BitronixTransactionManager.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
static BitronixDependentBeanFactoryPostProcessor bitronixPostProcessor() {
|
||||
return new BitronixDependentBeanFactoryPostProcessor();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import javax.jms.ConnectionFactory;
|
||||
import javax.jms.XAConnectionFactory;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
/**
|
||||
* Tests for {@link BitronixXAConnectionFactoryWrapper}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@Deprecated
|
||||
class BitronixXAConnectionFactoryWrapperTests {
|
||||
|
||||
@Test
|
||||
void wrap() {
|
||||
XAConnectionFactory connectionFactory = mock(XAConnectionFactory.class);
|
||||
BitronixXAConnectionFactoryWrapper wrapper = new BitronixXAConnectionFactoryWrapper();
|
||||
ConnectionFactory wrapped = wrapper.wrapConnectionFactory(connectionFactory);
|
||||
assertThat(wrapped).isInstanceOf(PoolingConnectionFactoryBean.class);
|
||||
assertThat(((PoolingConnectionFactoryBean) wrapped).getConnectionFactory()).isSameAs(connectionFactory);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import javax.sql.XADataSource;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
/**
|
||||
* Tests for {@link BitronixXADataSourceWrapper}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@Deprecated
|
||||
class BitronixXADataSourceWrapperTests {
|
||||
|
||||
@Test
|
||||
void wrap() throws Exception {
|
||||
XADataSource dataSource = mock(XADataSource.class);
|
||||
BitronixXADataSourceWrapper wrapper = new BitronixXADataSourceWrapper();
|
||||
DataSource wrapped = wrapper.wrapDataSource(dataSource);
|
||||
assertThat(wrapped).isInstanceOf(PoolingDataSourceBean.class);
|
||||
assertThat(((PoolingDataSourceBean) wrapped).getDataSource()).isSameAs(dataSource);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import javax.jms.XAConnectionFactory;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
/**
|
||||
* Tests for {@link PoolingConnectionFactoryBean}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@Deprecated
|
||||
class PoolingConnectionFactoryBeanTests {
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
private PoolingConnectionFactoryBean bean = new PoolingConnectionFactoryBean() {
|
||||
@Override
|
||||
public synchronized void init() {
|
||||
// Stub out for the tests
|
||||
}
|
||||
};
|
||||
|
||||
@Test
|
||||
void sensibleDefaults() {
|
||||
assertThat(this.bean.getMaxPoolSize()).isEqualTo(10);
|
||||
assertThat(this.bean.getTestConnections()).isTrue();
|
||||
assertThat(this.bean.getAutomaticEnlistingEnabled()).isTrue();
|
||||
assertThat(this.bean.getAllowLocalTransactions()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void setsUniqueNameIfNull() throws Exception {
|
||||
this.bean.setBeanName("beanName");
|
||||
this.bean.afterPropertiesSet();
|
||||
assertThat(this.bean.getUniqueName()).isEqualTo("beanName");
|
||||
}
|
||||
|
||||
@Test
|
||||
void doesNotSetUniqueNameIfNotNull() throws Exception {
|
||||
this.bean.setBeanName("beanName");
|
||||
this.bean.setUniqueName("un");
|
||||
this.bean.afterPropertiesSet();
|
||||
assertThat(this.bean.getUniqueName()).isEqualTo("un");
|
||||
}
|
||||
|
||||
@Test
|
||||
void setConnectionFactory() throws Exception {
|
||||
XAConnectionFactory factory = mock(XAConnectionFactory.class);
|
||||
this.bean.setConnectionFactory(factory);
|
||||
this.bean.setBeanName("beanName");
|
||||
this.bean.afterPropertiesSet();
|
||||
this.bean.init();
|
||||
this.bean.createPooledConnection(factory, this.bean);
|
||||
verify(factory).createXAConnection();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,104 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.jta.bitronix;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLFeatureNotSupportedException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.sql.XAConnection;
|
||||
import javax.sql.XADataSource;
|
||||
|
||||
import bitronix.tm.TransactionManagerServices;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
/**
|
||||
* Tests for {@link PoolingDataSourceBean}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@Deprecated
|
||||
class PoolingDataSourceBeanTests {
|
||||
|
||||
private PoolingDataSourceBean bean = new PoolingDataSourceBean();
|
||||
|
||||
@Test
|
||||
void sensibleDefaults() {
|
||||
assertThat(this.bean.getMaxPoolSize()).isEqualTo(10);
|
||||
assertThat(this.bean.getAutomaticEnlistingEnabled()).isTrue();
|
||||
assertThat(this.bean.isEnableJdbc4ConnectionTest()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void setsUniqueNameIfNull() throws Exception {
|
||||
this.bean.setBeanName("beanName");
|
||||
this.bean.afterPropertiesSet();
|
||||
assertThat(this.bean.getUniqueName()).isEqualTo("beanName");
|
||||
}
|
||||
|
||||
@Test
|
||||
void doesNotSetUniqueNameIfNotNull() throws Exception {
|
||||
this.bean.setBeanName("beanName");
|
||||
this.bean.setUniqueName("un");
|
||||
this.bean.afterPropertiesSet();
|
||||
assertThat(this.bean.getUniqueName()).isEqualTo("un");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReturnGlobalLoggerWhenDataSourceIsAbsent() throws SQLFeatureNotSupportedException {
|
||||
assertThat(this.bean.getParentLogger()).isSameAs(Logger.getLogger(Logger.GLOBAL_LOGGER_NAME));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReturnGlobalLoggerWhenDataSourceThrowsException() throws SQLFeatureNotSupportedException {
|
||||
XADataSource dataSource = mock(XADataSource.class);
|
||||
given(dataSource.getParentLogger()).willThrow(new SQLFeatureNotSupportedException());
|
||||
this.bean.setDataSource(dataSource);
|
||||
assertThat(this.bean.getParentLogger()).isSameAs(Logger.getLogger(Logger.GLOBAL_LOGGER_NAME));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReturnParentLoggerFromDataSource() throws SQLFeatureNotSupportedException {
|
||||
Logger logger = Logger.getLogger("test");
|
||||
XADataSource dataSource = mock(XADataSource.class);
|
||||
given(dataSource.getParentLogger()).willReturn(logger);
|
||||
this.bean.setDataSource(dataSource);
|
||||
assertThat(this.bean.getParentLogger()).isSameAs(logger);
|
||||
}
|
||||
|
||||
@Test
|
||||
void setDataSource() throws Exception {
|
||||
XADataSource dataSource = mock(XADataSource.class);
|
||||
XAConnection xaConnection = mock(XAConnection.class);
|
||||
Connection connection = mock(Connection.class);
|
||||
given(dataSource.getXAConnection()).willReturn(xaConnection);
|
||||
given(xaConnection.getConnection()).willReturn(connection);
|
||||
this.bean.setDataSource(dataSource);
|
||||
this.bean.setBeanName("beanName");
|
||||
this.bean.afterPropertiesSet();
|
||||
this.bean.init();
|
||||
this.bean.createPooledConnection(dataSource, this.bean);
|
||||
verify(dataSource).getXAConnection();
|
||||
TransactionManagerServices.getTaskScheduler().shutdown();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -164,19 +164,6 @@ class DefaultErrorAttributesTests {
|
|||
assertThat(attributes.get("message")).isEqualTo("Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
void excludeExceptionWithDeprecatedConstructor() {
|
||||
RuntimeException error = new RuntimeException("Test");
|
||||
this.errorAttributes = new DefaultErrorAttributes(false);
|
||||
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build();
|
||||
ServerRequest serverRequest = buildServerRequest(request, error);
|
||||
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest,
|
||||
ErrorAttributeOptions.of());
|
||||
assertThat(this.errorAttributes.getError(serverRequest)).isSameAs(error);
|
||||
assertThat(attributes.get("exception")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void processResponseStatusException() {
|
||||
RuntimeException nested = new RuntimeException("Test");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -231,17 +231,6 @@ class DefaultErrorAttributesTests {
|
|||
assertThat(attributes.get("message")).isEqualTo("Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
void excludeExceptionAttributeWithDeprecatedConstructor() {
|
||||
DefaultErrorAttributes errorAttributes = new DefaultErrorAttributes(false);
|
||||
RuntimeException ex = new RuntimeException("Test");
|
||||
this.request.setAttribute("javax.servlet.error.exception", ex);
|
||||
Map<String, Object> attributes = errorAttributes.getErrorAttributes(this.webRequest,
|
||||
ErrorAttributeOptions.of());
|
||||
assertThat(attributes.get("exception")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void withStackTraceAttribute() {
|
||||
RuntimeException ex = new RuntimeException("Test");
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
plugins {
|
||||
id "java"
|
||||
id "org.springframework.boot.conventions"
|
||||
}
|
||||
|
||||
description = "Spring Boot Bitronix JTA smoke test"
|
||||
|
||||
dependencies {
|
||||
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-artemis"))
|
||||
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-jpa"))
|
||||
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jta-bitronix"))
|
||||
if (JavaVersion.current().java9Compatible) {
|
||||
implementation("jakarta.xml.bind:jakarta.xml.bind-api")
|
||||
}
|
||||
implementation("org.springframework:spring-jms")
|
||||
|
||||
runtimeOnly("com.h2database:h2")
|
||||
runtimeOnly("org.apache.activemq:artemis-jms-server") {
|
||||
exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec"
|
||||
}
|
||||
|
||||
testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package smoketest.bitronix;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
|
||||
@Entity
|
||||
public class Account {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
|
||||
private String username;
|
||||
|
||||
Account() {
|
||||
}
|
||||
|
||||
public Account(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return this.username;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package smoketest.bitronix;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface AccountRepository extends JpaRepository<Account, Long> {
|
||||
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package smoketest.bitronix;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@Transactional
|
||||
public class AccountService {
|
||||
|
||||
private final JmsTemplate jmsTemplate;
|
||||
|
||||
private final AccountRepository accountRepository;
|
||||
|
||||
public AccountService(JmsTemplate jmsTemplate, AccountRepository accountRepository) {
|
||||
this.jmsTemplate = jmsTemplate;
|
||||
this.accountRepository = accountRepository;
|
||||
}
|
||||
|
||||
public void createAccountAndNotify(String username) {
|
||||
this.jmsTemplate.convertAndSend("accounts", username);
|
||||
this.accountRepository.save(new Account(username));
|
||||
if ("error".equals(username)) {
|
||||
throw new RuntimeException("Simulated error");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package smoketest.bitronix;
|
||||
|
||||
import org.springframework.jms.annotation.JmsListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class Messages {
|
||||
|
||||
@JmsListener(destination = "accounts")
|
||||
public void onMessage(String content) {
|
||||
System.out.println("----> " + content);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package smoketest.bitronix;
|
||||
|
||||
import java.io.Closeable;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
@SpringBootApplication
|
||||
public class SampleBitronixApplication {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
ApplicationContext context = SpringApplication.run(SampleBitronixApplication.class, args);
|
||||
AccountService service = context.getBean(AccountService.class);
|
||||
AccountRepository repository = context.getBean(AccountRepository.class);
|
||||
service.createAccountAndNotify("josh");
|
||||
System.out.println("Count is " + repository.count());
|
||||
try {
|
||||
service.createAccountAndNotify("error");
|
||||
}
|
||||
catch (Exception ex) {
|
||||
System.out.println(ex.getMessage());
|
||||
}
|
||||
System.out.println("Count is " + repository.count());
|
||||
Thread.sleep(100);
|
||||
((Closeable) context).close();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
spring.artemis.embedded.queues=accounts
|
||||
spring.jpa.open-in-view=true
|
|
@ -1,68 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package smoketest.bitronix;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import bitronix.tm.resource.jms.PoolingConnectionFactory;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.test.system.CapturedOutput;
|
||||
import org.springframework.boot.test.system.OutputCaptureExtension;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Basic integration tests for demo application.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@ExtendWith(OutputCaptureExtension.class)
|
||||
class SampleBitronixApplicationTests {
|
||||
|
||||
@Test
|
||||
void testTransactionRollback(CapturedOutput output) throws Exception {
|
||||
SampleBitronixApplication.main(new String[] {});
|
||||
assertThat(output).satisfies(numberOfOccurrences("---->", 1));
|
||||
assertThat(output).satisfies(numberOfOccurrences("----> josh", 1));
|
||||
assertThat(output).satisfies(numberOfOccurrences("Count is 1", 2));
|
||||
assertThat(output).satisfies(numberOfOccurrences("Simulated error", 1));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testExposesXaAndNonXa() {
|
||||
ApplicationContext context = SpringApplication.run(SampleBitronixApplication.class);
|
||||
Object jmsConnectionFactory = context.getBean("jmsConnectionFactory");
|
||||
Object xaJmsConnectionFactory = context.getBean("xaJmsConnectionFactory");
|
||||
Object nonXaJmsConnectionFactory = context.getBean("nonXaJmsConnectionFactory");
|
||||
assertThat(jmsConnectionFactory).isSameAs(xaJmsConnectionFactory);
|
||||
assertThat(jmsConnectionFactory).isInstanceOf(PoolingConnectionFactory.class);
|
||||
assertThat(nonXaJmsConnectionFactory).isNotInstanceOf(PoolingConnectionFactory.class);
|
||||
}
|
||||
|
||||
private <T extends CharSequence> Consumer<T> numberOfOccurrences(String substring, int expectedCount) {
|
||||
return (charSequence) -> {
|
||||
int count = StringUtils.countOccurrencesOf(charSequence.toString(), substring);
|
||||
assertThat(count).isEqualTo(expectedCount);
|
||||
};
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue