@ -17,9 +17,14 @@
@@ -17,9 +17,14 @@
package org.springframework.web.servlet.view ;
import java.util.ArrayList ;
import java.util.Arrays ;
import java.util.Collection ;
import java.util.Map ;
import java.util.function.Consumer ;
import org.springframework.http.HttpHeaders ;
import org.springframework.http.HttpStatusCode ;
import org.springframework.lang.Nullable ;
import org.springframework.web.servlet.ModelAndView ;
/ * *
@ -31,9 +36,40 @@ import org.springframework.web.servlet.ModelAndView;
@@ -31,9 +36,40 @@ import org.springframework.web.servlet.ModelAndView;
* /
final class DefaultFragmentsRenderingBuilder implements FragmentsRendering . Builder {
@Nullable
private HttpStatusCode status ;
@Nullable
private HttpHeaders headers ;
private final Collection < ModelAndView > fragments = new ArrayList < > ( ) ;
@Override
public FragmentsRendering . Builder status ( HttpStatusCode status ) {
this . status = status ;
return this ;
}
@Override
public FragmentsRendering . Builder header ( String headerName , String . . . headerValues ) {
initHeaders ( ) . put ( headerName , Arrays . asList ( headerValues ) ) ;
return this ;
}
@Override
public FragmentsRendering . Builder headers ( Consumer < HttpHeaders > headersConsumer ) {
headersConsumer . accept ( initHeaders ( ) ) ;
return this ;
}
private HttpHeaders initHeaders ( ) {
if ( this . headers = = null ) {
this . headers = new HttpHeaders ( ) ;
}
return this . headers ;
}
@Override
public DefaultFragmentsRenderingBuilder fragment ( String viewName , Map < String , Object > model ) {
return fragment ( new ModelAndView ( viewName , model ) ) ;
@ -58,7 +94,8 @@ final class DefaultFragmentsRenderingBuilder implements FragmentsRendering.Build
@@ -58,7 +94,8 @@ final class DefaultFragmentsRenderingBuilder implements FragmentsRendering.Build
@Override
public FragmentsRendering build ( ) {
return new DefaultFragmentsRendering ( this . fragments ) ;
return new DefaultFragmentsRendering (
this . status , ( this . headers ! = null ? this . headers : HttpHeaders . EMPTY ) , this . fragments ) ;
}
}