Remote trailing whitespace
This commit is contained in:
@@ -26,7 +26,7 @@ import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
* An application process ID.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class ApplicationPid {
|
||||
|
||||
@@ -26,7 +26,7 @@ import static org.springframework.boot.ansi.AnsiElement.GREEN;
|
||||
|
||||
/**
|
||||
* Writes the 'Spring' banner.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
abstract class Banner {
|
||||
|
||||
@@ -48,7 +48,7 @@ import org.springframework.util.StringUtils;
|
||||
* simple facade over {@link AnnotatedBeanDefinitionReader},
|
||||
* {@link XmlBeanDefinitionReader} and {@link ClassPathBeanDefinitionScanner}. See
|
||||
* {@link SpringApplication} for the types of sources that are supported.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see #setBeanNameGenerator(BeanNameGenerator)
|
||||
*/
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.core.annotation.Order;
|
||||
* a {@link SpringApplication}. Multiple {@link CommandLineRunner} beans can be defined
|
||||
* within the same application context and can be ordered using the {@link Ordered}
|
||||
* interface or {@link Order @Order} annotation.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public interface CommandLineRunner {
|
||||
|
||||
@@ -19,7 +19,7 @@ package org.springframework.boot;
|
||||
/**
|
||||
* Interface used to generate an 'exit code' from a running command line
|
||||
* {@link SpringApplication}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see SpringApplication#exit(org.springframework.context.ApplicationContext,
|
||||
* ExitCodeGenerator...)
|
||||
|
||||
@@ -77,38 +77,38 @@ import org.springframework.web.context.support.StandardServletEnvironment;
|
||||
* Classes that can be used to bootstrap and launch a Spring application from a Java main
|
||||
* method. By default class will perform the following steps to bootstrap your
|
||||
* application:
|
||||
*
|
||||
*
|
||||
* <ul>
|
||||
* <li>Create an appropriate {@link ApplicationContext} instance (depending on your
|
||||
* classpath)</li>
|
||||
*
|
||||
*
|
||||
* <li>Register a {@link CommandLinePropertySource} to expose command line arguments as
|
||||
* Spring properties</li>
|
||||
*
|
||||
*
|
||||
* <li>Refresh the application context, loading all singleton beans</li>
|
||||
*
|
||||
*
|
||||
* <li>Trigger any {@link CommandLineRunner} beans</li>
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* In most circumstances the static {@link #run(Object, String[])} method can be called
|
||||
* directly from your {@literal main} method to bootstrap your application:
|
||||
*
|
||||
*
|
||||
* <pre class="code">
|
||||
* @Configuration
|
||||
* @EnableAutoConfiguration
|
||||
* public class MyApplication {
|
||||
*
|
||||
*
|
||||
* // ... Bean definitions
|
||||
*
|
||||
*
|
||||
* public static void main(String[] args) throws Exception {
|
||||
* SpringApplication.run(MyApplication.class, args);
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For more advanced configuration a {@link SpringApplication} instance can be created and
|
||||
* customized before being run:
|
||||
*
|
||||
*
|
||||
* <pre class="code">
|
||||
* public static void main(String[] args) throws Exception {
|
||||
* SpringApplication app = new SpringApplication(MyApplication.class);
|
||||
@@ -116,26 +116,26 @@ import org.springframework.web.context.support.StandardServletEnvironment;
|
||||
* app.run(args)
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* {@link SpringApplication}s can read beans from a variety of different sources. It is
|
||||
* generally recommended that a single {@code @Configuration} class is used to bootstrap
|
||||
* your application, however, any of the following sources can also be used:
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>{@link Class} - A Java class to be loaded by {@link AnnotatedBeanDefinitionReader}</li>
|
||||
*
|
||||
*
|
||||
* <li>{@link Resource} - An XML resource to be loaded by {@link XmlBeanDefinitionReader},
|
||||
* or a groovy script to be loaded by {@link GroovyBeanDefinitionReader}</li>
|
||||
*
|
||||
*
|
||||
* <li>{@link Package} - A Java package to be scanned by
|
||||
* {@link ClassPathBeanDefinitionScanner}</li>
|
||||
*
|
||||
*
|
||||
* <li>{@link CharSequence} - A class name, resource handle or package name to loaded as
|
||||
* appropriate. If the {@link CharSequence} cannot be resolved to class and does not
|
||||
* resolve to a {@link Resource} that exists it will be considered a {@link Package}.</li>
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @author Andy Wilkinson
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.springframework.core.io.support.SpringFactoriesLoader;
|
||||
* and should declare a public constructor that accepts a {@link SpringApplication}
|
||||
* instance and a {@code String[]} of arguments. A new
|
||||
* {@link SpringApplicationRunListener} instance will be created for each run.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
*/
|
||||
|
||||
@@ -34,7 +34,7 @@ import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Logs application information on startup.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
*/
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.springframework.boot.ansi;
|
||||
|
||||
/**
|
||||
* An ANSI encodable element.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public interface AnsiElement {
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.springframework.util.Assert;
|
||||
/**
|
||||
* Generates ANSI encoded output, automatically attempting to detect if the terminal
|
||||
* supports ANSI.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public abstract class AnsiOutput {
|
||||
|
||||
@@ -23,7 +23,7 @@ import java.net.UnknownHostException;
|
||||
|
||||
/**
|
||||
* {@link PropertyEditor} for {@link InetAddress} objects.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class InetAddressEditor extends PropertyEditorSupport implements PropertyEditor {
|
||||
|
||||
@@ -44,7 +44,7 @@ import org.springframework.validation.Validator;
|
||||
* Validate some {@link Properties} (or optionally {@link PropertySources}) by binding
|
||||
* them to an object of a specified type and then optionally running a {@link Validator}
|
||||
* over it.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class PropertiesConfigurationFactory<T> implements FactoryBean<T>,
|
||||
@@ -176,7 +176,7 @@ public class PropertiesConfigurationFactory<T> implements FactoryBean<T>,
|
||||
/**
|
||||
* Flag to indicate that an exception should be raised if a Validator is available and
|
||||
* validation fails.
|
||||
*
|
||||
*
|
||||
* @param exceptionIfInvalid the flag to set
|
||||
*/
|
||||
public void setExceptionIfInvalid(boolean exceptionIfInvalid) {
|
||||
|
||||
@@ -26,9 +26,9 @@ import org.springframework.core.env.PropertySources;
|
||||
|
||||
/**
|
||||
* Convenience class for manipulating PropertySources.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*
|
||||
*
|
||||
* @see PropertySource
|
||||
* @see PropertySources
|
||||
*/
|
||||
|
||||
@@ -36,7 +36,7 @@ import org.springframework.validation.DataBinder;
|
||||
* A {@link PropertyValues} implementation backed by a {@link PropertySources}, bridging
|
||||
* the two abstractions and allowing (for instance) a regular {@link DataBinder} to be
|
||||
* used with the latter.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class PropertySourcesPropertyValues implements PropertyValues {
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.springframework.util.Assert;
|
||||
/**
|
||||
* Internal {@link ConversionService} used by {@link RelaxedDataBinder} to support
|
||||
* additional relaxed conversion.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
||||
@@ -36,7 +36,7 @@ import org.springframework.validation.DataBinder;
|
||||
* Binder implementation that allows caller to bind to maps and also allows property names
|
||||
* to match a bit loosely (if underscores or dashes are removed and replaced with camel
|
||||
* case for example).
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
* @see RelaxedNames
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Generates relaxed name variations from a given source.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @see RelaxedDataBinder
|
||||
|
||||
@@ -27,7 +27,7 @@ import static java.lang.String.format;
|
||||
|
||||
/**
|
||||
* {@link PropertyResolver} that attempts to resolve values using {@link RelaxedNames}.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see RelaxedNames
|
||||
*/
|
||||
|
||||
@@ -43,7 +43,7 @@ import org.yaml.snakeyaml.error.YAMLException;
|
||||
/**
|
||||
* Validate some YAML by binding it to an object of a specified type and then optionally
|
||||
* running a {@link Validator} over it.
|
||||
*
|
||||
*
|
||||
* @author Luke Taylor
|
||||
* @author Dave Syer
|
||||
*/
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.yaml.snakeyaml.nodes.NodeId;
|
||||
/**
|
||||
* Extended version of snakeyaml's Constructor class to facilitate mapping custom YAML
|
||||
* keys to Javabean property names.
|
||||
*
|
||||
*
|
||||
* @author Luke Taylor
|
||||
*/
|
||||
public class YamlJavaBeanPropertyConstructor extends Constructor {
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.springframework.core.Ordered;
|
||||
* {@link ApplicationContextInitializer} for setting the parent context. Also publishes
|
||||
* {@link ParentContextAvailableEvent} when the context is refreshed to signal to other
|
||||
* listeners that the context is available and has a parent.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ParentContextApplicationContextInitializer implements
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.springframework.util.ObjectUtils;
|
||||
* Listener that closes the application context if its parent is closed. It listens for
|
||||
* refresh events and grabs the current context from there, and then listens for closed
|
||||
* events and propagates it down the hierarchy.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Eric Bottard
|
||||
*/
|
||||
|
||||
@@ -40,23 +40,23 @@ import org.springframework.core.io.ResourceLoader;
|
||||
* Builder for {@link SpringApplication} and {@link ApplicationContext} instances with
|
||||
* convenient fluent API and context hierarchy support. Simple example of a context
|
||||
* hierarchy:
|
||||
*
|
||||
*
|
||||
* <pre class="code">
|
||||
* new SpringApplicationBuilder(ParentConfig.class).child(ChildConfig.class).run(args);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* Another common use case is setting default arguments, e.g. active Spring profiles, to
|
||||
* set up the environment for an application:
|
||||
*
|
||||
*
|
||||
* <pre class="code">
|
||||
* new SpringApplicationBuilder(Application.class).profiles("server")
|
||||
* .defaultArgs("--transport=local").run(args);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* If your needs are simpler, consider using the static convenience methods in
|
||||
* SpringApplication instead.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class SpringApplicationBuilder {
|
||||
|
||||
@@ -48,7 +48,7 @@ import org.springframework.util.StringUtils;
|
||||
* shallow hash with basic information about the application (name, instance id, instance
|
||||
* index, etc.), and VCAP_SERVICES is a hash of lists where the keys are service labels
|
||||
* and the values are lists of hashes of service instance meta data. Examples are:
|
||||
*
|
||||
*
|
||||
* <pre class="code">
|
||||
* VCAP_APPLICATION: {"instance_id":"2ce0ac627a6c8e47e936d829a3a47b5b","instance_index":0,
|
||||
* "version":"0138c4a6-2a73-416b-aca0-572c09f7ca53","name":"foo",
|
||||
@@ -59,19 +59,19 @@ import org.springframework.util.StringUtils;
|
||||
* "username":"urpRuqTf8Cpe6","password":"pxLsGVpsC9A5S"}
|
||||
* }]}
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* These objects are flattened into properties. The VCAP_APPLICATION object goes straight
|
||||
* to <code>vcap.application.*</code> in a fairly obvious way, and the VCAP_SERVICES
|
||||
* object is unwrapped so that it is a hash of objects with key equal to the service
|
||||
* instance name (e.g. "mysql" in the example above), and value equal to that instances
|
||||
* properties, and then flattened in the same way. E.g.
|
||||
*
|
||||
*
|
||||
* <pre class="code">
|
||||
* vcap.application.instance_id: 2ce0ac627a6c8e47e936d829a3a47b5b
|
||||
* vcap.application.version: 0138c4a6-2a73-416b-aca0-572c09f7ca53
|
||||
* vcap.application.name: foo
|
||||
* vcap.application.uris[0]: foo.cfapps.io
|
||||
*
|
||||
*
|
||||
* vcap.services.mysql.name: mysql
|
||||
* vcap.services.mysql.label: rds-mysql-1.0
|
||||
* vcap.services.mysql.credentials.name: d04fb13d27d964c62b267bbba1cffb9da
|
||||
@@ -81,11 +81,11 @@ import org.springframework.util.StringUtils;
|
||||
* vcap.services.mysql.credentials.password: pxLsGVpsC9A5S
|
||||
* ...
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* N.B. this initializer is mainly intended for informational use (the application and
|
||||
* instance ids are particularly useful). For service binding you might find that Spring
|
||||
* Cloud is more convenient and more robust against potential changes in Cloud Foundry.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class VcapApplicationListener implements
|
||||
|
||||
@@ -33,17 +33,17 @@ import org.springframework.util.StringUtils;
|
||||
* <li>spring.config.name</li>
|
||||
* </ul>
|
||||
* If no property is set the ID 'application' will be used.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* In addition the following environment properties will be consulted to append a relevant
|
||||
* port or index:
|
||||
*
|
||||
*
|
||||
* <ul>
|
||||
* <li>spring.application.index</li>
|
||||
* <li>vcap.application.instance_index</li>
|
||||
* <li>PORT</li>
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ContextIdApplicationContextInitializer implements
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.springframework.core.Ordered;
|
||||
* or UPPERCASE variant of that) to the name of a character encoding (e.g. "UTF-8") then
|
||||
* this initializer throws an exception when the <code>file.encoding</code> System
|
||||
* property does not equal it.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* The System property <code>file.encoding</code> is normally set by the JVM in response
|
||||
* to the <code>LANG</code> or <code>LC_ALL</code> environment variables. It is used
|
||||
@@ -39,7 +39,7 @@ import org.springframework.core.Ordered;
|
||||
* the file encoding System property on the command line (with standard JVM features), but
|
||||
* also consider setting the <code>LANG</code> environment variable to an explicit
|
||||
* character-encoding value (e.g. "en_GB.UTF-8").
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class FileEncodingApplicationListener implements
|
||||
|
||||
@@ -82,7 +82,7 @@ import org.springframework.validation.BindException;
|
||||
* ("spring.main.sources" - a CSV list) the flag to indicate a web environment
|
||||
* ("spring.main.web_environment=true") or the flag to switch off the banner
|
||||
* ("spring.main.show_banner=false").
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.springframework.util.StringUtils;
|
||||
/**
|
||||
* {@link ApplicationContextInitializer} that delegates to other initializers that are
|
||||
* specified under a {@literal context.initializer.classes} environment property.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.springframework.util.StringUtils;
|
||||
/**
|
||||
* {@link ApplicationListener} that delegates to other listeners that are specified under
|
||||
* a {@literal context.listener.classes} environment property.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.springframework.util.StringUtils;
|
||||
* {@link PropertySource} that returns a random value for any property that starts with
|
||||
* {@literal "random."}. Return a {@code byte[]} unless the property name ends with
|
||||
* {@literal ".int} or {@literal ".long"}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class RandomValuePropertySource extends PropertySource<Random> {
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Abstract base class for {@link ConfigurableEmbeddedServletContainer} implementations.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @see AbstractEmbeddedServletContainerFactory
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
|
||||
/**
|
||||
* Abstract base class for {@link EmbeddedServletContainerFactory} implementations.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
*/
|
||||
|
||||
@@ -40,7 +40,7 @@ import org.springframework.web.context.support.AnnotationConfigWebApplicationCon
|
||||
* Note: In case of multiple {@code @Configuration} classes, later {@code @Bean}
|
||||
* definitions will override ones defined in earlier loaded files. This can be leveraged
|
||||
* to deliberately override certain bean definitions via an extra Configuration class.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see #register(Class...)
|
||||
* @see #scan(String...)
|
||||
|
||||
@@ -25,7 +25,7 @@ import java.util.concurrent.TimeUnit;
|
||||
/**
|
||||
* Simple interface that represents customizations to an
|
||||
* {@link EmbeddedServletContainerFactory}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see EmbeddedServletContainerFactory
|
||||
* @see EmbeddedServletContainerCustomizer
|
||||
|
||||
@@ -22,7 +22,7 @@ package org.springframework.boot.context.embedded;
|
||||
* <p>
|
||||
* Instances of this class are usually obtained via a
|
||||
* {@link EmbeddedServletContainerFactory}.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @see EmbeddedServletContainerFactory
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
* {@link BeanPostProcessor} (so called very early in the ApplicationContext lifecycle).
|
||||
* It might be safer to lookup dependencies lazily in the enclosing BeanFactory rather
|
||||
* than injecting them with <code>@Autowired</code>.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see EmbeddedServletContainerCustomizerBeanPostProcessor
|
||||
*/
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.springframework.core.annotation.AnnotationAwareOrderComparator;
|
||||
/**
|
||||
* {@link BeanPostProcessor} that apply all {@link EmbeddedServletContainerCustomizer}s
|
||||
* from the bean factory to {@link ConfigurableEmbeddedServletContainer} beans.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.springframework.boot.context.embedded;
|
||||
|
||||
/**
|
||||
* Exceptions thrown by an embedded servlet container.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletCon
|
||||
* Factory interface that can be used to create {@link EmbeddedServletContainer}s.
|
||||
* Implementations are encouraged to extend
|
||||
* {@link AbstractEmbeddedServletContainerFactory} when possible.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see EmbeddedServletContainer
|
||||
* @see AbstractEmbeddedServletContainerFactory
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.springframework.context.ApplicationEvent;
|
||||
* {@link EmbeddedServletContainer} is ready. Useful for obtaining the local port of a
|
||||
* running server. Normally it will have been started, but listeners are free to inspect
|
||||
* the server and stop and start it if they want to.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class EmbeddedServletContainerInitializedEvent extends ApplicationEvent {
|
||||
|
||||
@@ -79,7 +79,7 @@ import org.springframework.web.context.support.WebApplicationContextUtils;
|
||||
* Although this context can be used directly, most developers should consider using the
|
||||
* {@link AnnotationConfigEmbeddedWebApplicationContext} or
|
||||
* {@link XmlEmbeddedWebApplicationContext} variants.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @see AnnotationConfigEmbeddedWebApplicationContext
|
||||
|
||||
@@ -22,7 +22,7 @@ import org.springframework.util.ObjectUtils;
|
||||
/**
|
||||
* Simple container-independent abstraction for servlet error pages. Roughly equivalent to
|
||||
* the {@literal <error-page>} element traditionally found in web.xml.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ErrorPage {
|
||||
|
||||
@@ -43,7 +43,7 @@ import org.springframework.util.Assert;
|
||||
* {@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)
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.springframework.util.Assert;
|
||||
/**
|
||||
* Simple container-independent abstraction for servlet mime mappings. Roughly equivalent
|
||||
* to the {@literal <mime-mapping>} element traditionally found in web.xml.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public final class MimeMappings implements Iterable<Mapping> {
|
||||
|
||||
@@ -24,12 +24,12 @@ import org.springframework.util.Assert;
|
||||
* Factory that can be used to create a {@link MultipartConfigElement}. Size values can be
|
||||
* set using traditional {@literal long} values 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
|
||||
*/
|
||||
public class MultipartConfigFactory {
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Base class for Servlet 3.0+ based registration beans.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see ServletRegistrationBean
|
||||
* @see FilterRegistrationBean
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.springframework.web.WebApplicationInitializer;
|
||||
* managed by Spring and not the Servlet container.
|
||||
* <p>
|
||||
* For configuration examples see {@link WebApplicationInitializer}.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see WebApplicationInitializer
|
||||
*/
|
||||
|
||||
@@ -40,7 +40,7 @@ import org.springframework.util.ClassUtils;
|
||||
* 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>
|
||||
|
||||
@@ -41,7 +41,7 @@ import org.springframework.util.Assert;
|
||||
* 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 '/*'. The servlet name will be deduced if not specified.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see ServletContextInitializer
|
||||
* @see ServletContext#addServlet(String, Servlet)
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.springframework.web.context.support.ServletContextAwareProcessor;
|
||||
* {@link ConfigurableWebApplicationContext}. Can be used when registering the processor
|
||||
* can occur before the {@link ServletContext} or {@link ServletConfig} have been
|
||||
* initialized.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class WebApplicationContextServletContextAwareProcessor extends
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.springframework.web.context.support.XmlWebApplicationContext;
|
||||
* Note: In case of multiple config locations, later bean definitions will override ones
|
||||
* defined in earlier loaded files. This can be leveraged to deliberately override certain
|
||||
* bean definitions via an extra XML file.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see #setNamespace
|
||||
* @see #setConfigLocations
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.springframework.util.ReflectionUtils;
|
||||
* {@link EmbeddedServletContainer} that can be used to control an embedded Jetty server.
|
||||
* Usually this class should be created using the
|
||||
* {@link JettyEmbeddedServletContainerFactory} and not directly.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @see JettyEmbeddedServletContainerFactory
|
||||
|
||||
@@ -52,7 +52,7 @@ import org.springframework.util.StringUtils;
|
||||
* <p>
|
||||
* Unless explicitly configured otherwise this factory will created containers that
|
||||
* listens for HTTP requests on port 8080.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @author Andrey Hihlovskiy
|
||||
|
||||
@@ -22,7 +22,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
|
||||
/**
|
||||
* Jetty {@link WebAppContext} used by {@link JettyEmbeddedServletContainer} to support
|
||||
* deferred initialization.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
class JettyEmbeddedWebAppContext extends WebAppContext {
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.eclipse.jetty.server.Server;
|
||||
|
||||
/**
|
||||
* Callback interface that can be used to customize a Jetty {@link Server}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see JettyEmbeddedServletContainerFactory
|
||||
*/
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Jetty {@link Configuration} that calls {@link ServletContextInitializer}s.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class ServletContextInitializerConfiguration extends AbstractConfiguration {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/**
|
||||
* Support for embedded servlet containers.
|
||||
*
|
||||
*
|
||||
* @see org.springframework.boot.context.embedded.EmbeddedServletContainerFactory
|
||||
* @see org.springframework.boot.context.embedded.EmbeddedWebApplicationContext
|
||||
*/
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Tomcat {@link LifecycleListener} that calls {@link ServletContextInitializer}s.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
*/
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.springframework.util.Assert;
|
||||
* {@link JarScanner} decorator allowing alternative default jar pattern matching. This
|
||||
* class extends {@link StandardJarScanner} rather than implementing the
|
||||
* {@link JarScanner} due to API changes introduced in Tomcat 8.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @see #apply(TomcatEmbeddedContext, String)
|
||||
*/
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.apache.catalina.connector.Connector;
|
||||
|
||||
/**
|
||||
* Callback interface that can be used to customize a Tomcat {@link Connector}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see TomcatEmbeddedServletContainerFactory
|
||||
*/
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.apache.catalina.Context;
|
||||
|
||||
/**
|
||||
* Callback interface that can be used to customize a Tomcat {@link Context}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see TomcatEmbeddedServletContainerFactory
|
||||
*/
|
||||
|
||||
@@ -26,7 +26,7 @@ import org.springframework.util.ReflectionUtils;
|
||||
/**
|
||||
* Tomcat {@link StandardContext} used by {@link TomcatEmbeddedServletContainer} to
|
||||
* support deferred initialization.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
class TomcatEmbeddedContext extends StandardContext {
|
||||
|
||||
@@ -34,7 +34,7 @@ import org.springframework.util.Assert;
|
||||
* {@link EmbeddedServletContainer} that can be used to control an embedded Tomcat server.
|
||||
* Usually this class should be created using the
|
||||
* {@link TomcatEmbeddedServletContainerFactory} and not directly.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @see TomcatEmbeddedServletContainerFactory
|
||||
|
||||
@@ -63,7 +63,7 @@ import org.springframework.util.StreamUtils;
|
||||
* <p>
|
||||
* Unless explicitly configured otherwise this factory will created containers that
|
||||
* listens for HTTP requests on port 8080.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @author Brock Mills
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
* {@link ClassLoader#getSystemClassLoader() system classloader}. This is required to to
|
||||
* ensure that any custom context classloader is always used (as is the case with some
|
||||
* executable archives).
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class TomcatEmbeddedWebappClassLoader extends WebappClassLoader {
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.springframework.util.ReflectionUtils;
|
||||
|
||||
/**
|
||||
* Abstraction to add resources that works with both Tomcat 8 and 7.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.springframework.core.env.Environment;
|
||||
/**
|
||||
* Event published when a {@link SpringApplication} is starting up and the
|
||||
* {@link Environment} is first available for inspection and modification.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ApplicationEnvironmentPreparedEvent extends SpringApplicationEvent {
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.springframework.context.ConfigurableApplicationContext;
|
||||
|
||||
/**
|
||||
* Event published by a {@link SpringApplication} when it fails to start.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ApplicationFailedEvent extends SpringApplicationEvent {
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.springframework.core.env.Environment;
|
||||
* Event published as when a {@link SpringApplication} is starting up and the
|
||||
* {@link ApplicationContext} is fully prepared but not refreshed. The bean definitions
|
||||
* will be loaded and the {@link Environment} is ready for use at this stage.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ApplicationPreparedEvent extends SpringApplicationEvent {
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.springframework.core.env.Environment;
|
||||
* available, but after the {@link ApplicationListener}s have been registered. The source
|
||||
* of the event is the {@link SpringApplication} itself, but beware of using its internal
|
||||
* state too much at this early stage since it might be modified later in the lifecycle.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ApplicationStartedEvent extends SpringApplicationEvent {
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.springframework.core.env.ConfigurableEnvironment;
|
||||
|
||||
/**
|
||||
* {@link SpringApplicationRunListener} to publish {@link SpringApplicationEvent}s.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class EventPublishingRunListener implements SpringApplicationRunListener {
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.springframework.context.ApplicationEvent;
|
||||
|
||||
/**
|
||||
* Base class for {@link ApplicationEvent} related to a {@link SpringApplication}.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public abstract class SpringApplicationEvent extends ApplicationEvent {
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.springframework.util.ReflectionUtils.MethodCallback;
|
||||
/**
|
||||
* Utility class to memorize <code>@Bean</code> definition meta data during initialization
|
||||
* of the bean factory.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
||||
@@ -25,7 +25,7 @@ import java.lang.annotation.Target;
|
||||
/**
|
||||
* Annotation for externalized configuration. Add this to a class definition if you want
|
||||
* to bind and validate some external Properties (e.g. from a .properties file).
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see ConfigurationPropertiesBindingPostProcessor
|
||||
*/
|
||||
|
||||
@@ -61,7 +61,7 @@ import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
|
||||
/**
|
||||
* {@link BeanPostProcessor} to bind {@link PropertySources} to beans annotated with
|
||||
* {@link ConfigurationProperties}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
* @author Christian Dupuis
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.core.type.AnnotationMetadata;
|
||||
/**
|
||||
* {@link ImportBeanDefinitionRegistrar} for binding externalized application properties
|
||||
* to {@link ConfigurationProperties} beans.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -19,7 +19,7 @@ package org.springframework.boot.context.properties;
|
||||
/**
|
||||
* Properties holder registered by {@link EnableConfigurationPropertiesImportSelector} to
|
||||
* be picked up by {@link ConfigurationPropertiesBindingPostProcessor}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
class ConfigurationPropertiesHolder {
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.springframework.context.annotation.Import;
|
||||
* {@link ConfigurationProperties} beans can be registered in the standard way (for
|
||||
* example using {@link Bean @Bean} methods) or, for convenience, can be specified
|
||||
* directly on this annotation.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
@Target(ElementType.TYPE)
|
||||
|
||||
@@ -38,7 +38,7 @@ import org.springframework.util.StringUtils;
|
||||
* configuration. If one is declared then it a bean definition is registered with id equal
|
||||
* to the class name (thus an application context usually only contains one
|
||||
* {@link ConfigurationProperties} bean of each unique type).
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Christian Dupuis
|
||||
*/
|
||||
|
||||
@@ -48,7 +48,7 @@ import org.springframework.stereotype.Component;
|
||||
* accepting error page registrations from Spring Boot's
|
||||
* {@link EmbeddedServletContainerCustomizer} (any beans of that type in the context will
|
||||
* be applied to this container).
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory
|
||||
/**
|
||||
* Marker interface for {@link EmbeddedServletContainerFactory} types that are actually
|
||||
* safe to run in a non-embedded container.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public interface NonEmbeddedServletContainerFactory {
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.web.context.ConfigurableWebApplicationContext;
|
||||
|
||||
/**
|
||||
* {@link ApplicationContextInitializer} for setting the servlet context.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ServletContextApplicationContextInitializer implements
|
||||
|
||||
@@ -39,7 +39,7 @@ import org.springframework.web.context.WebApplicationContext;
|
||||
* 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 (we do) then you won't need
|
||||
* this at all.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public abstract class SpringBootServletInitializer implements WebApplicationInitializer {
|
||||
|
||||
@@ -28,10 +28,10 @@ import org.springframework.core.env.PropertySource;
|
||||
/**
|
||||
* An mutable, enumerable, composite property source. New sources are added last (and
|
||||
* hence resolved with lowest priority).
|
||||
*
|
||||
*
|
||||
* @see PropertySource
|
||||
* @see EnumerablePropertySource
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class EnumerableCompositePropertySource extends
|
||||
|
||||
@@ -26,7 +26,7 @@ import org.springframework.core.io.support.PropertiesLoaderUtils;
|
||||
|
||||
/**
|
||||
* Strategy to load '.properties' files into a {@link PropertySource}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.springframework.core.io.support.SpringFactoriesLoader;
|
||||
/**
|
||||
* Strategy interface located via {@link SpringFactoriesLoader} and used to load a
|
||||
* {@link PropertySource}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -34,7 +34,7 @@ import org.springframework.util.StringUtils;
|
||||
/**
|
||||
* Utility that can be used to {@link MutablePropertySources} using
|
||||
* {@link PropertySourceLoader}s.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class PropertySourcesLoader {
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Strategy to load '.yml' (or '.yaml') files into a {@link PropertySource}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* Thin wrapper to adapt Jackson 2 {@link ObjectMapper} to {@link JsonParser}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see JsonParserFactory
|
||||
*/
|
||||
|
||||
@@ -21,7 +21,7 @@ import java.util.Map;
|
||||
|
||||
/**
|
||||
* Parser that can read JSON formatted strings into {@link Map}s or {@link List}s.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see JsonParserFactory
|
||||
* @see SimpleJsonParser
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Factory to create a {@link JsonParser}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see JacksonJsonParser
|
||||
* @see YamlJsonParser
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.springframework.util.StringUtils;
|
||||
* limitations with respect to the JSON specification (e.g. only supports String values),
|
||||
* so users will probably prefer to have a library handle things instead (Jackson or Snake
|
||||
* YAML are supported).
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see JsonParserFactory
|
||||
*/
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.yaml.snakeyaml.Yaml;
|
||||
|
||||
/**
|
||||
* Thin wrapper to adapt Snake {@link Yaml} to {@link JsonParser}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see JsonParserFactory
|
||||
*/
|
||||
|
||||
@@ -12,7 +12,7 @@ import org.springframework.util.ClassUtils;
|
||||
/**
|
||||
* {@link ApplicationListener} that replaces the liquibase {@link ServiceLocator} with a
|
||||
* version that works with Spring Boot executable archives.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
*/
|
||||
|
||||
@@ -36,7 +36,7 @@ import org.springframework.util.ClassUtils;
|
||||
* Liquibase {@link PackageScanClassResolver} implementation that uses Spring's resource
|
||||
* scanning to locate classes. This variant is safe to use with Spring Boot packaged
|
||||
* executable JARs.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class SpringPackageScanClassResolver extends DefaultPackageScanClassResolver {
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Abstract base class for {@link LoggingSystem} implementations.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
*/
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.springframework.core.Ordered;
|
||||
* events} by logging the classpath of the thread context class loader (TCCL) at
|
||||
* {@code DEBUG} level and to {@link ApplicationFailedEvent error events} by logging the
|
||||
* TCCL's classpath at {@code INFO} level.
|
||||
*
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
*/
|
||||
public final class ClasspathLoggingApplicationListener implements
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.springframework.boot.logging;
|
||||
|
||||
/**
|
||||
* Logging levels supported by a {@link LoggingSystem}.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public enum LogLevel {
|
||||
|
||||
@@ -65,7 +65,7 @@ import org.springframework.util.StringUtils;
|
||||
* <li><code>PID</code> is set to the value of the current process ID if it can be
|
||||
* determined</li>
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Common abstraction over logging systems.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
*/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user