1919import grails .core .GrailsApplication ;
2020import org .grails .encoder .EncodingStateRegistry ;
2121import org .grails .taglib .AbstractTemplateVariableBinding ;
22+ import org .grails .taglib .TemplateVariableBinding ;
2223import org .grails .taglib .encoder .OutputContext ;
2324import org .grails .taglib .encoder .OutputContextLookup ;
2425import org .grails .taglib .encoder .OutputEncodingStack ;
@@ -54,17 +55,26 @@ static class WebOutputContext implements OutputContext {
5455
5556 @ Override
5657 public EncodingStateRegistry getEncodingStateRegistry () {
57- return lookupWebRequest ().getEncodingStateRegistry ();
58+ GrailsWebRequest grailsWebRequest = lookupWebRequest ();
59+ if (grailsWebRequest != null )
60+ return grailsWebRequest .getEncodingStateRegistry ();
61+ return null ;
5862 }
5963
6064 @ Override
6165 public void setCurrentOutputEncodingStack (OutputEncodingStack outputEncodingStack ) {
62- lookupWebRequest ().setAttribute (ATTRIBUTE_NAME_OUTPUT_STACK , outputEncodingStack , RequestAttributes .SCOPE_REQUEST );
66+ GrailsWebRequest grailsWebRequest = lookupWebRequest ();
67+ if (grailsWebRequest != null )
68+ grailsWebRequest .setAttribute (ATTRIBUTE_NAME_OUTPUT_STACK , outputEncodingStack , RequestAttributes .SCOPE_REQUEST );
6369 }
6470
6571 @ Override
6672 public OutputEncodingStack getCurrentOutputEncodingStack () {
67- return (OutputEncodingStack ) lookupWebRequest ().getAttribute (ATTRIBUTE_NAME_OUTPUT_STACK , RequestAttributes .SCOPE_REQUEST );
73+ GrailsWebRequest grailsWebRequest = lookupWebRequest ();
74+ if (grailsWebRequest != null ) {
75+ return (OutputEncodingStack ) grailsWebRequest .getAttribute (ATTRIBUTE_NAME_OUTPUT_STACK , RequestAttributes .SCOPE_REQUEST );
76+ }
77+ return null ;
6878 }
6979
7080 @ Override
@@ -74,34 +84,51 @@ public Writer getCurrentWriter() {
7484
7585 @ Override
7686 public void setCurrentWriter (Writer currentWriter ) {
77- lookupWebRequest ().setOut (currentWriter );
87+ GrailsWebRequest grailsWebRequest = lookupWebRequest ();
88+ if (grailsWebRequest != null ) {
89+ grailsWebRequest .setOut (currentWriter );
90+ }
7891 }
7992
8093 @ Override
8194 public AbstractTemplateVariableBinding createAndRegisterRootBinding () {
82- AbstractTemplateVariableBinding binding = new WebRequestTemplateVariableBinding (lookupWebRequest ());
95+ GrailsWebRequest webRequest = lookupWebRequest ();
96+ AbstractTemplateVariableBinding binding = webRequest != null ? new WebRequestTemplateVariableBinding (webRequest ) : new TemplateVariableBinding ();
8397 setBinding (binding );
8498 return binding ;
8599 }
86100
87101 @ Override
88102 public AbstractTemplateVariableBinding getBinding () {
89- return (AbstractTemplateVariableBinding )lookupWebRequest ().getAttribute (GrailsApplicationAttributes .PAGE_SCOPE , RequestAttributes .SCOPE_REQUEST );
103+ GrailsWebRequest grailsWebRequest = lookupWebRequest ();
104+ if (grailsWebRequest == null ) {
105+ return null ;
106+ }
107+ return (AbstractTemplateVariableBinding ) grailsWebRequest .getAttribute (GrailsApplicationAttributes .PAGE_SCOPE , RequestAttributes .SCOPE_REQUEST );
90108 }
91109
92110 @ Override
93111 public void setBinding (AbstractTemplateVariableBinding binding ) {
94- lookupWebRequest ().setAttribute (GrailsApplicationAttributes .PAGE_SCOPE , binding , RequestAttributes .SCOPE_REQUEST );
112+ GrailsWebRequest grailsWebRequest = lookupWebRequest ();
113+ if (grailsWebRequest != null ) {
114+ grailsWebRequest .setAttribute (GrailsApplicationAttributes .PAGE_SCOPE , binding , RequestAttributes .SCOPE_REQUEST );
115+ }
95116 }
96117
97118 @ Override
98119 public GrailsApplication getGrailsApplication () {
99- return lookupWebRequest ().getAttributes ().getGrailsApplication ();
120+ GrailsWebRequest grailsWebRequest = lookupWebRequest ();
121+ if (grailsWebRequest != null )
122+ return grailsWebRequest .getAttributes ().getGrailsApplication ();
123+ return null ;
100124 }
101125
102126 @ Override
103127 public void setContentType (String contentType ) {
104- lookupResponse ().setContentType (contentType );
128+ HttpServletResponse httpServletResponse = lookupResponse ();
129+ if (httpServletResponse != null ) {
130+ httpServletResponse .setContentType (contentType );
131+ }
105132 }
106133
107134 @ Override
@@ -117,7 +144,16 @@ protected GrailsWebRequest lookupWebRequest() {
117144
118145 protected HttpServletResponse lookupResponse () {
119146 HttpServletResponse wrapped = WrappedResponseHolder .getWrappedResponse ();
120- return wrapped != null ? wrapped : lookupWebRequest ().getCurrentResponse ();
147+ if (wrapped != null ) {
148+ return wrapped ;
149+ }
150+ else {
151+ GrailsWebRequest grailsWebRequest = lookupWebRequest ();
152+ if (grailsWebRequest != null ) {
153+ return grailsWebRequest .getCurrentResponse ();
154+ }
155+ }
156+ return null ;
121157 }
122158 }
123159}
0 commit comments