Remove deprecated code
This code removes code deprecated in 1.4 with the exception of code that requires an update to Spring Framework 5. Closes gh-6971pull/6979/head
parent
d514cc3dab
commit
ce1e41dce3
@ -1,77 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2015 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
|
|
||||||
*
|
|
||||||
* http://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.system;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
|
|
||||||
import org.springframework.boot.context.event.ApplicationPreparedEvent;
|
|
||||||
import org.springframework.context.ApplicationListener;
|
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An {@link ApplicationListener} that saves application PID into file. This application
|
|
||||||
* listener will be triggered exactly once per JVM, and the file name can be overridden at
|
|
||||||
* runtime with a System property or environment variable named "PIDFILE" (or "pidfile")
|
|
||||||
* or using a {@code spring.pid.file} property in the Spring {@link Environment}.
|
|
||||||
* <p>
|
|
||||||
* If PID file can not be created no exception is reported. This behavior can be changed
|
|
||||||
* by assigning {@code true} to System property or environment variable named
|
|
||||||
* {@code PID_FAIL_ON_WRITE_ERROR} (or "pid_fail_on_write_error") or to
|
|
||||||
* {@code spring.pid.fail-on-write-error} property in the Spring {@link Environment}.
|
|
||||||
* <p>
|
|
||||||
* Note: access to the Spring {@link Environment} is only possible when the
|
|
||||||
* {@link #setTriggerEventType(Class) triggerEventType} is set to
|
|
||||||
* {@link ApplicationEnvironmentPreparedEvent} or {@link ApplicationPreparedEvent}.
|
|
||||||
*
|
|
||||||
* @author Jakub Kubrynski
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @author Tomasz Przybyla
|
|
||||||
* @since 1.2.0
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.system.ApplicationPidFileWriter}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ApplicationPidFileWriter
|
|
||||||
extends org.springframework.boot.system.ApplicationPidFileWriter {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link ApplicationPidFileWriter} instance using the filename
|
|
||||||
* 'application.pid'.
|
|
||||||
*/
|
|
||||||
public ApplicationPidFileWriter() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link ApplicationPidFileWriter} instance with a specified filename.
|
|
||||||
* @param filename the name of file containing pid
|
|
||||||
*/
|
|
||||||
public ApplicationPidFileWriter(String filename) {
|
|
||||||
super(filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link ApplicationPidFileWriter} instance with a specified file.
|
|
||||||
* @param file the file containing pid
|
|
||||||
*/
|
|
||||||
public ApplicationPidFileWriter(File file) {
|
|
||||||
super(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2015 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
|
|
||||||
*
|
|
||||||
* http://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.system;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import org.springframework.context.ApplicationListener;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An {@link ApplicationListener} that saves embedded server port and management port into
|
|
||||||
* file. This application listener will be triggered whenever the servlet container
|
|
||||||
* starts, and the file name can be overridden at runtime with a System property or
|
|
||||||
* environment variable named "PORTFILE" or "portfile".
|
|
||||||
*
|
|
||||||
* @author David Liu
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @author Andy Wilkinson
|
|
||||||
* @since 1.2.0
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.system.EmbeddedServerPortFileWriter}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class EmbeddedServerPortFileWriter
|
|
||||||
extends org.springframework.boot.system.EmbeddedServerPortFileWriter {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link EmbeddedServerPortFileWriter} instance using the filename
|
|
||||||
* 'application.port'.
|
|
||||||
*/
|
|
||||||
public EmbeddedServerPortFileWriter() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link EmbeddedServerPortFileWriter} instance with a specified
|
|
||||||
* filename.
|
|
||||||
* @param filename the name of file containing port
|
|
||||||
*/
|
|
||||||
public EmbeddedServerPortFileWriter(String filename) {
|
|
||||||
super(filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link EmbeddedServerPortFileWriter} instance with a specified file.
|
|
||||||
* @param file the file containing port
|
|
||||||
*/
|
|
||||||
public EmbeddedServerPortFileWriter(File file) {
|
|
||||||
super(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2015 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
|
|
||||||
*
|
|
||||||
* http://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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* General actuator system support classes.
|
|
||||||
*/
|
|
||||||
package org.springframework.boot.actuate.system;
|
|
@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.endpoint;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import org.springframework.boot.actuate.info.Info;
|
|
||||||
import org.springframework.boot.actuate.info.InfoContributor;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link InfoEndpoint}.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class InfoEndpointCompatibilityTests {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void invoke() throws Exception {
|
|
||||||
Map<String, Object> actual = getEndpointBean().invoke();
|
|
||||||
assertThat(actual.get("key1")).isEqualTo("value1");
|
|
||||||
assertThat(actual.get("foo")).isEqualTo("bar");
|
|
||||||
}
|
|
||||||
|
|
||||||
private InfoEndpoint getEndpointBean() {
|
|
||||||
return new InfoEndpoint(Collections.<String, Object>singletonMap("foo", "bar"),
|
|
||||||
infoContributor());
|
|
||||||
}
|
|
||||||
|
|
||||||
private InfoContributor infoContributor() {
|
|
||||||
return new InfoContributor() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void contribute(Info.Builder builder) {
|
|
||||||
builder.withDetail("key1", "value1");
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Inherited;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Import and apply the selected auto-configuration classes for testing purposes. Applies
|
|
||||||
* the same ordering rules as {@code @EnableAutoConfiguration} but restricts the
|
|
||||||
* auto-configuration classes to the specified set, rather than consulting
|
|
||||||
* {@code spring.factories}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.3.0
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.autoconfigure.ImportAutoConfiguration}
|
|
||||||
*/
|
|
||||||
@Target(ElementType.TYPE)
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Documented
|
|
||||||
@Inherited
|
|
||||||
@org.springframework.boot.autoconfigure.ImportAutoConfiguration({})
|
|
||||||
@Deprecated
|
|
||||||
public @interface ImportAutoConfiguration {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The auto-configuration classes that should be imported.
|
|
||||||
* @return the classes to import
|
|
||||||
*/
|
|
||||||
@AliasFor(annotation = org.springframework.boot.autoconfigure.ImportAutoConfiguration.class, attribute = "value")
|
|
||||||
Class<?>[] value();
|
|
||||||
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test utilities related to auto-configuration.
|
|
||||||
* @deprecated as of 1.4 in favor of the {@code spring-boot-test-autoconfigure} module
|
|
||||||
*/
|
|
||||||
package org.springframework.boot.autoconfigure.test;
|
|
@ -1,37 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.springframework.boot.context.config.ConfigFileApplicationListener;
|
|
||||||
import org.springframework.context.ApplicationContextInitializer;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ApplicationContextInitializer} that can be used with the
|
|
||||||
* {@link ContextConfiguration#initializers()} to trigger loading of
|
|
||||||
* {@literal application.properties}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @see ConfigFileApplicationListener
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.test.context.ConfigFileApplicationContextInitializer}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ConfigFileApplicationContextInitializer extends
|
|
||||||
org.springframework.boot.test.context.ConfigFileApplicationContextInitializer {
|
|
||||||
|
|
||||||
}
|
|
@ -1,73 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
|
||||||
import org.springframework.core.env.ConfigurableEnvironment;
|
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test utilities for setting environment values.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Stephane Nicoll
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.test.util.EnvironmentTestUtils}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public abstract class EnvironmentTestUtils {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add additional (high priority) values to an {@link Environment} owned by an
|
|
||||||
* {@link ApplicationContext}. Name-value pairs can be specified with colon (":") or
|
|
||||||
* equals ("=") separators.
|
|
||||||
* @param context the context with an environment to modify
|
|
||||||
* @param pairs the name:value pairs
|
|
||||||
*/
|
|
||||||
public static void addEnvironment(ConfigurableApplicationContext context,
|
|
||||||
String... pairs) {
|
|
||||||
org.springframework.boot.test.util.EnvironmentTestUtils.addEnvironment(context,
|
|
||||||
pairs);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add additional (high priority) values to an {@link Environment}. Name-value pairs
|
|
||||||
* can be specified with colon (":") or equals ("=") separators.
|
|
||||||
* @param environment the environment to modify
|
|
||||||
* @param pairs the name:value pairs
|
|
||||||
*/
|
|
||||||
public static void addEnvironment(ConfigurableEnvironment environment,
|
|
||||||
String... pairs) {
|
|
||||||
org.springframework.boot.test.util.EnvironmentTestUtils
|
|
||||||
.addEnvironment(environment, pairs);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add additional (high priority) values to an {@link Environment}. Name-value pairs
|
|
||||||
* can be specified with colon (":") or equals ("=") separators.
|
|
||||||
* @param environment the environment to modify
|
|
||||||
* @param name the property source name
|
|
||||||
* @param pairs the name:value pairs
|
|
||||||
*/
|
|
||||||
public static void addEnvironment(String name, ConfigurableEnvironment environment,
|
|
||||||
String... pairs) {
|
|
||||||
org.springframework.boot.test.util.EnvironmentTestUtils.addEnvironment(name,
|
|
||||||
environment, pairs);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Inherited;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
import org.springframework.test.context.TestExecutionListeners;
|
|
||||||
import org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener;
|
|
||||||
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
|
|
||||||
import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
|
|
||||||
import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test class annotation signifying that the tests are "integration tests" and therefore
|
|
||||||
* require full startup in the same way as a production application. Normally used in
|
|
||||||
* conjunction with {@code @SpringApplicationConfiguration}.
|
|
||||||
* <p>
|
|
||||||
* If your test also uses {@code @WebAppConfiguration} consider using the
|
|
||||||
* {@link WebIntegrationTest} instead.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @see WebIntegrationTest
|
|
||||||
* @deprecated as of 1.4 in favor of {@link SpringBootTest}
|
|
||||||
*/
|
|
||||||
@Documented
|
|
||||||
@Inherited
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Target(ElementType.TYPE)
|
|
||||||
// Leave out the ServletTestExecutionListener because it only deals with Mock* servlet
|
|
||||||
// stuff. A real embedded application will not need the mocks.
|
|
||||||
@TestExecutionListeners(listeners = { IntegrationTestPropertiesListener.class,
|
|
||||||
DependencyInjectionTestExecutionListener.class,
|
|
||||||
DirtiesContextTestExecutionListener.class,
|
|
||||||
TransactionalTestExecutionListener.class, SqlScriptsTestExecutionListener.class })
|
|
||||||
@Deprecated
|
|
||||||
public @interface IntegrationTest {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Properties in form {@literal key=value} that should be added to the Spring
|
|
||||||
* {@link Environment} before the test runs.
|
|
||||||
* @return the environment properties
|
|
||||||
*/
|
|
||||||
String[] value() default {};
|
|
||||||
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2013-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.core.annotation.AnnotatedElementUtils;
|
|
||||||
import org.springframework.core.annotation.AnnotationAttributes;
|
|
||||||
import org.springframework.test.context.MergedContextConfiguration;
|
|
||||||
import org.springframework.test.context.TestContext;
|
|
||||||
import org.springframework.test.context.support.AbstractTestExecutionListener;
|
|
||||||
import org.springframework.test.util.ReflectionTestUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Manipulate the TestContext to merge properties from {@code @IntegrationTest}.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.2.0
|
|
||||||
* @deprecated as of 1.4 as no longer used by {@code @IntegrationTest}.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class IntegrationTestPropertiesListener extends AbstractTestExecutionListener {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void prepareTestInstance(TestContext testContext) throws Exception {
|
|
||||||
Class<?> testClass = testContext.getTestClass();
|
|
||||||
AnnotationAttributes annotationAttributes = AnnotatedElementUtils
|
|
||||||
.getMergedAnnotationAttributes(testClass,
|
|
||||||
IntegrationTest.class.getName());
|
|
||||||
if (annotationAttributes != null) {
|
|
||||||
addPropertySourceProperties(testContext,
|
|
||||||
annotationAttributes.getStringArray("value"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addPropertySourceProperties(TestContext testContext,
|
|
||||||
String[] properties) {
|
|
||||||
try {
|
|
||||||
MergedContextConfiguration configuration = (MergedContextConfiguration) ReflectionTestUtils
|
|
||||||
.getField(testContext, "mergedContextConfiguration");
|
|
||||||
new MergedContextConfigurationProperties(configuration).add(properties);
|
|
||||||
}
|
|
||||||
catch (RuntimeException ex) {
|
|
||||||
throw ex;
|
|
||||||
}
|
|
||||||
catch (Exception ex) {
|
|
||||||
throw new IllegalStateException(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getOrder() {
|
|
||||||
return Ordered.HIGHEST_PRECEDENCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.springframework.test.context.MergedContextConfiguration;
|
|
||||||
import org.springframework.test.util.ReflectionTestUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides access to {@link MergedContextConfiguration} properties.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @deprecated as of 1.4 along with {@link IntegrationTestPropertiesListener}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
class MergedContextConfigurationProperties {
|
|
||||||
|
|
||||||
private final MergedContextConfiguration configuration;
|
|
||||||
|
|
||||||
MergedContextConfigurationProperties(MergedContextConfiguration configuration) {
|
|
||||||
this.configuration = configuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add(String[] properties, String... additional) {
|
|
||||||
Set<String> merged = new LinkedHashSet<String>(
|
|
||||||
(Arrays.asList(this.configuration.getPropertySourceProperties())));
|
|
||||||
merged.addAll(Arrays.asList(properties));
|
|
||||||
merged.addAll(Arrays.asList(additional));
|
|
||||||
addIntegrationTestProperty(merged);
|
|
||||||
ReflectionTestUtils.setField(this.configuration, "propertySourceProperties",
|
|
||||||
merged.toArray(new String[merged.size()]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add an "IntegrationTest" property to ensure that there is something to
|
|
||||||
* differentiate regular tests and {@code @IntegrationTest} tests. Without this
|
|
||||||
* property a cached context could be returned that hadn't started the embedded
|
|
||||||
* servlet container.
|
|
||||||
* @param propertySourceProperties the property source properties
|
|
||||||
*/
|
|
||||||
private void addIntegrationTestProperty(Set<String> propertySourceProperties) {
|
|
||||||
propertySourceProperties.add(WebIntegrationTest.class.getName() + "=true");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* JUnit {@code @Rule} to capture output from System.out and System.err.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @author Andy Wilkinson
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.test.rule.OutputCapture}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class OutputCapture extends org.springframework.boot.test.rule.OutputCapture {
|
|
||||||
}
|
|
@ -1,111 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Inherited;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import org.springframework.boot.test.context.SpringBootContextLoader;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
import org.springframework.context.ApplicationContextInitializer;
|
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class-level annotation that is used to determine how to load and configure an
|
|
||||||
* {@code ApplicationContext} for integration tests.
|
|
||||||
* <p>
|
|
||||||
* Similar to the standard {@link ContextConfiguration @ContextConfiguration} but uses
|
|
||||||
* Spring Boot's {@link SpringApplicationContextLoader}.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Sam Brannen
|
|
||||||
* @see SpringBootContextLoader
|
|
||||||
* @see ContextConfiguration
|
|
||||||
* @deprecated as of 1.4 in favor of {@link SpringBootTest} or direct use of
|
|
||||||
* {@link SpringBootContextLoader}.
|
|
||||||
*/
|
|
||||||
@ContextConfiguration(loader = SpringApplicationContextLoader.class)
|
|
||||||
@Documented
|
|
||||||
@Inherited
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Target(ElementType.TYPE)
|
|
||||||
@Deprecated
|
|
||||||
public @interface SpringApplicationConfiguration {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The context configuration classes.
|
|
||||||
* @see ContextConfiguration#classes()
|
|
||||||
* @return the context configuration classes
|
|
||||||
*/
|
|
||||||
@AliasFor("classes")
|
|
||||||
Class<?>[] value() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The context configuration locations.
|
|
||||||
* @see ContextConfiguration#locations()
|
|
||||||
* @return the context configuration locations
|
|
||||||
*/
|
|
||||||
@AliasFor(annotation = ContextConfiguration.class, attribute = "locations")
|
|
||||||
String[] locations() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The context configuration classes.
|
|
||||||
* @see ContextConfiguration#classes()
|
|
||||||
* @return the context configuration classes
|
|
||||||
*/
|
|
||||||
@AliasFor("value")
|
|
||||||
Class<?>[] classes() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The context configuration initializers.
|
|
||||||
* @see ContextConfiguration#initializers()
|
|
||||||
* @return the context configuration initializers
|
|
||||||
*/
|
|
||||||
@AliasFor(annotation = ContextConfiguration.class, attribute = "initializers")
|
|
||||||
Class<? extends ApplicationContextInitializer<? extends ConfigurableApplicationContext>>[] initializers() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Should context locations be inherited.
|
|
||||||
* @see ContextConfiguration#inheritLocations()
|
|
||||||
* @return {@code true} if context locations should be inherited
|
|
||||||
*/
|
|
||||||
@AliasFor(annotation = ContextConfiguration.class, attribute = "inheritLocations")
|
|
||||||
boolean inheritLocations() default true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Should initializers be inherited.
|
|
||||||
* @see ContextConfiguration#inheritInitializers()
|
|
||||||
* @return {@code true} if context initializers should be inherited
|
|
||||||
*/
|
|
||||||
@AliasFor(annotation = ContextConfiguration.class, attribute = "inheritInitializers")
|
|
||||||
boolean inheritInitializers() default true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the context hierarchy level.
|
|
||||||
* @see ContextConfiguration#name()
|
|
||||||
* @return the name of the context hierarchy level
|
|
||||||
*/
|
|
||||||
@AliasFor(annotation = ContextConfiguration.class, attribute = "name")
|
|
||||||
String name() default "";
|
|
||||||
|
|
||||||
}
|
|
@ -1,291 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.lang.annotation.Annotation;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.test.context.SpringBootContextLoader;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
import org.springframework.boot.web.support.ServletContextApplicationContextInitializer;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.ApplicationContextInitializer;
|
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
|
||||||
import org.springframework.core.SpringVersion;
|
|
||||||
import org.springframework.core.annotation.AnnotationUtils;
|
|
||||||
import org.springframework.core.env.ConfigurableEnvironment;
|
|
||||||
import org.springframework.core.env.MapPropertySource;
|
|
||||||
import org.springframework.core.env.StandardEnvironment;
|
|
||||||
import org.springframework.mock.web.MockServletContext;
|
|
||||||
import org.springframework.test.context.ContextConfigurationAttributes;
|
|
||||||
import org.springframework.test.context.ContextLoader;
|
|
||||||
import org.springframework.test.context.MergedContextConfiguration;
|
|
||||||
import org.springframework.test.context.support.AbstractContextLoader;
|
|
||||||
import org.springframework.test.context.support.AnnotationConfigContextLoaderUtils;
|
|
||||||
import org.springframework.test.context.support.TestPropertySourceUtils;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
import org.springframework.test.context.web.WebMergedContextConfiguration;
|
|
||||||
import org.springframework.util.Assert;
|
|
||||||
import org.springframework.util.ObjectUtils;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
import org.springframework.web.context.support.GenericWebApplicationContext;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ContextLoader} that can be used to test Spring Boot applications (those that
|
|
||||||
* normally startup using {@link SpringApplication}). Can be used to test non-web features
|
|
||||||
* (like a repository layer) or start a fully-configured embedded servlet container.
|
|
||||||
* <p>
|
|
||||||
* Use {@code @WebIntegrationTest} (or {@code @IntegrationTest} with
|
|
||||||
* {@code @WebAppConfiguration}) to indicate that you want to use a real servlet container
|
|
||||||
* or {@code @WebAppConfiguration} alone to use a {@link MockServletContext}.
|
|
||||||
* <p>
|
|
||||||
* If {@code @ActiveProfiles} are provided in the test class they will be used to create
|
|
||||||
* the application context.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @author Andy Wilkinson
|
|
||||||
* @see org.springframework.boot.test.context.SpringBootTest
|
|
||||||
* @see org.springframework.boot.test.IntegrationTest
|
|
||||||
* @see org.springframework.boot.test.WebIntegrationTest
|
|
||||||
* @deprecated as of 1.4 in favor of {@link SpringBootTest @SpringBootTest}
|
|
||||||
* {@link SpringBootContextLoader} can also be considered if absolutely necessary.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class SpringApplicationContextLoader extends AbstractContextLoader {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApplicationContext loadContext(final MergedContextConfiguration config)
|
|
||||||
throws Exception {
|
|
||||||
assertValidAnnotations(config.getTestClass());
|
|
||||||
SpringApplication application = getSpringApplication();
|
|
||||||
application.setMainApplicationClass(config.getTestClass());
|
|
||||||
application.setSources(getSources(config));
|
|
||||||
ConfigurableEnvironment environment = new StandardEnvironment();
|
|
||||||
if (!ObjectUtils.isEmpty(config.getActiveProfiles())) {
|
|
||||||
setActiveProfiles(environment, config.getActiveProfiles());
|
|
||||||
}
|
|
||||||
Map<String, Object> properties = getEnvironmentProperties(config);
|
|
||||||
addProperties(environment, properties);
|
|
||||||
application.setEnvironment(environment);
|
|
||||||
List<ApplicationContextInitializer<?>> initializers = getInitializers(config,
|
|
||||||
application);
|
|
||||||
if (config instanceof WebMergedContextConfiguration) {
|
|
||||||
new WebConfigurer().configure(config, application, initializers);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
application.setWebEnvironment(false);
|
|
||||||
}
|
|
||||||
application.setInitializers(initializers);
|
|
||||||
ConfigurableApplicationContext applicationContext = application.run();
|
|
||||||
return applicationContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertValidAnnotations(Class<?> testClass) {
|
|
||||||
boolean hasWebAppConfiguration = AnnotationUtils.findAnnotation(testClass,
|
|
||||||
WebAppConfiguration.class) != null;
|
|
||||||
boolean hasWebIntegrationTest = AnnotationUtils.findAnnotation(testClass,
|
|
||||||
WebIntegrationTest.class) != null;
|
|
||||||
if (hasWebAppConfiguration && hasWebIntegrationTest) {
|
|
||||||
throw new IllegalStateException("@WebIntegrationTest and "
|
|
||||||
+ "@WebAppConfiguration cannot be used together");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds new {@link org.springframework.boot.SpringApplication} instance. You can
|
|
||||||
* override this method to add custom behavior
|
|
||||||
* @return {@link org.springframework.boot.SpringApplication} instance
|
|
||||||
*/
|
|
||||||
protected SpringApplication getSpringApplication() {
|
|
||||||
return new SpringApplication();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Set<Object> getSources(MergedContextConfiguration mergedConfig) {
|
|
||||||
Set<Object> sources = new LinkedHashSet<Object>();
|
|
||||||
sources.addAll(Arrays.asList(mergedConfig.getClasses()));
|
|
||||||
sources.addAll(Arrays.asList(mergedConfig.getLocations()));
|
|
||||||
Assert.state(!sources.isEmpty(), "No configuration classes "
|
|
||||||
+ "or locations found in @SpringApplicationConfiguration. "
|
|
||||||
+ "For default configuration detection to work you need "
|
|
||||||
+ "Spring 4.0.3 or better (found " + SpringVersion.getVersion() + ").");
|
|
||||||
return sources;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setActiveProfiles(ConfigurableEnvironment environment,
|
|
||||||
String[] profiles) {
|
|
||||||
EnvironmentTestUtils.addEnvironment(environment, "spring.profiles.active="
|
|
||||||
+ StringUtils.arrayToCommaDelimitedString(profiles));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Map<String, Object> getEnvironmentProperties(
|
|
||||||
MergedContextConfiguration config) {
|
|
||||||
Map<String, Object> properties = new LinkedHashMap<String, Object>();
|
|
||||||
// JMX bean names will clash if the same bean is used in multiple contexts
|
|
||||||
disableJmx(properties);
|
|
||||||
properties.putAll(TestPropertySourceUtils
|
|
||||||
.convertInlinedPropertiesToMap(config.getPropertySourceProperties()));
|
|
||||||
if (!TestAnnotations.isIntegrationTest(config)) {
|
|
||||||
properties.putAll(getDefaultEnvironmentProperties());
|
|
||||||
}
|
|
||||||
return properties;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableJmx(Map<String, Object> properties) {
|
|
||||||
properties.put("spring.jmx.enabled", "false");
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map<String, String> getDefaultEnvironmentProperties() {
|
|
||||||
return Collections.singletonMap("server.port", "-1");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addProperties(ConfigurableEnvironment environment,
|
|
||||||
Map<String, Object> properties) {
|
|
||||||
// @IntegrationTest properties go before external configuration and after system
|
|
||||||
environment.getPropertySources().addAfter(
|
|
||||||
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME,
|
|
||||||
new MapPropertySource("integrationTest", properties));
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<ApplicationContextInitializer<?>> getInitializers(
|
|
||||||
MergedContextConfiguration mergedConfig, SpringApplication application) {
|
|
||||||
List<ApplicationContextInitializer<?>> initializers = new ArrayList<ApplicationContextInitializer<?>>();
|
|
||||||
initializers.add(new PropertySourceLocationsInitializer(
|
|
||||||
mergedConfig.getPropertySourceLocations()));
|
|
||||||
initializers.addAll(application.getInitializers());
|
|
||||||
for (Class<? extends ApplicationContextInitializer<?>> initializerClass : mergedConfig
|
|
||||||
.getContextInitializerClasses()) {
|
|
||||||
initializers.add(BeanUtils.instantiate(initializerClass));
|
|
||||||
}
|
|
||||||
return initializers;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void processContextConfiguration(
|
|
||||||
ContextConfigurationAttributes configAttributes) {
|
|
||||||
super.processContextConfiguration(configAttributes);
|
|
||||||
if (!configAttributes.hasResources()) {
|
|
||||||
Class<?>[] defaultConfigClasses = detectDefaultConfigurationClasses(
|
|
||||||
configAttributes.getDeclaringClass());
|
|
||||||
configAttributes.setClasses(defaultConfigClasses);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Detect the default configuration classes for the supplied test class. By default
|
|
||||||
* simply delegates to
|
|
||||||
* {@link AnnotationConfigContextLoaderUtils#detectDefaultConfigurationClasses} .
|
|
||||||
* @param declaringClass the test class that declared {@code @ContextConfiguration}
|
|
||||||
* @return an array of default configuration classes, potentially empty but never
|
|
||||||
* {@code null}
|
|
||||||
* @see AnnotationConfigContextLoaderUtils
|
|
||||||
*/
|
|
||||||
protected Class<?>[] detectDefaultConfigurationClasses(Class<?> declaringClass) {
|
|
||||||
return AnnotationConfigContextLoaderUtils
|
|
||||||
.detectDefaultConfigurationClasses(declaringClass);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApplicationContext loadContext(String... locations) throws Exception {
|
|
||||||
throw new UnsupportedOperationException("SpringApplicationContextLoader "
|
|
||||||
+ "does not support the loadContext(String...) method");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String[] getResourceSuffixes() {
|
|
||||||
return new String[] { "-context.xml", "Context.groovy" };
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String getResourceSuffix() {
|
|
||||||
throw new IllegalStateException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Inner class to configure {@link WebMergedContextConfiguration}.
|
|
||||||
*/
|
|
||||||
private static class WebConfigurer {
|
|
||||||
|
|
||||||
private static final Class<GenericWebApplicationContext> WEB_CONTEXT_CLASS = GenericWebApplicationContext.class;
|
|
||||||
|
|
||||||
void configure(MergedContextConfiguration configuration,
|
|
||||||
SpringApplication application,
|
|
||||||
List<ApplicationContextInitializer<?>> initializers) {
|
|
||||||
if (!TestAnnotations.isIntegrationTest(configuration)) {
|
|
||||||
WebMergedContextConfiguration webConfiguration = (WebMergedContextConfiguration) configuration;
|
|
||||||
addMockServletContext(initializers, webConfiguration);
|
|
||||||
application.setApplicationContextClass(WEB_CONTEXT_CLASS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addMockServletContext(
|
|
||||||
List<ApplicationContextInitializer<?>> initializers,
|
|
||||||
WebMergedContextConfiguration webConfiguration) {
|
|
||||||
SpringBootMockServletContext servletContext = new SpringBootMockServletContext(
|
|
||||||
webConfiguration.getResourceBasePath());
|
|
||||||
initializers.add(0, new ServletContextApplicationContextInitializer(
|
|
||||||
servletContext, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ApplicationContextInitializer} to setup test property source locations.
|
|
||||||
*/
|
|
||||||
private static class PropertySourceLocationsInitializer
|
|
||||||
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
|
|
||||||
|
|
||||||
private final String[] propertySourceLocations;
|
|
||||||
|
|
||||||
PropertySourceLocationsInitializer(String[] propertySourceLocations) {
|
|
||||||
this.propertySourceLocations = propertySourceLocations;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void initialize(ConfigurableApplicationContext applicationContext) {
|
|
||||||
TestPropertySourceUtils.addPropertiesFilesToEnvironment(applicationContext,
|
|
||||||
this.propertySourceLocations);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class TestAnnotations {
|
|
||||||
|
|
||||||
public static boolean isIntegrationTest(
|
|
||||||
MergedContextConfiguration configuration) {
|
|
||||||
return (hasAnnotation(configuration, IntegrationTest.class)
|
|
||||||
|| hasAnnotation(configuration, WebIntegrationTest.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean hasAnnotation(MergedContextConfiguration configuration,
|
|
||||||
Class<? extends Annotation> annotation) {
|
|
||||||
return (AnnotationUtils.findAnnotation(configuration.getTestClass(),
|
|
||||||
annotation) != null);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.springframework.core.io.ResourceLoader;
|
|
||||||
import org.springframework.mock.web.MockServletContext;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link MockServletContext} implementation for Spring Boot. Respects well-known Spring
|
|
||||||
* Boot resource locations and uses an empty directory for "/" if no locations can be
|
|
||||||
* found.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.test.mock.web.SpringBootMockServletContext}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class SpringBootMockServletContext
|
|
||||||
extends org.springframework.boot.test.mock.web.SpringBootMockServletContext {
|
|
||||||
|
|
||||||
public SpringBootMockServletContext(String resourceBasePath) {
|
|
||||||
super(resourceBasePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SpringBootMockServletContext(String resourceBasePath,
|
|
||||||
ResourceLoader resourceLoader) {
|
|
||||||
super(resourceBasePath, resourceLoader);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,149 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.URI;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.apache.http.client.config.CookieSpecs;
|
|
||||||
import org.apache.http.client.config.RequestConfig;
|
|
||||||
import org.apache.http.client.config.RequestConfig.Builder;
|
|
||||||
import org.apache.http.client.protocol.HttpClientContext;
|
|
||||||
import org.apache.http.protocol.HttpContext;
|
|
||||||
|
|
||||||
import org.springframework.http.HttpMethod;
|
|
||||||
import org.springframework.http.client.ClientHttpRequestInterceptor;
|
|
||||||
import org.springframework.http.client.ClientHttpResponse;
|
|
||||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
|
||||||
import org.springframework.http.client.InterceptingClientHttpRequestFactory;
|
|
||||||
import org.springframework.http.client.support.BasicAuthorizationInterceptor;
|
|
||||||
import org.springframework.util.ClassUtils;
|
|
||||||
import org.springframework.web.client.DefaultResponseErrorHandler;
|
|
||||||
import org.springframework.web.client.RestTemplate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convenient subclass of {@link RestTemplate} that is suitable for integration tests.
|
|
||||||
* They are fault tolerant, and optionally can carry Basic authentication headers. If
|
|
||||||
* Apache Http Client 4.3.2 or better is available (recommended) it will be used as the
|
|
||||||
* client, and by default configured to ignore cookies and redirects.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.test.web.client.TestRestTemplate}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class TestRestTemplate extends RestTemplate {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link TestRestTemplate} instance.
|
|
||||||
* @param httpClientOptions client options to use if the Apache HTTP Client is used
|
|
||||||
*/
|
|
||||||
public TestRestTemplate(HttpClientOption... httpClientOptions) {
|
|
||||||
this(null, null, httpClientOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link TestRestTemplate} instance with the specified credentials.
|
|
||||||
* @param username the username to use (or {@code null})
|
|
||||||
* @param password the password (or {@code null})
|
|
||||||
* @param httpClientOptions client options to use if the Apache HTTP Client is used
|
|
||||||
*/
|
|
||||||
public TestRestTemplate(String username, String password,
|
|
||||||
HttpClientOption... httpClientOptions) {
|
|
||||||
if (ClassUtils.isPresent("org.apache.http.client.config.RequestConfig", null)) {
|
|
||||||
setRequestFactory(
|
|
||||||
new CustomHttpComponentsClientHttpRequestFactory(httpClientOptions));
|
|
||||||
}
|
|
||||||
addAuthentication(username, password);
|
|
||||||
setErrorHandler(new DefaultResponseErrorHandler() {
|
|
||||||
@Override
|
|
||||||
public void handleError(ClientHttpResponse response) throws IOException {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addAuthentication(String username, String password) {
|
|
||||||
if (username == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
List<ClientHttpRequestInterceptor> interceptors = Collections
|
|
||||||
.<ClientHttpRequestInterceptor>singletonList(
|
|
||||||
new BasicAuthorizationInterceptor(username, password));
|
|
||||||
setRequestFactory(new InterceptingClientHttpRequestFactory(getRequestFactory(),
|
|
||||||
interceptors));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Options used to customize the Apache Http Client if it is used.
|
|
||||||
*/
|
|
||||||
public enum HttpClientOption {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable cookies.
|
|
||||||
*/
|
|
||||||
ENABLE_COOKIES,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable redirects.
|
|
||||||
*/
|
|
||||||
ENABLE_REDIRECTS
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link HttpComponentsClientHttpRequestFactory} to apply customizations.
|
|
||||||
*/
|
|
||||||
protected static class CustomHttpComponentsClientHttpRequestFactory
|
|
||||||
extends HttpComponentsClientHttpRequestFactory {
|
|
||||||
|
|
||||||
private final String cookieSpec;
|
|
||||||
|
|
||||||
private final boolean enableRedirects;
|
|
||||||
|
|
||||||
public CustomHttpComponentsClientHttpRequestFactory(
|
|
||||||
HttpClientOption[] httpClientOptions) {
|
|
||||||
Set<HttpClientOption> options = new HashSet<TestRestTemplate.HttpClientOption>(
|
|
||||||
Arrays.asList(httpClientOptions));
|
|
||||||
this.cookieSpec = (options.contains(HttpClientOption.ENABLE_COOKIES)
|
|
||||||
? CookieSpecs.STANDARD : CookieSpecs.IGNORE_COOKIES);
|
|
||||||
this.enableRedirects = options.contains(HttpClientOption.ENABLE_REDIRECTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected HttpContext createHttpContext(HttpMethod httpMethod, URI uri) {
|
|
||||||
HttpClientContext context = HttpClientContext.create();
|
|
||||||
context.setRequestConfig(getRequestConfig());
|
|
||||||
return context;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected RequestConfig getRequestConfig() {
|
|
||||||
Builder builder = RequestConfig.custom().setCookieSpec(this.cookieSpec)
|
|
||||||
.setAuthenticationEnabled(false)
|
|
||||||
.setRedirectsEnabled(this.enableRedirects);
|
|
||||||
return builder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.springframework.core.annotation.AnnotationUtils;
|
|
||||||
import org.springframework.test.context.ContextLoader;
|
|
||||||
import org.springframework.test.context.MergedContextConfiguration;
|
|
||||||
import org.springframework.test.context.TestContextBootstrapper;
|
|
||||||
import org.springframework.test.context.support.DefaultTestContextBootstrapper;
|
|
||||||
import org.springframework.test.context.web.WebDelegatingSmartContextLoader;
|
|
||||||
import org.springframework.test.context.web.WebMergedContextConfiguration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link TestContextBootstrapper} for Spring Boot web integration tests.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.2.1
|
|
||||||
* @deprecated as of 1.4 along with {@link WebIntegrationTest}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
class WebAppIntegrationTestContextBootstrapper extends DefaultTestContextBootstrapper {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Class<? extends ContextLoader> getDefaultContextLoaderClass(
|
|
||||||
Class<?> testClass) {
|
|
||||||
if (AnnotationUtils.findAnnotation(testClass, WebIntegrationTest.class) != null) {
|
|
||||||
return WebDelegatingSmartContextLoader.class;
|
|
||||||
}
|
|
||||||
return super.getDefaultContextLoaderClass(testClass);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected MergedContextConfiguration processMergedContextConfiguration(
|
|
||||||
MergedContextConfiguration mergedConfig) {
|
|
||||||
WebIntegrationTest annotation = AnnotationUtils
|
|
||||||
.findAnnotation(mergedConfig.getTestClass(), WebIntegrationTest.class);
|
|
||||||
if (annotation != null) {
|
|
||||||
mergedConfig = new WebMergedContextConfiguration(mergedConfig, null);
|
|
||||||
MergedContextConfigurationProperties properties = new MergedContextConfigurationProperties(
|
|
||||||
mergedConfig);
|
|
||||||
if (annotation.randomPort()) {
|
|
||||||
properties.add(annotation.value(), "server.port:0");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
properties.add(annotation.value());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return mergedConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Inherited;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import org.springframework.boot.context.embedded.LocalServerPort;
|
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
import org.springframework.test.context.BootstrapWith;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test class annotation signifying that the tests are "web integration tests" and
|
|
||||||
* therefore require full startup in the same way as a production application (listening
|
|
||||||
* on normal ports). Normally used in conjunction with
|
|
||||||
* {@code @SpringApplicationConfiguration},
|
|
||||||
* <p>
|
|
||||||
* This annotation can be used as an alternative to {@code @IntegrationTest} and
|
|
||||||
* {@code @WebAppConfiguration}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.2.1
|
|
||||||
* @see IntegrationTest
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.test.context.SpringBootTest} with
|
|
||||||
* {@code webEnvironment=RANDOM_PORT} or {@code webEnvironment=DEFINED_PORT}.
|
|
||||||
*/
|
|
||||||
@Documented
|
|
||||||
@Inherited
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Target(ElementType.TYPE)
|
|
||||||
@BootstrapWith(WebAppIntegrationTestContextBootstrapper.class)
|
|
||||||
@Deprecated
|
|
||||||
public @interface WebIntegrationTest {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Properties in form {@literal key=value} that should be added to the Spring
|
|
||||||
* {@link Environment} before the test runs.
|
|
||||||
* @return properties to add to the context
|
|
||||||
*/
|
|
||||||
String[] value() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convenience attribute that can be used to set a {@code server.port=0}
|
|
||||||
* {@link Environment} property which usually triggers listening on a random port.
|
|
||||||
* Often used in conjunction with a {@link LocalServerPort} injected field on the
|
|
||||||
* test.
|
|
||||||
* @return if a random port should be used
|
|
||||||
*/
|
|
||||||
boolean randomPort() default false;
|
|
||||||
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Classes and utilities that are useful when unit-testing Spring Boot applications.
|
|
||||||
*/
|
|
||||||
package org.springframework.boot.test;
|
|
@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link ConfigFileApplicationContextInitializer}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@ContextConfiguration(classes = ConfigFileApplicationContextInitializerTests.Config.class, initializers = ConfigFileApplicationContextInitializer.class)
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class ConfigFileApplicationContextInitializerTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private Environment environment;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void initializerPopulatesEnvironment() {
|
|
||||||
assertThat(this.environment.getProperty("foo")).isEqualTo("bucket");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public static class Config {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,96 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import org.springframework.core.env.ConfigurableEnvironment;
|
|
||||||
import org.springframework.core.env.MapPropertySource;
|
|
||||||
import org.springframework.core.env.StandardEnvironment;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link EnvironmentTestUtils}.
|
|
||||||
*
|
|
||||||
* @author Stephane Nicoll
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class EnvironmentTestUtilsTests {
|
|
||||||
|
|
||||||
private final ConfigurableEnvironment environment = new StandardEnvironment();
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addSimplePairEqual() {
|
|
||||||
testAddSimplePair("my.foo", "bar", "=");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addSimplePairColon() {
|
|
||||||
testAddSimplePair("my.foo", "bar", ":");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addSimplePairEqualWithEqualInValue() {
|
|
||||||
testAddSimplePair("my.foo", "b=ar", "=");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addSimplePairEqualWithColonInValue() {
|
|
||||||
testAddSimplePair("my.foo", "b:ar", "=");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addSimplePairColonWithColonInValue() {
|
|
||||||
testAddSimplePair("my.foo", "b:ar", ":");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addSimplePairColonWithEqualInValue() {
|
|
||||||
testAddSimplePair("my.foo", "b=ar", ":");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addPairNoValue() {
|
|
||||||
String propertyName = "my.foo+bar";
|
|
||||||
assertThat(this.environment.containsProperty(propertyName)).isFalse();
|
|
||||||
EnvironmentTestUtils.addEnvironment(this.environment, propertyName);
|
|
||||||
assertThat(this.environment.containsProperty(propertyName)).isTrue();
|
|
||||||
assertThat(this.environment.getProperty(propertyName)).isEqualTo("");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void testAddSimplePair(String key, String value, String delimiter) {
|
|
||||||
assertThat(this.environment.containsProperty(key)).isFalse();
|
|
||||||
EnvironmentTestUtils.addEnvironment(this.environment, key + delimiter + value);
|
|
||||||
assertThat(this.environment.getProperty(key)).isEqualTo(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testConfigHasHigherPrecedence() {
|
|
||||||
Map<String, Object> map = new HashMap<String, Object>();
|
|
||||||
map.put("my.foo", "bar");
|
|
||||||
MapPropertySource source = new MapPropertySource("sample", map);
|
|
||||||
this.environment.getPropertySources().addFirst(source);
|
|
||||||
assertThat(this.environment.getProperty("my.foo")).isEqualTo("bar");
|
|
||||||
EnvironmentTestUtils.addEnvironment(this.environment, "my.foo=bar2");
|
|
||||||
assertThat(this.environment.getProperty("my.foo")).isEqualTo("bar2");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.ActiveProfiles;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link SpringApplicationContextLoader} with active profiles. See gh-1469.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration
|
|
||||||
@IntegrationTest("spring.config.name=enableother")
|
|
||||||
@ActiveProfiles("override")
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class SpringApplicationConfigurationActiveProfileTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ApplicationContext context;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void profiles() throws Exception {
|
|
||||||
assertThat(this.context.getEnvironment().getActiveProfiles())
|
|
||||||
.containsExactly("override");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
protected static class Config {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link SpringApplicationContextLoader} (detectDefaultConfigurationClasses).
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class SpringApplicationConfigurationDefaultConfigurationTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private Config config;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void nestedConfigClasses() {
|
|
||||||
assertThat(this.config).isNotNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
protected static class Config {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link SpringApplicationContextLoader} (detectDefaultConfigurationClasses).
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration(locations = "classpath:test.groovy")
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class SpringApplicationConfigurationGroovyConfigurationTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private String foo;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void groovyConfigLoaded() {
|
|
||||||
assertThat(this.foo).isNotNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link SpringApplicationContextLoader} finding groovy config.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class SpringApplicationConfigurationGroovyConventionConfigurationTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private String foo;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void groovyConfigLoaded() {
|
|
||||||
assertThat(this.foo).isEqualTo("World");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.boot.test.SpringApplicationConfigurationJmxTests.Config;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for disabling JMX by default
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration(Config.class)
|
|
||||||
@IntegrationTest
|
|
||||||
@Deprecated
|
|
||||||
public class SpringApplicationConfigurationJmxTests {
|
|
||||||
|
|
||||||
@Value("${spring.jmx.enabled}")
|
|
||||||
private boolean jmx;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void disabledByDefault() {
|
|
||||||
assertThat(this.jmx).isFalse();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
protected static class Config {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
|
|
||||||
return new PropertySourcesPlaceholderConfigurer();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.test.SpringApplicationConfigurationMixedConfigurationTests.Config;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link SpringApplicationContextLoader}.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration(classes = Config.class, locations = "classpath:test.groovy")
|
|
||||||
@Deprecated
|
|
||||||
public class SpringApplicationConfigurationMixedConfigurationTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private String foo;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private Config config;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void mixedConfigClasses() {
|
|
||||||
assertThat(this.foo).isNotNull();
|
|
||||||
assertThat(this.config).isNotNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
protected static class Config {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link SpringApplicationContextLoader} finding XML config.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class SpringApplicationConfigurationXmlConventionConfigurationTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private String foo;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void xmlConfigLoaded() {
|
|
||||||
assertThat(this.foo).isEqualTo("World");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,159 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.MergedContextConfiguration;
|
|
||||||
import org.springframework.test.context.TestContext;
|
|
||||||
import org.springframework.test.context.TestContextManager;
|
|
||||||
import org.springframework.test.context.support.TestPropertySourceUtils;
|
|
||||||
import org.springframework.test.util.ReflectionTestUtils;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link SpringApplicationContextLoader}
|
|
||||||
*
|
|
||||||
* @author Stephane Nicoll
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class SpringApplicationContextLoaderTests {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void environmentPropertiesSimple() throws Exception {
|
|
||||||
Map<String, Object> config = getEnvironmentProperties(SimpleConfig.class);
|
|
||||||
assertKey(config, "key", "myValue");
|
|
||||||
assertKey(config, "anotherKey", "anotherValue");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void environmentPropertiesOverrideDefaults() throws Exception {
|
|
||||||
Map<String, Object> config = getEnvironmentProperties(OverrideConfig.class);
|
|
||||||
assertKey(config, "server.port", "2345");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void environmentPropertiesAppend() throws Exception {
|
|
||||||
Map<String, Object> config = getEnvironmentProperties(AppendConfig.class);
|
|
||||||
assertKey(config, "key", "myValue");
|
|
||||||
assertKey(config, "otherKey", "otherValue");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void environmentPropertiesSeparatorInValue() throws Exception {
|
|
||||||
Map<String, Object> config = getEnvironmentProperties(SameSeparatorInValue.class);
|
|
||||||
assertKey(config, "key", "my=Value");
|
|
||||||
assertKey(config, "anotherKey", "another:Value");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void environmentPropertiesAnotherSeparatorInValue() throws Exception {
|
|
||||||
Map<String, Object> config = getEnvironmentProperties(
|
|
||||||
AnotherSeparatorInValue.class);
|
|
||||||
assertKey(config, "key", "my:Value");
|
|
||||||
assertKey(config, "anotherKey", "another=Value");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Ignore
|
|
||||||
public void environmentPropertiesNewLineInValue() throws Exception {
|
|
||||||
// gh-4384
|
|
||||||
Map<String, Object> config = getEnvironmentProperties(NewLineInValue.class);
|
|
||||||
assertKey(config, "key", "myValue");
|
|
||||||
assertKey(config, "variables", "foo=FOO\n bar=BAR");
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map<String, Object> getEnvironmentProperties(Class<?> testClass)
|
|
||||||
throws Exception {
|
|
||||||
TestContext context = new ExposedTestContextManager(testClass)
|
|
||||||
.getExposedTestContext();
|
|
||||||
new IntegrationTestPropertiesListener().prepareTestInstance(context);
|
|
||||||
MergedContextConfiguration config = (MergedContextConfiguration) ReflectionTestUtils
|
|
||||||
.getField(context, "mergedContextConfiguration");
|
|
||||||
return TestPropertySourceUtils
|
|
||||||
.convertInlinedPropertiesToMap(config.getPropertySourceProperties());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertKey(Map<String, Object> actual, String key, Object value) {
|
|
||||||
assertThat(actual.containsKey(key)).as("Key '" + key + "' not found").isTrue();
|
|
||||||
assertThat(actual.get(key)).isEqualTo(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@IntegrationTest({ "key=myValue", "anotherKey:anotherValue" })
|
|
||||||
@ContextConfiguration(classes = Config.class)
|
|
||||||
static class SimpleConfig {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@IntegrationTest({ "server.port=2345" })
|
|
||||||
@ContextConfiguration(classes = Config.class)
|
|
||||||
static class OverrideConfig {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@IntegrationTest({ "key=myValue", "otherKey=otherValue" })
|
|
||||||
@ContextConfiguration(classes = Config.class)
|
|
||||||
static class AppendConfig {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@IntegrationTest({ "key=my=Value", "anotherKey:another:Value" })
|
|
||||||
@ContextConfiguration(classes = Config.class)
|
|
||||||
static class SameSeparatorInValue {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@IntegrationTest({ "key=my:Value", "anotherKey:another=Value" })
|
|
||||||
@ContextConfiguration(classes = Config.class)
|
|
||||||
static class AnotherSeparatorInValue {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@IntegrationTest({ "key=myValue", "variables=foo=FOO\n bar=BAR" })
|
|
||||||
@ContextConfiguration(classes = Config.class)
|
|
||||||
static class NewLineInValue {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
static class Config {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link TestContextManager} which exposes the {@link TestContext}.
|
|
||||||
*/
|
|
||||||
private static class ExposedTestContextManager extends TestContextManager {
|
|
||||||
|
|
||||||
ExposedTestContextManager(Class<?> testClass) {
|
|
||||||
super(testClass);
|
|
||||||
}
|
|
||||||
|
|
||||||
public final TestContext getExposedTestContext() {
|
|
||||||
return super.getTestContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,83 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.boot.test.SpringApplicationIntegrationTestPropertyLocationTests.MoreConfig;
|
|
||||||
import org.springframework.boot.test.SpringApplicationIntegrationTestTests.Config;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.TestPropertySource;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link IntegrationTest} with {@link TestPropertySource} locations.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration({ Config.class, MoreConfig.class })
|
|
||||||
@WebAppConfiguration
|
|
||||||
@IntegrationTest({ "server.port=0", "value1=123" })
|
|
||||||
@TestPropertySource(properties = "value2=456", locations = "classpath:/test-property-source-annotation.properties")
|
|
||||||
@Deprecated
|
|
||||||
public class SpringApplicationIntegrationTestPropertyLocationTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private Environment environment;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void loadedProperties() throws Exception {
|
|
||||||
assertThat(this.environment.getProperty("value1")).isEqualTo("123");
|
|
||||||
assertThat(this.environment.getProperty("value2")).isEqualTo("456");
|
|
||||||
assertThat(this.environment.getProperty("property-source-location"))
|
|
||||||
.isEqualTo("baz");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
static class MoreConfig {
|
|
||||||
|
|
||||||
@Value("${value1}")
|
|
||||||
private String value1;
|
|
||||||
|
|
||||||
@Value("${value2}")
|
|
||||||
private String value2;
|
|
||||||
|
|
||||||
@Value("${property-source-location}")
|
|
||||||
private String annotationReferenced;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
void checkValues() {
|
|
||||||
assertThat(this.value1).isEqualTo("123");
|
|
||||||
assertThat(this.value2).isEqualTo("456");
|
|
||||||
assertThat(this.annotationReferenced).isEqualTo("baz");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,122 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
|
|
||||||
import org.springframework.boot.context.embedded.LocalServerPort;
|
|
||||||
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
|
|
||||||
import org.springframework.boot.test.SpringApplicationIntegrationTestTests.Config;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import org.springframework.web.client.RestTemplate;
|
|
||||||
import org.springframework.web.context.WebApplicationContext;
|
|
||||||
import org.springframework.web.context.support.WebApplicationContextUtils;
|
|
||||||
import org.springframework.web.servlet.DispatcherServlet;
|
|
||||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link IntegrationTest}
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration(Config.class)
|
|
||||||
@WebAppConfiguration
|
|
||||||
@IntegrationTest({ "server.port=0", "value=123" })
|
|
||||||
@Deprecated
|
|
||||||
public class SpringApplicationIntegrationTestTests {
|
|
||||||
|
|
||||||
@LocalServerPort
|
|
||||||
private int port = 0;
|
|
||||||
|
|
||||||
@Value("${value}")
|
|
||||||
private int value = 0;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private WebApplicationContext context;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ServletContext servletContext;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void runAndTestHttpEndpoint() {
|
|
||||||
assertThat(this.port).isNotEqualTo(8080).isNotEqualTo(0);
|
|
||||||
String body = new RestTemplate()
|
|
||||||
.getForObject("http://localhost:" + this.port + "/", String.class);
|
|
||||||
assertThat(body).isEqualTo("Hello World");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void annotationAttributesOverridePropertiesFile() throws Exception {
|
|
||||||
assertThat(this.value).isEqualTo(123);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void validateWebApplicationContextIsSet() {
|
|
||||||
assertThat(this.context).isSameAs(
|
|
||||||
WebApplicationContextUtils.getWebApplicationContext(this.servletContext));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableWebMvc
|
|
||||||
@RestController
|
|
||||||
protected static class Config {
|
|
||||||
|
|
||||||
@Value("${server.port:8080}")
|
|
||||||
private int port = 8080;
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public DispatcherServlet dispatcherServlet() {
|
|
||||||
return new DispatcherServlet();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public EmbeddedServletContainerFactory embeddedServletContainer() {
|
|
||||||
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
|
|
||||||
factory.setPort(this.port);
|
|
||||||
return factory;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public static PropertySourcesPlaceholderConfigurer propertyPlaceholder() {
|
|
||||||
return new PropertySourcesPlaceholderConfigurer();
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequestMapping("/")
|
|
||||||
public String home() {
|
|
||||||
return "Hello World";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,93 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.test.SpringApplicationMockMvcTests.Config;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
import org.springframework.test.web.servlet.MockMvc;
|
|
||||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import org.springframework.web.context.WebApplicationContext;
|
|
||||||
import org.springframework.web.context.support.WebApplicationContextUtils;
|
|
||||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link WebAppConfiguration} with {@link MockMvc}.
|
|
||||||
*
|
|
||||||
* @author Stephane Nicoll
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration(classes = Config.class)
|
|
||||||
@WebAppConfiguration
|
|
||||||
@Deprecated
|
|
||||||
public class SpringApplicationMockMvcTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private WebApplicationContext context;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ServletContext servletContext;
|
|
||||||
|
|
||||||
private MockMvc mvc;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUp() {
|
|
||||||
this.mvc = MockMvcBuilders.webAppContextSetup(this.context).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMockHttpEndpoint() throws Exception {
|
|
||||||
this.mvc.perform(get("/")).andExpect(status().isOk())
|
|
||||||
.andExpect(content().string("Hello World"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void validateWebApplicationContextIsSet() {
|
|
||||||
assertThat(this.context).isSameAs(
|
|
||||||
WebApplicationContextUtils.getWebApplicationContext(this.servletContext));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableWebMvc
|
|
||||||
@RestController
|
|
||||||
protected static class Config {
|
|
||||||
|
|
||||||
@RequestMapping("/")
|
|
||||||
public String home() {
|
|
||||||
return "Hello World";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2015 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.test.SpringApplicationMockServletTests.Config;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
import org.springframework.web.context.WebApplicationContext;
|
|
||||||
import org.springframework.web.context.support.WebApplicationContextUtils;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link WebAppConfiguration} using {@link SpringApplicationContextLoader} with
|
|
||||||
* a plain mock Servlet environment.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @author Andy Wilkinson
|
|
||||||
*/
|
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
|
||||||
@ContextConfiguration(classes = Config.class, loader = SpringApplicationContextLoader.class)
|
|
||||||
@WebAppConfiguration
|
|
||||||
@Deprecated
|
|
||||||
public class SpringApplicationMockServletTests {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private WebApplicationContext context;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ServletContext servletContext;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void webApplicationContextIsSetOnServletContext() {
|
|
||||||
assertThat(this.context).isSameAs(
|
|
||||||
WebApplicationContextUtils.getWebApplicationContext(this.servletContext));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
protected static class Config {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,120 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
|
|
||||||
import org.springframework.boot.context.embedded.LocalServerPort;
|
|
||||||
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
|
|
||||||
import org.springframework.boot.test.SpringApplicationWebIntegrationTestTests.Config;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import org.springframework.web.client.RestTemplate;
|
|
||||||
import org.springframework.web.context.WebApplicationContext;
|
|
||||||
import org.springframework.web.context.support.WebApplicationContextUtils;
|
|
||||||
import org.springframework.web.servlet.DispatcherServlet;
|
|
||||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link IntegrationTest}
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration(Config.class)
|
|
||||||
@WebIntegrationTest({ "server.port=0", "value=123" })
|
|
||||||
public class SpringApplicationWebIntegrationTestTests {
|
|
||||||
|
|
||||||
@LocalServerPort
|
|
||||||
private int port = 0;
|
|
||||||
|
|
||||||
@Value("${value}")
|
|
||||||
private int value = 0;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private WebApplicationContext context;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ServletContext servletContext;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void runAndTestHttpEndpoint() {
|
|
||||||
assertThat(this.port).isNotEqualTo(8080).isNotEqualTo(0);
|
|
||||||
String body = new RestTemplate()
|
|
||||||
.getForObject("http://localhost:" + this.port + "/", String.class);
|
|
||||||
assertThat(body).isEqualTo("Hello World");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void annotationAttributesOverridePropertiesFile() throws Exception {
|
|
||||||
assertThat(this.value).isEqualTo(123);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void validateWebApplicationContextIsSet() {
|
|
||||||
assertThat(this.context).isSameAs(
|
|
||||||
WebApplicationContextUtils.getWebApplicationContext(this.servletContext));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableWebMvc
|
|
||||||
@RestController
|
|
||||||
protected static class Config {
|
|
||||||
|
|
||||||
@Value("${server.port:8080}")
|
|
||||||
private int port = 8080;
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public DispatcherServlet dispatcherServlet() {
|
|
||||||
return new DispatcherServlet();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public EmbeddedServletContainerFactory embeddedServletContainer() {
|
|
||||||
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
|
|
||||||
factory.setPort(this.port);
|
|
||||||
return factory;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public static PropertySourcesPlaceholderConfigurer propertyPlaceholder() {
|
|
||||||
return new PropertySourcesPlaceholderConfigurer();
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequestMapping("/")
|
|
||||||
public String home() {
|
|
||||||
return "Hello World";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,105 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FilenameFilter;
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLDecoder;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.test.annotation.DirtiesContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
import org.springframework.web.context.ServletContextAware;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
import static org.hamcrest.Matchers.nullValue;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link SpringBootMockServletContext}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
*/
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@DirtiesContext
|
|
||||||
@SpringApplicationConfiguration(SpringBootMockServletContextTests.Config.class)
|
|
||||||
@WebAppConfiguration("src/test/webapp")
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class SpringBootMockServletContextTests implements ServletContextAware {
|
|
||||||
|
|
||||||
private ServletContext servletContext;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setServletContext(ServletContext servletContext) {
|
|
||||||
this.servletContext = servletContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getResourceLocation() throws Exception {
|
|
||||||
testResource("/inwebapp", "src/test/webapp");
|
|
||||||
testResource("/inmetainfresources", "/META-INF/resources");
|
|
||||||
testResource("/inresources", "/resources");
|
|
||||||
testResource("/instatic", "/static");
|
|
||||||
testResource("/inpublic", "/public");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void testResource(String path, String expectedLocation)
|
|
||||||
throws MalformedURLException {
|
|
||||||
URL resource = this.servletContext.getResource(path);
|
|
||||||
assertThat(resource).isNotNull();
|
|
||||||
assertThat(resource.getPath()).contains(expectedLocation);
|
|
||||||
}
|
|
||||||
|
|
||||||
// gh-2654
|
|
||||||
@Test
|
|
||||||
public void getRootUrlExistsAndIsEmpty() throws Exception {
|
|
||||||
SpringBootMockServletContext context = new SpringBootMockServletContext(
|
|
||||||
"src/test/doesntexist") {
|
|
||||||
@Override
|
|
||||||
protected String getResourceLocation(String path) {
|
|
||||||
// Don't include the Spring Boot defaults for this test
|
|
||||||
return getResourceBasePathLocation(path);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
URL resource = context.getResource("/");
|
|
||||||
assertThat(resource).isNotEqualTo(nullValue());
|
|
||||||
File file = new File(URLDecoder.decode(resource.getPath(), "UTF-8"));
|
|
||||||
assertThat(file).exists().isDirectory();
|
|
||||||
String[] contents = file.list(new FilenameFilter() {
|
|
||||||
@Override
|
|
||||||
public boolean accept(File dir, String name) {
|
|
||||||
return !(".".equals(name) || "..".equals(name));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
assertThat(contents).isNotEqualTo(nullValue());
|
|
||||||
assertThat(contents.length).isEqualTo(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
static class Config {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for the deprecated {@link TestRestTemplate}.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class TestRestTemplateTests {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void canCreateTemplateFromOwnOptions() {
|
|
||||||
TestRestTemplate template = new TestRestTemplate(
|
|
||||||
TestRestTemplate.HttpClientOption.ENABLE_REDIRECTS);
|
|
||||||
assertThat(template).isNotNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.embedded;
|
|
||||||
|
|
||||||
import javax.servlet.Filter;
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
|
||||||
import org.springframework.web.filter.DelegatingFilterProxy;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ServletContextInitializer} to register {@link DelegatingFilterProxy}s in a
|
|
||||||
* Servlet 3.0+ container. Similar to the {@link ServletContext#addFilter(String, Filter)
|
|
||||||
* registration} features provided by {@link ServletContext} but with a Spring Bean
|
|
||||||
* friendly design.
|
|
||||||
* <p>
|
|
||||||
* The bean name of the actual delegate {@link Filter} should be specified using the
|
|
||||||
* {@code targetBeanName} constructor argument. Unlike the {@link FilterRegistrationBean},
|
|
||||||
* referenced filters are not instantiated early. In fact, if the delegate filter bean is
|
|
||||||
* marked {@code @Lazy} it won't be instantiated at all until the filter is called.
|
|
||||||
* <p>
|
|
||||||
* Registrations can be associated with {@link #setUrlPatterns URL patterns} and/or
|
|
||||||
* servlets (either by {@link #setServletNames name} or via a
|
|
||||||
* {@link #setServletRegistrationBeans ServletRegistrationBean}s. When no URL pattern or
|
|
||||||
* servlets are specified the filter will be associated to '/*'. The targetBeanName will
|
|
||||||
* be used as the filter name if not otherwise specified.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.3.0
|
|
||||||
* @see ServletContextInitializer
|
|
||||||
* @see ServletContext#addFilter(String, Filter)
|
|
||||||
* @see FilterRegistrationBean
|
|
||||||
* @see DelegatingFilterProxy
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class DelegatingFilterProxyRegistrationBean
|
|
||||||
extends org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean
|
|
||||||
implements org.springframework.boot.context.embedded.ServletContextInitializer {
|
|
||||||
|
|
||||||
public DelegatingFilterProxyRegistrationBean(String targetBeanName,
|
|
||||||
ServletRegistrationBean... servletRegistrationBeans) {
|
|
||||||
super(targetBeanName, servletRegistrationBeans);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.embedded;
|
|
||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Simple container-independent abstraction for servlet error pages. Roughly equivalent to
|
|
||||||
* the {@literal <error-page>} element traditionally found in web.xml.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.servlet.ErrorPage}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ErrorPage extends org.springframework.boot.web.servlet.ErrorPage {
|
|
||||||
|
|
||||||
public ErrorPage(Class<? extends Throwable> exception, String path) {
|
|
||||||
super(exception, path);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ErrorPage(HttpStatus status, String path) {
|
|
||||||
super(status, path);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ErrorPage(String path) {
|
|
||||||
super(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.embedded;
|
|
||||||
|
|
||||||
import javax.servlet.Filter;
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean;
|
|
||||||
import org.springframework.boot.web.servlet.ServletContextInitializer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ServletContextInitializer} to register {@link Filter}s in a Servlet 3.0+
|
|
||||||
* container. Similar to the {@link ServletContext#addFilter(String, Filter) registration}
|
|
||||||
* features provided by {@link ServletContext} but with a Spring Bean friendly design.
|
|
||||||
* <p>
|
|
||||||
* The {@link #setFilter(Filter) Filter} must be specified before calling
|
|
||||||
* {@link #onStartup(ServletContext)}. Registrations can be associated with
|
|
||||||
* {@link #setUrlPatterns URL patterns} and/or servlets (either by {@link #setServletNames
|
|
||||||
* name} or via a {@link #setServletRegistrationBeans ServletRegistrationBean}s. When no
|
|
||||||
* URL pattern or servlets are specified the filter will be associated to '/*'. The filter
|
|
||||||
* name will be deduced if not specified.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @see ServletContextInitializer
|
|
||||||
* @see ServletContext#addFilter(String, Filter)
|
|
||||||
* @see DelegatingFilterProxyRegistrationBean
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.servlet.FilterRegistrationBean}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class FilterRegistrationBean
|
|
||||||
extends org.springframework.boot.web.servlet.FilterRegistrationBean
|
|
||||||
implements org.springframework.boot.context.embedded.ServletContextInitializer {
|
|
||||||
|
|
||||||
public FilterRegistrationBean() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public FilterRegistrationBean(Filter filter,
|
|
||||||
ServletRegistrationBean... servletRegistrationBeans) {
|
|
||||||
super(filter, servletRegistrationBeans);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.embedded;
|
|
||||||
|
|
||||||
import javax.servlet.MultipartConfigElement;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Factory that can be used to create a {@link MultipartConfigElement}. Size values can be
|
|
||||||
* set using traditional {@literal long} values which are set in bytes or using more
|
|
||||||
* readable {@literal String} variants that accept KB or MB suffixes, for example:
|
|
||||||
*
|
|
||||||
* <pre class="code">
|
|
||||||
* factory.setMaxFileSize("10Mb");
|
|
||||||
* factory.setMaxRequestSize("100Kb");
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.servlet.MultipartConfigFactory}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class MultipartConfigFactory
|
|
||||||
extends org.springframework.boot.web.servlet.MultipartConfigFactory {
|
|
||||||
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.embedded;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.springframework.web.SpringServletContainerInitializer;
|
|
||||||
import org.springframework.web.WebApplicationInitializer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface used to configure a Servlet 3.0+ {@link ServletContext context}
|
|
||||||
* programmatically. Unlike {@link WebApplicationInitializer}, classes that implement this
|
|
||||||
* interface (and do not implement {@link WebApplicationInitializer}) will <b>not</b> be
|
|
||||||
* detected by {@link SpringServletContainerInitializer} and hence will not be
|
|
||||||
* automatically bootstrapped by the Servlet container.
|
|
||||||
* <p>
|
|
||||||
* This interface is primarily designed to allow {@link ServletContextInitializer}s to be
|
|
||||||
* managed by Spring and not the Servlet container.
|
|
||||||
* <p>
|
|
||||||
* For configuration examples see {@link WebApplicationInitializer}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @see WebApplicationInitializer
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.servlet.ServletContextInitializer}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public interface ServletContextInitializer
|
|
||||||
extends org.springframework.boot.web.servlet.ServletContextInitializer {
|
|
||||||
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.embedded;
|
|
||||||
|
|
||||||
import java.util.EventListener;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
import javax.servlet.ServletContextAttributeListener;
|
|
||||||
import javax.servlet.ServletContextListener;
|
|
||||||
import javax.servlet.ServletRequestAttributeListener;
|
|
||||||
import javax.servlet.ServletRequestListener;
|
|
||||||
import javax.servlet.http.HttpSessionAttributeListener;
|
|
||||||
import javax.servlet.http.HttpSessionListener;
|
|
||||||
|
|
||||||
import org.springframework.boot.web.servlet.ServletContextInitializer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ServletContextInitializer} to register {@link EventListener}s in a Servlet
|
|
||||||
* 3.0+ container. Similar to the {@link ServletContext#addListener(EventListener)
|
|
||||||
* registration} features provided by {@link ServletContext} but with a Spring Bean
|
|
||||||
* friendly design.
|
|
||||||
*
|
|
||||||
* This bean can be used to register the following types of listener:
|
|
||||||
* <ul>
|
|
||||||
* <li>{@link ServletContextAttributeListener}</li>
|
|
||||||
* <li>{@link ServletRequestListener}</li>
|
|
||||||
* <li>{@link ServletRequestAttributeListener}</li>
|
|
||||||
* <li>{@link HttpSessionAttributeListener}</li>
|
|
||||||
* <li>{@link HttpSessionListener}</li>
|
|
||||||
* <li>{@link ServletContextListener}</li>
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* @param <T> the type of listener
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.servlet.ServletListenerRegistrationBean}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ServletListenerRegistrationBean<T extends EventListener>
|
|
||||||
extends org.springframework.boot.web.servlet.ServletListenerRegistrationBean<T>
|
|
||||||
implements org.springframework.boot.context.embedded.ServletContextInitializer {
|
|
||||||
|
|
||||||
public ServletListenerRegistrationBean() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ServletListenerRegistrationBean(T listener) {
|
|
||||||
super(listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.embedded;
|
|
||||||
|
|
||||||
import javax.servlet.Servlet;
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.springframework.boot.web.servlet.ServletContextInitializer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ServletContextInitializer} to register {@link Servlet}s in a Servlet 3.0+
|
|
||||||
* container. Similar to the {@link ServletContext#addServlet(String, Servlet)
|
|
||||||
* registration} features provided by {@link ServletContext} but with a Spring Bean
|
|
||||||
* friendly design.
|
|
||||||
* <p>
|
|
||||||
* The {@link #setServlet(Servlet) servlet} must be specified before calling
|
|
||||||
* {@link #onStartup}. URL mapping can be configured used {@link #setUrlMappings} or
|
|
||||||
* omitted when mapping to '/*' (unless
|
|
||||||
* {@link #ServletRegistrationBean(Servlet, boolean, String...) alwaysMapUrl} is set to
|
|
||||||
* {@code false}). The servlet name will be deduced if not specified.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @see ServletContextInitializer
|
|
||||||
* @see ServletContext#addServlet(String, Servlet)
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.servlet.ServletRegistrationBean}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ServletRegistrationBean
|
|
||||||
extends org.springframework.boot.web.servlet.ServletRegistrationBean
|
|
||||||
implements org.springframework.boot.context.embedded.ServletContextInitializer {
|
|
||||||
|
|
||||||
public ServletRegistrationBean() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ServletRegistrationBean(Servlet servlet, boolean alwaysMapUrl,
|
|
||||||
String... urlMappings) {
|
|
||||||
super(servlet, alwaysMapUrl, urlMappings);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ServletRegistrationBean(Servlet servlet, String... urlMappings) {
|
|
||||||
super(servlet, urlMappings);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import javax.servlet.Filter;
|
|
||||||
|
|
||||||
import org.springframework.boot.web.servlet.ErrorPageRegistrar;
|
|
||||||
import org.springframework.boot.web.servlet.ErrorPageRegistry;
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.core.annotation.Order;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A Servlet {@link Filter} that provides an {@link ErrorPageRegistry} for non-embedded
|
|
||||||
* applications (i.e. deployed WAR files). It registers error pages and handles
|
|
||||||
* application errors by filtering requests and forwarding to the error pages instead of
|
|
||||||
* letting the container handle them. Error pages are a feature of the servlet spec but
|
|
||||||
* there is no Java API for registering them in the spec. This filter works around that by
|
|
||||||
* accepting error page registrations from Spring Boot's {@link ErrorPageRegistrar} (any
|
|
||||||
* beans of that type in the context will be applied to this container).
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @author Andy Wilkinson
|
|
||||||
* @since 1.4.0
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.support.ErrorPageFilter}
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
@Order(Ordered.HIGHEST_PRECEDENCE)
|
|
||||||
@Deprecated
|
|
||||||
public class ErrorPageFilter extends org.springframework.boot.web.support.ErrorPageFilter
|
|
||||||
implements NonEmbeddedServletContainerFactory {
|
|
||||||
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
|
|
||||||
import org.springframework.boot.web.servlet.ErrorPageRegistry;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Marker interface for {@link EmbeddedServletContainerFactory} types that are actually
|
|
||||||
* safe to run in a non-embedded container.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @deprecated as of 1.4 in favor of {@link ErrorPageRegistry}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public interface NonEmbeddedServletContainerFactory {
|
|
||||||
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.web.filter.CharacterEncodingFilter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CharacterEncodingFilter} that also implements {@link Ordered}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.2.1
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.filter.OrderedCharacterEncodingFilter}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class OrderedCharacterEncodingFilter
|
|
||||||
extends org.springframework.boot.web.filter.OrderedCharacterEncodingFilter {
|
|
||||||
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.web.filter.HiddenHttpMethodFilter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link HiddenHttpMethodFilter} that also implements {@link Ordered}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.2.4
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.filter.OrderedHiddenHttpMethodFilter}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class OrderedHiddenHttpMethodFilter
|
|
||||||
extends org.springframework.boot.web.filter.OrderedHiddenHttpMethodFilter {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The default order is high to ensure the filter is applied before Spring Security.
|
|
||||||
*/
|
|
||||||
public static final int DEFAULT_ORDER = org.springframework.boot.web.filter.OrderedHiddenHttpMethodFilter.DEFAULT_ORDER;
|
|
||||||
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.web.filter.HttpPutFormContentFilter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link HttpPutFormContentFilter} that also implements {@link Ordered}.
|
|
||||||
*
|
|
||||||
* @author Joao Pedro Evangelista
|
|
||||||
* @since 1.3.0
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.filter.OrderedHttpPutFormContentFilter}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class OrderedHttpPutFormContentFilter
|
|
||||||
extends org.springframework.boot.web.filter.OrderedHttpPutFormContentFilter {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Higher order to ensure the filter is applied before Spring Security.
|
|
||||||
*/
|
|
||||||
public static final int DEFAULT_ORDER = org.springframework.boot.web.filter.OrderedHttpPutFormContentFilter.DEFAULT_ORDER;
|
|
||||||
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.web.filter.RequestContextFilter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link RequestContextFilter} that also implements {@link Ordered}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.3.0
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.filter.OrderedRequestContextFilter}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class OrderedRequestContextFilter
|
|
||||||
extends org.springframework.boot.web.filter.OrderedRequestContextFilter {
|
|
||||||
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.boot.context.embedded.EmbeddedServletContainer;
|
|
||||||
import org.springframework.boot.context.embedded.EmbeddedWebApplicationContext;
|
|
||||||
import org.springframework.context.ApplicationContextInitializer;
|
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ApplicationContextInitializer} that sets {@link Environment} properties for the
|
|
||||||
* ports that {@link EmbeddedServletContainer} servers are actually listening on. The
|
|
||||||
* property {@literal "local.server.port"} can be injected directly into tests using
|
|
||||||
* {@link Value @Value} or obtained via the {@link Environment}.
|
|
||||||
* <p>
|
|
||||||
* If the {@link EmbeddedWebApplicationContext} has a
|
|
||||||
* {@link EmbeddedWebApplicationContext#setNamespace(String) namespace} set, it will be
|
|
||||||
* used to construct the property name. For example, the "management" actuator context
|
|
||||||
* will have the property name {@literal "local.management.port"}.
|
|
||||||
* <p>
|
|
||||||
* Properties are automatically propagated up to any parent context.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @since 1.3.0
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.context.embedded.ServerPortInfoApplicationContextInitializer}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ServerPortInfoApplicationContextInitializer extends
|
|
||||||
org.springframework.boot.context.embedded.ServerPortInfoApplicationContextInitializer {
|
|
||||||
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
import org.springframework.context.ApplicationContextInitializer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ApplicationContextInitializer} for setting the servlet context.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.support.ServletContextApplicationContextInitializer}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ServletContextApplicationContextInitializer extends
|
|
||||||
org.springframework.boot.web.support.ServletContextApplicationContextInitializer {
|
|
||||||
|
|
||||||
public ServletContextApplicationContextInitializer(ServletContext servletContext,
|
|
||||||
boolean addApplicationContextAttribute) {
|
|
||||||
super(servletContext, addApplicationContextAttribute);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ServletContextApplicationContextInitializer(ServletContext servletContext) {
|
|
||||||
super(servletContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.context.web;
|
|
||||||
|
|
||||||
import javax.servlet.Filter;
|
|
||||||
import javax.servlet.Servlet;
|
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
|
||||||
import org.springframework.boot.web.servlet.ServletContextInitializer;
|
|
||||||
import org.springframework.web.WebApplicationInitializer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An opinionated {@link WebApplicationInitializer} to run a {@link SpringApplication}
|
|
||||||
* from a traditional WAR deployment. Binds {@link Servlet}, {@link Filter} and
|
|
||||||
* {@link ServletContextInitializer} beans from the application context to the servlet
|
|
||||||
* container.
|
|
||||||
* <p>
|
|
||||||
* To configure the application either override the
|
|
||||||
* {@link #configure(SpringApplicationBuilder)} method (calling
|
|
||||||
* {@link SpringApplicationBuilder#sources(Object...)}) or make the initializer itself a
|
|
||||||
* {@code @Configuration}. If you are using {@link SpringBootServletInitializer} in
|
|
||||||
* combination with other {@link WebApplicationInitializer WebApplicationInitializers} you
|
|
||||||
* might also want to add an {@code @Ordered} annotation to configure a specific startup
|
|
||||||
* order.
|
|
||||||
* <p>
|
|
||||||
* Note that a WebApplicationInitializer is only needed if you are building a war file and
|
|
||||||
* deploying it. If you prefer to run an embedded container then you won't need this at
|
|
||||||
* all.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @author Andy Wilkinson
|
|
||||||
* @see #configure(SpringApplicationBuilder)
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@link org.springframework.boot.web.support.SpringBootServletInitializer}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public abstract class SpringBootServletInitializer
|
|
||||||
extends org.springframework.boot.web.support.SpringBootServletInitializer {
|
|
||||||
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2014 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
|
|
||||||
*
|
|
||||||
* http://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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Spring {@link org.springframework.context.ApplicationContext} support relating to web
|
|
||||||
* deployment.
|
|
||||||
*/
|
|
||||||
package org.springframework.boot.context.web;
|
|
@ -1,90 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.orm.jpa;
|
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
|
||||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configures the {@link LocalContainerEntityManagerFactoryBean} to scan for entity
|
|
||||||
* classes in the classpath. This annotation provides an alternative to manually setting
|
|
||||||
* {@link LocalContainerEntityManagerFactoryBean#setPackagesToScan(String...)} and is
|
|
||||||
* particularly useful if you want to configure entity scanning in a type-safe way, or if
|
|
||||||
* your {@link LocalContainerEntityManagerFactoryBean} is auto-configured.
|
|
||||||
* <p>
|
|
||||||
* A {@link LocalContainerEntityManagerFactoryBean} must be configured within your Spring
|
|
||||||
* ApplicationContext in order to use entity scanning. Furthermore, any existing
|
|
||||||
* {@code packagesToScan} setting will be replaced.
|
|
||||||
* <p>
|
|
||||||
* One of {@link #basePackageClasses()}, {@link #basePackages()} or its alias
|
|
||||||
* {@link #value()} may be specified to define specific packages to scan. If specific
|
|
||||||
* packages are not defined scanning will occur from the package of the class with this
|
|
||||||
* annotation.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @deprecated as of 1.4 in favor of
|
|
||||||
* {@code org.springframework.boot.autoconfigure.domain.EntityScan} or explicit
|
|
||||||
* configuration of the {@link LocalContainerEntityManagerFactoryBean} (either
|
|
||||||
* {@link LocalContainerEntityManagerFactoryBean#setPackagesToScan(String...) directly} or
|
|
||||||
* using the {@link EntityManagerFactoryBuilder.Builder#packages(Class...)
|
|
||||||
* EntityManagerFactoryBuilder}).
|
|
||||||
*/
|
|
||||||
@Target(ElementType.TYPE)
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Documented
|
|
||||||
@Import(EntityScanRegistrar.class)
|
|
||||||
@Deprecated
|
|
||||||
public @interface EntityScan {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Alias for the {@link #basePackages()} attribute. Allows for more concise annotation
|
|
||||||
* declarations e.g.: {@code @EntityScan("org.my.pkg")} instead of
|
|
||||||
* {@code @EntityScan(basePackages="org.my.pkg")}.
|
|
||||||
* @return the base packages to scan
|
|
||||||
*/
|
|
||||||
@AliasFor("basePackages")
|
|
||||||
String[] value() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base packages to scan for annotated entities. {@link #value()} is an alias for (and
|
|
||||||
* mutually exclusive with) this attribute.
|
|
||||||
* <p>
|
|
||||||
* Use {@link #basePackageClasses()} for a type-safe alternative to String-based
|
|
||||||
* package names.
|
|
||||||
* @return the base packages to scan
|
|
||||||
*/
|
|
||||||
@AliasFor("value")
|
|
||||||
String[] basePackages() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type-safe alternative to {@link #basePackages()} for specifying the packages to
|
|
||||||
* scan for annotated entities. The package of each class specified will be scanned.
|
|
||||||
* <p>
|
|
||||||
* Consider creating a special no-op marker class or interface in each package that
|
|
||||||
* serves no purpose other than being referenced by this attribute.
|
|
||||||
* @return classes from the base packages to scan
|
|
||||||
*/
|
|
||||||
Class<?>[] basePackageClasses() default {};
|
|
||||||
|
|
||||||
}
|
|
@ -1,157 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.orm.jpa;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.springframework.beans.BeansException;
|
|
||||||
import org.springframework.beans.factory.SmartInitializingSingleton;
|
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
|
||||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
|
||||||
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
|
|
||||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
|
||||||
import org.springframework.beans.factory.support.GenericBeanDefinition;
|
|
||||||
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.core.annotation.AnnotationAttributes;
|
|
||||||
import org.springframework.core.type.AnnotationMetadata;
|
|
||||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
||||||
import org.springframework.util.Assert;
|
|
||||||
import org.springframework.util.ClassUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ImportBeanDefinitionRegistrar} used by {@link EntityScan}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @author Oliver Gierke
|
|
||||||
* @deprecated as of 1.4 along with {@link EntityScan}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
class EntityScanRegistrar implements ImportBeanDefinitionRegistrar {
|
|
||||||
|
|
||||||
private static final String BEAN_NAME = "entityScanBeanPostProcessor";
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
|
|
||||||
BeanDefinitionRegistry registry) {
|
|
||||||
Set<String> packagesToScan = getPackagesToScan(importingClassMetadata);
|
|
||||||
if (!registry.containsBeanDefinition(BEAN_NAME)) {
|
|
||||||
addEntityScanBeanPostProcessor(registry, packagesToScan);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
updateEntityScanBeanPostProcessor(registry, packagesToScan);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Set<String> getPackagesToScan(AnnotationMetadata metadata) {
|
|
||||||
AnnotationAttributes attributes = AnnotationAttributes
|
|
||||||
.fromMap(metadata.getAnnotationAttributes(EntityScan.class.getName()));
|
|
||||||
String[] basePackages = attributes.getAliasedStringArray("basePackages",
|
|
||||||
EntityScan.class, metadata.getClassName());
|
|
||||||
Class<?>[] basePackageClasses = attributes.getClassArray("basePackageClasses");
|
|
||||||
Set<String> packagesToScan = new LinkedHashSet<String>();
|
|
||||||
packagesToScan.addAll(Arrays.asList(basePackages));
|
|
||||||
for (Class<?> basePackageClass : basePackageClasses) {
|
|
||||||
packagesToScan.add(ClassUtils.getPackageName(basePackageClass));
|
|
||||||
}
|
|
||||||
if (packagesToScan.isEmpty()) {
|
|
||||||
return Collections
|
|
||||||
.singleton(ClassUtils.getPackageName(metadata.getClassName()));
|
|
||||||
}
|
|
||||||
return packagesToScan;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addEntityScanBeanPostProcessor(BeanDefinitionRegistry registry,
|
|
||||||
Set<String> packagesToScan) {
|
|
||||||
GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
|
|
||||||
beanDefinition.setBeanClass(EntityScanBeanPostProcessor.class);
|
|
||||||
beanDefinition.getConstructorArgumentValues()
|
|
||||||
.addGenericArgumentValue(toArray(packagesToScan));
|
|
||||||
beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
|
||||||
// We don't need this one to be post processed otherwise it can cause a
|
|
||||||
// cascade of bean instantiation that we would rather avoid.
|
|
||||||
beanDefinition.setSynthetic(true);
|
|
||||||
registry.registerBeanDefinition(BEAN_NAME, beanDefinition);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateEntityScanBeanPostProcessor(BeanDefinitionRegistry registry,
|
|
||||||
Set<String> packagesToScan) {
|
|
||||||
BeanDefinition definition = registry.getBeanDefinition(BEAN_NAME);
|
|
||||||
ValueHolder constructorArguments = definition.getConstructorArgumentValues()
|
|
||||||
.getGenericArgumentValue(String[].class);
|
|
||||||
Set<String> mergedPackages = new LinkedHashSet<String>();
|
|
||||||
mergedPackages.addAll(Arrays.asList((String[]) constructorArguments.getValue()));
|
|
||||||
mergedPackages.addAll(packagesToScan);
|
|
||||||
constructorArguments.setValue(toArray(mergedPackages));
|
|
||||||
}
|
|
||||||
|
|
||||||
private String[] toArray(Set<String> set) {
|
|
||||||
return set.toArray(new String[set.size()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link BeanPostProcessor} to set
|
|
||||||
* {@link LocalContainerEntityManagerFactoryBean#setPackagesToScan(String...)} based
|
|
||||||
* on an {@link EntityScan} annotation.
|
|
||||||
*/
|
|
||||||
static class EntityScanBeanPostProcessor
|
|
||||||
implements BeanPostProcessor, SmartInitializingSingleton, Ordered {
|
|
||||||
|
|
||||||
private final String[] packagesToScan;
|
|
||||||
|
|
||||||
private boolean processed;
|
|
||||||
|
|
||||||
EntityScanBeanPostProcessor(String[] packagesToScan) {
|
|
||||||
this.packagesToScan = packagesToScan;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object postProcessBeforeInitialization(Object bean, String beanName)
|
|
||||||
throws BeansException {
|
|
||||||
if (bean instanceof LocalContainerEntityManagerFactoryBean) {
|
|
||||||
LocalContainerEntityManagerFactoryBean factoryBean = (LocalContainerEntityManagerFactoryBean) bean;
|
|
||||||
factoryBean.setPackagesToScan(this.packagesToScan);
|
|
||||||
this.processed = true;
|
|
||||||
}
|
|
||||||
return bean;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object postProcessAfterInitialization(Object bean, String beanName)
|
|
||||||
throws BeansException {
|
|
||||||
return bean;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterSingletonsInstantiated() {
|
|
||||||
Assert.state(this.processed,
|
|
||||||
"Unable to configure "
|
|
||||||
+ "LocalContainerEntityManagerFactoryBean from @EntityScan, "
|
|
||||||
+ "ensure an appropriate bean is registered.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getOrder() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,68 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2015 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
|
|
||||||
*
|
|
||||||
* http://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.yaml;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.YamlProcessor.DocumentMatcher;
|
|
||||||
import org.springframework.beans.factory.config.YamlProcessor.MatchStatus;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Matches a document containing a given key and where the value of that key is an array
|
|
||||||
* containing one of the given values, or where one of the values matches one of the given
|
|
||||||
* values (interpreted as regexes).
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @deprecated as of 1.4.1 in favor of exact String-based matching
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ArrayDocumentMatcher implements DocumentMatcher {
|
|
||||||
|
|
||||||
private final String key;
|
|
||||||
|
|
||||||
private final String[] patterns;
|
|
||||||
|
|
||||||
public ArrayDocumentMatcher(final String key, final String... patterns) {
|
|
||||||
this.key = key;
|
|
||||||
this.patterns = patterns;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public MatchStatus matches(Properties properties) {
|
|
||||||
if (!properties.containsKey(this.key)) {
|
|
||||||
return MatchStatus.ABSTAIN;
|
|
||||||
}
|
|
||||||
Set<String> values = StringUtils
|
|
||||||
.commaDelimitedListToSet(properties.getProperty(this.key));
|
|
||||||
if (values.isEmpty()) {
|
|
||||||
values = Collections.singleton("");
|
|
||||||
}
|
|
||||||
for (String pattern : this.patterns) {
|
|
||||||
for (String value : values) {
|
|
||||||
if (value.matches(pattern)) {
|
|
||||||
return MatchStatus.FOUND;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return MatchStatus.NOT_FOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2014 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
|
|
||||||
*
|
|
||||||
* http://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.yaml;
|
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.YamlProcessor.DocumentMatcher;
|
|
||||||
import org.springframework.beans.factory.config.YamlProcessor.MatchStatus;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link DocumentMatcher} that matches the default profile implicitly but not
|
|
||||||
* explicitly (i.e. matches if "spring.profiles" is not found and not otherwise).
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
* @deprecated since 1.4.1 as it is no longer used
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class DefaultProfileDocumentMatcher implements DocumentMatcher {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public MatchStatus matches(Properties properties) {
|
|
||||||
if (!properties.containsKey("spring.profiles")) {
|
|
||||||
return MatchStatus.FOUND;
|
|
||||||
}
|
|
||||||
return MatchStatus.NOT_FOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.orm.jpa;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
||||||
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link EntityManagerFactoryBuilder}.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class EntityManagerFactoryBuilderTests {
|
|
||||||
|
|
||||||
private Map<String, Object> properties = new LinkedHashMap<String, Object>();
|
|
||||||
|
|
||||||
private DataSource dataSource1 = mock(DataSource.class);
|
|
||||||
|
|
||||||
private DataSource dataSource2 = mock(DataSource.class);
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void entityManagerFactoryPropertiesNotOverwritingDefaults() {
|
|
||||||
EntityManagerFactoryBuilder factory = new EntityManagerFactoryBuilder(
|
|
||||||
new HibernateJpaVendorAdapter(), this.properties, null);
|
|
||||||
LocalContainerEntityManagerFactoryBean result1 = factory
|
|
||||||
.dataSource(this.dataSource1)
|
|
||||||
.properties(Collections.singletonMap("foo", "spam")).build();
|
|
||||||
assertThat(result1.getJpaPropertyMap().isEmpty()).isFalse();
|
|
||||||
assertThat(this.properties.isEmpty()).isTrue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void multipleEntityManagerFactoriesDoNotOverwriteEachOther() {
|
|
||||||
EntityManagerFactoryBuilder factory = new EntityManagerFactoryBuilder(
|
|
||||||
new HibernateJpaVendorAdapter(), this.properties, null);
|
|
||||||
LocalContainerEntityManagerFactoryBean result1 = factory
|
|
||||||
.dataSource(this.dataSource1)
|
|
||||||
.properties(Collections.singletonMap("foo", "spam")).build();
|
|
||||||
assertThat(result1.getJpaPropertyMap().isEmpty()).isFalse();
|
|
||||||
LocalContainerEntityManagerFactoryBean result2 = factory
|
|
||||||
.dataSource(this.dataSource2).build();
|
|
||||||
assertThat(result2.getJpaPropertyMap().isEmpty()).isTrue();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,171 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.orm.jpa;
|
|
||||||
|
|
||||||
import javax.persistence.EntityManagerFactory;
|
|
||||||
import javax.persistence.PersistenceException;
|
|
||||||
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Rule;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.rules.ExpectedException;
|
|
||||||
|
|
||||||
import org.springframework.beans.BeansException;
|
|
||||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
|
||||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
|
||||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link EntityScan}.
|
|
||||||
*
|
|
||||||
* @author Phillip Webb
|
|
||||||
* @author Stephane Nicoll
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class EntityScanTests {
|
|
||||||
|
|
||||||
@Rule
|
|
||||||
public ExpectedException thrown = ExpectedException.none();
|
|
||||||
|
|
||||||
private AnnotationConfigApplicationContext context;
|
|
||||||
|
|
||||||
@After
|
|
||||||
public void closeContext() {
|
|
||||||
if (this.context != null) {
|
|
||||||
this.context.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void simpleValue() throws Exception {
|
|
||||||
this.context = new AnnotationConfigApplicationContext(ValueConfig.class);
|
|
||||||
assertSetPackagesToScan("com.mycorp.entity");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void simpleValueAsm() throws Exception {
|
|
||||||
this.context = new AnnotationConfigApplicationContext();
|
|
||||||
this.context.registerBeanDefinition("valueConfig",
|
|
||||||
new RootBeanDefinition(ValueConfig.class.getName()));
|
|
||||||
this.context.refresh();
|
|
||||||
assertSetPackagesToScan("com.mycorp.entity");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void needsEntityManageFactory() throws Exception {
|
|
||||||
this.thrown.expect(IllegalStateException.class);
|
|
||||||
this.thrown.expectMessage("Unable to configure "
|
|
||||||
+ "LocalContainerEntityManagerFactoryBean from @EntityScan, "
|
|
||||||
+ "ensure an appropriate bean is registered.");
|
|
||||||
this.context = new AnnotationConfigApplicationContext(MissingEntityManager.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void userDeclaredBeanPostProcessorWithEntityManagerDependencyDoesNotPreventConfigurationOfPackagesToScan() {
|
|
||||||
this.context = new AnnotationConfigApplicationContext(
|
|
||||||
BeanPostProcessorConfiguration.class, BaseConfig.class);
|
|
||||||
assertSetPackagesToScan("com.mycorp.entity");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertSetPackagesToScan(String... expected) {
|
|
||||||
String[] actual = this.context
|
|
||||||
.getBean(TestLocalContainerEntityManagerFactoryBean.class)
|
|
||||||
.getPackagesToScan();
|
|
||||||
assertThat(actual).isEqualTo(expected);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
static class BaseConfig {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public TestLocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {
|
|
||||||
return new TestLocalContainerEntityManagerFactoryBean();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@EntityScan("com.mycorp.entity")
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
static class ValueConfig extends BaseConfig {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EntityScan("com.mycorp.entity")
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
static class MissingEntityManager {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EntityScan("com.mycorp.entity")
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
static class BeanPostProcessorConfiguration {
|
|
||||||
|
|
||||||
protected final EntityManagerFactory entityManagerFactory;
|
|
||||||
|
|
||||||
BeanPostProcessorConfiguration(EntityManagerFactory entityManagerFactory) {
|
|
||||||
this.entityManagerFactory = entityManagerFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public BeanPostProcessor beanPostProcessor() {
|
|
||||||
return new BeanPostProcessor() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object postProcessBeforeInitialization(Object bean,
|
|
||||||
String beanName) throws BeansException {
|
|
||||||
return bean;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object postProcessAfterInitialization(Object bean, String beanName)
|
|
||||||
throws BeansException {
|
|
||||||
return bean;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class TestLocalContainerEntityManagerFactoryBean
|
|
||||||
extends LocalContainerEntityManagerFactoryBean {
|
|
||||||
|
|
||||||
private String[] packagesToScan;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected EntityManagerFactory createNativeEntityManagerFactory()
|
|
||||||
throws PersistenceException {
|
|
||||||
return mock(EntityManagerFactory.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setPackagesToScan(String... packagesToScan) {
|
|
||||||
this.packagesToScan = packagesToScan;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getPackagesToScan() {
|
|
||||||
return this.packagesToScan;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,64 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2016 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
|
|
||||||
*
|
|
||||||
* http://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.yaml;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.YamlProcessor.MatchStatus;
|
|
||||||
import org.springframework.core.io.ByteArrayResource;
|
|
||||||
import org.springframework.core.io.support.PropertiesLoaderUtils;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link ArrayDocumentMatcher}.
|
|
||||||
*
|
|
||||||
* @author Dave Syer
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class ArrayDocumentMatcherTests {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMatchesSingleValue() throws IOException {
|
|
||||||
ArrayDocumentMatcher matcher = new ArrayDocumentMatcher("foo", "bar");
|
|
||||||
assertThat(matcher.matches(getProperties("foo: bar")))
|
|
||||||
.isEqualTo(MatchStatus.FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDoesNotMatchesIndexedArray() throws IOException {
|
|
||||||
ArrayDocumentMatcher matcher = new ArrayDocumentMatcher("foo", "bar");
|
|
||||||
assertThat(matcher.matches(getProperties("foo[0]: bar\nfoo[1]: spam")))
|
|
||||||
.isEqualTo(MatchStatus.ABSTAIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMatchesCommaSeparatedArray() throws IOException {
|
|
||||||
ArrayDocumentMatcher matcher = new ArrayDocumentMatcher("foo", "bar");
|
|
||||||
assertThat(matcher.matches(getProperties("foo: bar,spam")))
|
|
||||||
.isEqualTo(MatchStatus.FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Properties getProperties(String values) throws IOException {
|
|
||||||
return PropertiesLoaderUtils
|
|
||||||
.loadProperties(new ByteArrayResource(values.getBytes()));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue