/*
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.web.server;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import org.springframework.util.Assert;
Abstract base class for ConfigurableWebServerFactory
implementations. Author: Phillip Webb, Dave Syer, Andy Wilkinson, Stephane Nicoll, Ivan Sopov, Eddú Meléndez, Brian Clozel Since: 2.0.0
/**
* Abstract base class for {@link ConfigurableWebServerFactory} implementations.
*
* @author Phillip Webb
* @author Dave Syer
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Ivan Sopov
* @author Eddú Meléndez
* @author Brian Clozel
* @since 2.0.0
*/
public abstract class AbstractConfigurableWebServerFactory implements ConfigurableWebServerFactory {
private int port = 8080;
private InetAddress address;
private Set<ErrorPage> errorPages = new LinkedHashSet<>();
private Ssl ssl;
private SslStoreProvider sslStoreProvider;
private Http2 http2;
private Compression compression;
private String serverHeader;
private Shutdown shutdown = Shutdown.IMMEDIATE;
Create a new AbstractConfigurableWebServerFactory
instance. /**
* Create a new {@link AbstractConfigurableWebServerFactory} instance.
*/
public AbstractConfigurableWebServerFactory() {
}
Create a new AbstractConfigurableWebServerFactory
instance with the specified port. Params: - port – the port number for the web server
/**
* Create a new {@link AbstractConfigurableWebServerFactory} instance with the
* specified port.
* @param port the port number for the web server
*/
public AbstractConfigurableWebServerFactory(int port) {
this.port = port;
}
The port that the web server listens on.
Returns: the port
/**
* The port that the web server listens on.
* @return the port
*/
public int getPort() {
return this.port;
}
@Override
public void setPort(int port) {
this.port = port;
}
Return the address that the web server binds to.
Returns: the address
/**
* Return the address that the web server binds to.
* @return the address
*/
public InetAddress getAddress() {
return this.address;
}
@Override
public void setAddress(InetAddress address) {
this.address = address;
}
Returns a mutable set of ErrorPages
that will be used when handling exceptions. Returns: the error pages
/**
* Returns a mutable set of {@link ErrorPage ErrorPages} that will be used when
* handling exceptions.
* @return the error pages
*/
public Set<ErrorPage> getErrorPages() {
return this.errorPages;
}
@Override
public void setErrorPages(Set<? extends ErrorPage> errorPages) {
Assert.notNull(errorPages, "ErrorPages must not be null");
this.errorPages = new LinkedHashSet<>(errorPages);
}
@Override
public void addErrorPages(ErrorPage... errorPages) {
Assert.notNull(errorPages, "ErrorPages must not be null");
this.errorPages.addAll(Arrays.asList(errorPages));
}
public Ssl getSsl() {
return this.ssl;
}
@Override
public void setSsl(Ssl ssl) {
this.ssl = ssl;
}
public SslStoreProvider getSslStoreProvider() {
return this.sslStoreProvider;
}
@Override
public void setSslStoreProvider(SslStoreProvider sslStoreProvider) {
this.sslStoreProvider = sslStoreProvider;
}
public Http2 getHttp2() {
return this.http2;
}
@Override
public void setHttp2(Http2 http2) {
this.http2 = http2;
}
public Compression getCompression() {
return this.compression;
}
@Override
public void setCompression(Compression compression) {
this.compression = compression;
}
public String getServerHeader() {
return this.serverHeader;
}
@Override
public void setServerHeader(String serverHeader) {
this.serverHeader = serverHeader;
}
@Override
public void setShutdown(Shutdown shutdown) {
this.shutdown = shutdown;
}
Returns the shutdown configuration that will be applied to the server.
Returns: the shutdown configuration Since: 2.3.0
/**
* Returns the shutdown configuration that will be applied to the server.
* @return the shutdown configuration
* @since 2.3.0
*/
public Shutdown getShutdown() {
return this.shutdown;
}
Return the absolute temp dir for given web server.
Params: - prefix – server name
Returns: the temp dir for given server.
/**
* Return the absolute temp dir for given web server.
* @param prefix server name
* @return the temp dir for given server.
*/
protected final File createTempDir(String prefix) {
try {
File tempDir = Files.createTempDirectory(prefix + "." + getPort() + ".").toFile();
tempDir.deleteOnExit();
return tempDir;
}
catch (IOException ex) {
throw new WebServerException(
"Unable to create tempDir. java.io.tmpdir is set to " + System.getProperty("java.io.tmpdir"), ex);
}
}
}