/*
 * 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.embedded.undertow;

import java.io.File;
import java.util.Collection;
import java.util.List;

import io.undertow.Undertow;

import org.springframework.boot.web.reactive.server.AbstractReactiveWebServerFactory;
import org.springframework.boot.web.reactive.server.ReactiveWebServerFactory;
import org.springframework.boot.web.server.WebServer;
import org.springframework.http.server.reactive.UndertowHttpHandlerAdapter;

ReactiveWebServerFactory that can be used to create UndertowWebServers.
Author:Brian Clozel
Since:2.0.0
/** * {@link ReactiveWebServerFactory} that can be used to create {@link UndertowWebServer}s. * * @author Brian Clozel * @since 2.0.0 */
public class UndertowReactiveWebServerFactory extends AbstractReactiveWebServerFactory implements ConfigurableUndertowWebServerFactory { private UndertowWebServerFactoryDelegate delegate = new UndertowWebServerFactoryDelegate();
Create a new UndertowReactiveWebServerFactory instance.
/** * Create a new {@link UndertowReactiveWebServerFactory} instance. */
public UndertowReactiveWebServerFactory() { }
Create a new UndertowReactiveWebServerFactory that listens for requests using the specified port.
Params:
  • port – the port to listen on
/** * Create a new {@link UndertowReactiveWebServerFactory} that listens for requests * using the specified port. * @param port the port to listen on */
public UndertowReactiveWebServerFactory(int port) { super(port); } @Override public void setBuilderCustomizers(Collection<? extends UndertowBuilderCustomizer> customizers) { this.delegate.setBuilderCustomizers(customizers); } @Override public void addBuilderCustomizers(UndertowBuilderCustomizer... customizers) { this.delegate.addBuilderCustomizers(customizers); }
Returns a mutable collection of the UndertowBuilderCustomizers that will be applied to the Undertow Builder.
Returns:the customizers that will be applied
/** * Returns a mutable collection of the {@link UndertowBuilderCustomizer}s that will be * applied to the Undertow {@link io.undertow.Undertow.Builder Builder}. * @return the customizers that will be applied */
public Collection<UndertowBuilderCustomizer> getBuilderCustomizers() { return this.delegate.getBuilderCustomizers(); } @Override public void setBufferSize(Integer bufferSize) { this.delegate.setBufferSize(bufferSize); } @Override public void setIoThreads(Integer ioThreads) { this.delegate.setIoThreads(ioThreads); } @Override public void setWorkerThreads(Integer workerThreads) { this.delegate.setWorkerThreads(workerThreads); } @Override public void setUseDirectBuffers(Boolean directBuffers) { this.delegate.setUseDirectBuffers(directBuffers); } @Override public void setUseForwardHeaders(boolean useForwardHeaders) { this.delegate.setUseForwardHeaders(useForwardHeaders); } protected final boolean isUseForwardHeaders() { return this.delegate.isUseForwardHeaders(); } @Override public void setAccessLogDirectory(File accessLogDirectory) { this.delegate.setAccessLogDirectory(accessLogDirectory); } @Override public void setAccessLogPattern(String accessLogPattern) { this.delegate.setAccessLogPattern(accessLogPattern); } @Override public void setAccessLogPrefix(String accessLogPrefix) { this.delegate.setAccessLogPrefix(accessLogPrefix); } @Override public void setAccessLogSuffix(String accessLogSuffix) { this.delegate.setAccessLogSuffix(accessLogSuffix); } public boolean isAccessLogEnabled() { return this.delegate.isAccessLogEnabled(); } @Override public void setAccessLogEnabled(boolean accessLogEnabled) { this.delegate.setAccessLogEnabled(accessLogEnabled); } @Override public void setAccessLogRotate(boolean accessLogRotate) { this.delegate.setAccessLogRotate(accessLogRotate); } @Override public WebServer getWebServer(org.springframework.http.server.reactive.HttpHandler httpHandler) { Undertow.Builder builder = this.delegate.createBuilder(this); List<HttpHandlerFactory> httpHandlerFactories = this.delegate.createHttpHandlerFactories(this, (next) -> new UndertowHttpHandlerAdapter(httpHandler)); return new UndertowWebServer(builder, httpHandlerFactories, getPort() >= 0); } }