| 1 16 17 package org.springframework.web.servlet.tags; 18 19 import java.util.Arrays ; 20 import java.util.List ; 21 import java.util.Locale ; 22 23 import javax.servlet.ServletException ; 24 import javax.servlet.http.HttpServletRequest ; 25 import javax.servlet.jsp.JspException ; 26 import javax.servlet.jsp.PageContext ; 27 import javax.servlet.jsp.tagext.Tag ; 28 29 import org.springframework.context.MessageSourceResolvable; 30 import org.springframework.context.support.DefaultMessageSourceResolvable; 31 import org.springframework.mock.web.MockHttpServletRequest; 32 import org.springframework.web.context.ConfigurableWebApplicationContext; 33 import org.springframework.web.servlet.support.RequestContext; 34 import org.springframework.web.servlet.support.RequestContextUtils; 35 36 40 public class MessageTagTests extends AbstractTagTests { 41 42 public void testMessageTagWithCode1() throws JspException { 43 PageContext pc = createPageContext(); 44 final StringBuffer message = new StringBuffer (); 45 MessageTag tag = new MessageTag() { 46 protected void writeMessage(String msg) { 47 message.append(msg); 48 } 49 }; 50 tag.setPageContext(pc); 51 tag.setCode("test"); 52 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 53 assertEquals("Correct message", "test message", message.toString()); 54 } 55 56 public void testMessageTagWithCode2() throws JspException { 57 PageContext pc = createPageContext(); 58 MockHttpServletRequest request = (MockHttpServletRequest) pc.getRequest(); 59 request.addPreferredLocale(Locale.CANADA); 60 final StringBuffer message = new StringBuffer (); 61 MessageTag tag = new MessageTag() { 62 protected void writeMessage(String msg) { 63 message.append(msg); 64 } 65 }; 66 tag.setPageContext(pc); 67 pc.setAttribute("myattr", "test"); 68 tag.setCode("${myattr}"); 69 tag.setHtmlEscape("true"); 70 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 71 assertEquals("Correct message", "Canadian & test message", message.toString()); 72 } 73 74 public void testMessageTagWithNullCode() throws JspException { 75 PageContext pc = createPageContext(); 76 final StringBuffer message = new StringBuffer (); 77 MessageTag tag = new MessageTag() { 78 protected void writeMessage(String msg) { 79 message.append(msg); 80 } 81 }; 82 tag.setPageContext(pc); 83 tag.setCode(null); 84 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 85 assertEquals("Correct message", "null", message.toString()); 86 } 87 88 public void testMessageTagWithCodeAndStringArgument() throws JspException { 89 PageContext pc = createPageContext(); 90 final StringBuffer message = new StringBuffer (); 91 MessageTag tag = new MessageTag() { 92 protected void writeMessage(String msg) { 93 message.append(msg); 94 } 95 }; 96 tag.setPageContext(pc); 97 tag.setCode("testArgs"); 98 tag.setArguments("arg1,arg2"); 99 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 100 assertEquals("Correct message", "test arg1 message arg2", message.toString()); 101 } 102 103 public void testMessageTagWithCodeAndArrayArgument() throws JspException { 104 PageContext pc = createPageContext(); 105 final StringBuffer message = new StringBuffer (); 106 MessageTag tag = new MessageTag() { 107 protected void writeMessage(String msg) { 108 message.append(msg); 109 } 110 }; 111 tag.setPageContext(pc); 112 tag.setCode("testArgs"); 113 tag.setArguments(new Object [] {"arg1", new Integer (5)}); 114 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 115 assertEquals("Correct message", "test arg1 message 5", message.toString()); 116 } 117 118 public void testMessageTagWithCodeAndObjectArgument() throws JspException { 119 PageContext pc = createPageContext(); 120 final StringBuffer message = new StringBuffer (); 121 MessageTag tag = new MessageTag() { 122 protected void writeMessage(String msg) { 123 message.append(msg); 124 } 125 }; 126 tag.setPageContext(pc); 127 tag.setCode("testArgs"); 128 tag.setArguments(new Integer (5)); 129 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 130 assertEquals("Correct message", "test 5 message {1}", message.toString()); 131 } 132 133 public void testMessageTagWithCodeAndExpressionArgument() throws JspException { 134 PageContext pc = createPageContext(); 135 final StringBuffer message = new StringBuffer (); 136 MessageTag tag = new MessageTag() { 137 protected void writeMessage(String msg) { 138 message.append(msg); 139 } 140 }; 141 tag.setPageContext(pc); 142 tag.setCode("testArgs"); 143 tag.setArguments("${arg1}"); 144 pc.setAttribute("arg1", "my,value"); 145 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 146 assertEquals("Correct message", "test my,value message {1}", message.toString()); 147 } 148 149 public void testMessageTagWithCodeAndExpressionArguments() throws JspException { 150 PageContext pc = createPageContext(); 151 final StringBuffer message = new StringBuffer (); 152 MessageTag tag = new MessageTag() { 153 protected void writeMessage(String msg) { 154 message.append(msg); 155 } 156 }; 157 tag.setPageContext(pc); 158 tag.setCode("testArgs"); 159 tag.setArguments("${arg1},${arg2}"); 160 pc.setAttribute("arg1", "my,value"); 161 pc.setAttribute("arg2", new Integer (5)); 162 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 163 assertEquals("Correct message", "test my,value message 5", message.toString()); 164 } 165 166 public void testMessageTagWithCodeAndText1() throws JspException { 167 PageContext pc = createPageContext(); 168 final StringBuffer message = new StringBuffer (); 169 MessageTag tag = new MessageTag() { 170 protected void writeMessage(String msg) { 171 message.append(msg); 172 } 173 }; 174 tag.setPageContext(pc); 175 tag.setCode("test"); 176 tag.setText("testtext"); 177 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 178 assertEquals("Correct message", "test message", (message.toString())); 179 } 180 181 public void testMessageTagWithCodeAndText2() throws JspException { 182 PageContext pc = createPageContext(); 183 final StringBuffer message = new StringBuffer (); 184 MessageTag tag = new MessageTag() { 185 protected void writeMessage(String msg) { 186 message.append(msg); 187 } 188 }; 189 tag.setPageContext(pc); 190 pc.setAttribute("myattr", "test & text"); 191 tag.setCode("test2"); 192 tag.setText("${myattr}"); 193 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 194 assertEquals("Correct message", "test & text", message.toString()); 195 } 196 197 public void testMessageTagWithText() throws JspException { 198 PageContext pc = createPageContext(); 199 final StringBuffer message = new StringBuffer (); 200 MessageTag tag = new MessageTag() { 201 protected void writeMessage(String msg) { 202 message.append(msg); 203 } 204 }; 205 tag.setPageContext(pc); 206 tag.setText("test & text"); 207 tag.setHtmlEscape("true"); 208 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 209 assertEquals("Correct message", "test & text", message.toString()); 210 } 211 212 public void testMessageTagWithTextAndJavaScriptEscape() throws JspException { 213 PageContext pc = createPageContext(); 214 final StringBuffer message = new StringBuffer (); 215 MessageTag tag = new MessageTag() { 216 protected void writeMessage(String msg) { 217 message.append(msg); 218 } 219 }; 220 tag.setPageContext(pc); 221 tag.setText("' test & text \\"); 222 tag.setJavaScriptEscape("true"); 223 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 224 assertEquals("Correct message", "\\' test & text \\\\", message.toString()); 225 } 226 227 public void testMessageTagWithTextAndHtmlEscapeAndJavaScriptEscape() throws JspException { 228 PageContext pc = createPageContext(); 229 final StringBuffer message = new StringBuffer (); 230 MessageTag tag = new MessageTag() { 231 protected void writeMessage(String msg) { 232 message.append(msg); 233 } 234 }; 235 tag.setPageContext(pc); 236 tag.setText("' test & text \\"); 237 tag.setHtmlEscape("true"); 238 tag.setJavaScriptEscape("true"); 239 assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); 240 assertEquals("Correct message", "\\' test & text \\\\", message.toString()); 241 } 242 243 public void testMessageWithVarAndScope() throws JspException { 244 PageContext pc = createPageContext(); 245 MessageTag tag = new MessageTag(); 246 tag.setPageContext(pc); 247 tag.setText("text & text"); 248 tag.setVar("testvar"); 249 tag.setScope("page"); 250 tag.doStartTag(); 251 assertEquals("text & text", pc.getAttribute("testvar")); 252 tag.release(); 253 254 tag = new MessageTag(); 255 tag.setPageContext(pc); 256 tag.setCode("test"); 257 tag.setVar("testvar2"); 258 tag.doStartTag(); 259 assertEquals("Correct message", "test message", pc.getAttribute("testvar2")); 260 tag.release(); 261 } 262 263 public void testMessageWithVar() throws JspException { 264 PageContext pc = createPageContext(); 265 MessageTag tag = new MessageTag(); 266 tag.setPageContext(pc); 267 tag.setText("text & text"); 268 tag.setVar("testvar"); 269 tag.doStartTag(); 270 assertEquals("text & text", pc.getAttribute("testvar")); 271 tag.release(); 272 273 tag.setPageContext(pc); 275 tag.setCode("test"); 276 tag.setVar("testvar"); 277 278 tag.doStartTag(); 279 assertEquals("Correct message", "test message", pc.getAttribute("testvar")); 280 } 281 282 public void testNullMessageSource() throws JspException { 283 PageContext pc = createPageContext(); 284 ConfigurableWebApplicationContext ctx = (ConfigurableWebApplicationContext) 285 RequestContextUtils.getWebApplicationContext(pc.getRequest(), pc.getServletContext()); 286 ctx.close(); 287 288 MessageTag tag = new MessageTag(); 289 tag.setPageContext(pc); 290 tag.setCode("test"); 291 tag.setVar("testvar2"); 292 tag.doStartTag(); 293 } 294 295 public void testRequestContext() throws ServletException { 296 PageContext pc = createPageContext(); 297 RequestContext rc = new RequestContext((HttpServletRequest ) pc.getRequest(), pc.getServletContext()); 298 assertEquals("test message", rc.getMessage("test")); 299 assertEquals("test message", rc.getMessage("test", (Object []) null)); 300 assertEquals("test message", rc.getMessage("test", "default")); 301 assertEquals("test message", rc.getMessage("test", (Object []) null, "default")); 302 assertEquals("test arg1 message arg2", 303 rc.getMessage("testArgs", new String [] {"arg1", "arg2"}, "default")); 304 assertEquals("test arg1 message arg2", 305 rc.getMessage("testArgs", Arrays.asList(new String [] {"arg1", "arg2"}), "default")); 306 assertEquals("default", rc.getMessage("testa", "default")); 307 assertEquals("default", rc.getMessage("testa", (List ) null, "default")); 308 MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(new String [] {"test"}); 309 assertEquals("test message", rc.getMessage(resolvable)); 310 } 311 312 } 313 | Popular Tags |