Skip to content

Commit b151be5

Browse files
committed
Fix failing test. Fix NPE in PageRenderer when value is null.
1 parent d0365bb commit b151be5

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

grails-web/src/main/groovy/grails/gsp/PageRenderer.groovy

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,11 @@ class PageRenderer implements ApplicationContextAware, ServletContextAware{
299299
}
300300

301301
void setAttribute(String name, Object o) {
302-
attributes[name] = o
302+
if(o != null) {
303+
attributes[name] = o
304+
} else {
305+
attributes.remove name
306+
}
303307
}
304308

305309
void removeAttribute(String name) {

grails-web/src/main/groovy/org/codehaus/groovy/grails/web/pages/GroovyPageWritable.java

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,30 @@
1717
import grails.util.Environment;
1818
import groovy.lang.Binding;
1919
import groovy.lang.Writable;
20+
21+
import java.io.BufferedReader;
22+
import java.io.IOException;
23+
import java.io.InputStream;
24+
import java.io.InputStreamReader;
25+
import java.io.Reader;
26+
import java.io.Writer;
27+
import java.text.DateFormat;
28+
import java.util.Date;
29+
import java.util.HashMap;
30+
import java.util.Map;
31+
import java.util.concurrent.atomic.AtomicInteger;
32+
33+
import javax.servlet.http.HttpServletRequest;
34+
import javax.servlet.http.HttpServletResponse;
35+
2036
import org.apache.commons.logging.Log;
2137
import org.apache.commons.logging.LogFactory;
2238
import org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException;
2339
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes;
2440
import org.codehaus.groovy.grails.web.servlet.WrappedResponseHolder;
2541
import org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequest;
26-
import org.codehaus.groovy.grails.web.util.WebUtils;
2742
import org.springframework.web.context.request.RequestContextHolder;
2843

29-
import javax.servlet.http.HttpServletRequest;
30-
import javax.servlet.http.HttpServletResponse;
31-
import java.io.*;
32-
import java.text.DateFormat;
33-
import java.util.Date;
34-
import java.util.HashMap;
35-
import java.util.Map;
36-
import java.util.concurrent.atomic.AtomicInteger;
37-
3844
/**
3945
* An instance of groovy.lang.Writable that writes itself to the specified
4046
* writer, typically the response writer.
@@ -44,9 +50,9 @@
4450
* @since 0.5
4551
*/
4652
class GroovyPageWritable implements Writable {
47-
4853
private static final Log LOG = LogFactory.getLog(GroovyPageWritable.class);
4954
private static final String ATTRIBUTE_NAME_DEBUG_TEMPLATES_ID_COUNTER = "org.codehaus.groovy.grails.web.pages.DEBUG_TEMPLATES_COUNTER";
55+
private static final String GSP_NONE_CODEC_NAME = "none";
5056
private HttpServletResponse response;
5157
private HttpServletRequest request;
5258
private GroovyPageMetaInfo metaInfo;
@@ -157,7 +163,7 @@ public Writer writeTo(Writer out) throws IOException {
157163
}
158164

159165
GroovyPageBinding binding = createBinding(parentBinding);
160-
String previousGspCode = null;
166+
String previousGspCode = GSP_NONE_CODEC_NAME;
161167
if (hasRequest) {
162168
request.setAttribute(GrailsApplicationAttributes.PAGE_SCOPE, binding);
163169
previousGspCode = (String)request.getAttribute(GrailsApplicationAttributes.GSP_CODEC);
@@ -170,7 +176,7 @@ public Writer writeTo(Writer out) throws IOException {
170176
binding.setVariableDirectly(GroovyPage.CODEC_VARNAME, metaInfo.getCodecClass());
171177
} else {
172178
if (hasRequest) {
173-
request.setAttribute(GrailsApplicationAttributes.GSP_CODEC, null);
179+
request.setAttribute(GrailsApplicationAttributes.GSP_CODEC, GSP_NONE_CODEC_NAME);
174180
}
175181
binding.setVariableDirectly(GroovyPage.CODEC_VARNAME, gspNoneCodeInstance);
176182
}
@@ -219,7 +225,7 @@ public Writer writeTo(Writer out) throws IOException {
219225
} else {
220226
request.setAttribute(GrailsApplicationAttributes.PAGE_SCOPE, parentBinding);
221227
}
222-
request.setAttribute(GrailsApplicationAttributes.GSP_CODEC, previousGspCode);
228+
request.setAttribute(GrailsApplicationAttributes.GSP_CODEC, previousGspCode != null ? previousGspCode : GSP_NONE_CODEC_NAME);
223229
}
224230
}
225231
if (debugTemplates) {

0 commit comments

Comments
 (0)