1
1
/*
2
- * Copyright 2002-2018 the original author or authors.
2
+ * Copyright 2002-2019 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
27
27
import javax .servlet .http .HttpServletRequestWrapper ;
28
28
import javax .servlet .http .HttpServletResponse ;
29
29
30
+ import org .springframework .security .web .header .writers .CompositeHeaderWriter ;
30
31
import org .springframework .security .web .util .OnCommittedResponseWrapper ;
31
32
import org .springframework .util .Assert ;
32
33
import org .springframework .web .filter .OncePerRequestFilter ;
38
39
*
39
40
* @author Marten Deinum
40
41
* @author Josh Cummings
42
+ * @author Ankur Pathak
41
43
* @since 3.2
42
- *
43
44
*/
44
45
public class HeaderWriterFilter extends OncePerRequestFilter {
45
46
47
+
46
48
/**
47
- * Collection of {@link HeaderWriter} instances to write out the headers to the
49
+ * Composite {@link CompositeHeaderWriter} containing Collection of {@link HeaderWriter} instances to write out the headers to the
48
50
* response.
49
51
*/
50
- private final List < HeaderWriter > headerWriters ;
52
+ private final HeaderWriter headerWriter ;
51
53
52
54
/**
53
55
* Creates a new instance.
54
56
*
55
57
* @param headerWriters the {@link HeaderWriter} instances to write out headers to the
56
- * {@link HttpServletResponse}.
58
+ * {@link HttpServletResponse}.
57
59
*/
58
60
public HeaderWriterFilter (List <HeaderWriter > headerWriters ) {
59
61
Assert .notEmpty (headerWriters , "headerWriters cannot be null or empty" );
60
- this .headerWriters = headerWriters ;
62
+ this .headerWriter = new CompositeHeaderWriter ( headerWriters ) ;
61
63
}
62
64
63
65
@ Override
64
66
protected void doFilterInternal (HttpServletRequest request ,
65
- HttpServletResponse response , FilterChain filterChain )
66
- throws ServletException , IOException {
67
+ HttpServletResponse response , FilterChain filterChain )
68
+ throws ServletException , IOException {
67
69
68
70
HeaderWriterResponse headerWriterResponse = new HeaderWriterResponse (request ,
69
- response , this .headerWriters );
71
+ response , this .headerWriter );
70
72
HeaderWriterRequest headerWriterRequest = new HeaderWriterRequest (request ,
71
73
headerWriterResponse );
72
74
73
75
try {
74
76
filterChain .doFilter (headerWriterRequest , headerWriterResponse );
75
- }
76
- finally {
77
+ } finally {
77
78
headerWriterResponse .writeHeaders ();
78
79
}
79
80
}
80
81
81
82
static class HeaderWriterResponse extends OnCommittedResponseWrapper {
82
83
private final HttpServletRequest request ;
83
- private final List < HeaderWriter > headerWriters ;
84
+ private final HeaderWriter headerWriter ;
84
85
85
86
HeaderWriterResponse (HttpServletRequest request , HttpServletResponse response ,
86
- List < HeaderWriter > headerWriters ) {
87
+ HeaderWriter headerWriter ) {
87
88
super (response );
88
89
this .request = request ;
89
- this .headerWriters = headerWriters ;
90
+ this .headerWriter = headerWriter ;
90
91
}
91
92
92
93
/*
@@ -105,9 +106,7 @@ protected void writeHeaders() {
105
106
if (isDisableOnResponseCommitted ()) {
106
107
return ;
107
108
}
108
- for (HeaderWriter headerWriter : this .headerWriters ) {
109
- headerWriter .writeHeaders (this .request , getHttpResponse ());
110
- }
109
+ this .headerWriter .writeHeaders (this .request , getHttpResponse ());
111
110
}
112
111
113
112
private HttpServletResponse getHttpResponse () {
0 commit comments