001: /*
002: * Copyright (c) 2002-2003 by OpenSymphony
003: * All rights reserved.
004: */
005: package com.opensymphony.webwork.components;
006:
007: import java.util.Iterator;
008: import java.util.Locale;
009: import java.util.ResourceBundle;
010: import java.util.Stack;
011:
012: import javax.servlet.jsp.tagext.TagSupport;
013:
014: import com.opensymphony.webwork.TestConfigurationProvider;
015: import com.opensymphony.webwork.views.jsp.AbstractTagTest;
016: import com.opensymphony.webwork.views.jsp.ActionTag;
017: import com.opensymphony.webwork.views.jsp.BeanTag;
018: import com.opensymphony.webwork.views.jsp.ElseIfTag;
019: import com.opensymphony.webwork.views.jsp.ElseTag;
020: import com.opensymphony.webwork.views.jsp.I18nTag;
021: import com.opensymphony.webwork.views.jsp.IfTag;
022: import com.opensymphony.webwork.views.jsp.IteratorTag;
023: import com.opensymphony.webwork.views.jsp.PropertyTag;
024: import com.opensymphony.webwork.views.jsp.PushTag;
025: import com.opensymphony.webwork.views.jsp.SetTag;
026: import com.opensymphony.webwork.views.jsp.TextTag;
027: import com.opensymphony.webwork.views.jsp.URLTag;
028: import com.opensymphony.webwork.views.jsp.iterator.AppendIteratorTag;
029: import com.opensymphony.webwork.views.jsp.iterator.MergeIteratorTag;
030: import com.opensymphony.webwork.views.jsp.ui.RichTextEditorTag;
031: import com.opensymphony.webwork.views.jsp.ui.TextFieldTag;
032: import com.opensymphony.webwork.views.jsp.ui.UpDownSelectTag;
033: import com.opensymphony.xwork.ActionContext;
034: import com.opensymphony.xwork.config.ConfigurationManager;
035: import com.opensymphony.xwork.util.LocalizedTextUtil;
036:
037: /**
038: * Test case for method findAncestor(Class) in Component and some commons
039: * test cases for Component in general.
040: *
041: * @author tm_jee
042: * @version $Date: 2006-02-17 16:21:02 +0100 (Fri, 17 Feb 2006) $ $Id: ComponentTest.java 2199 2006-02-17 15:21:02Z tmjee $
043: */
044: public class ComponentTest extends AbstractTagTest {
045:
046: public void testFindAncestorTest() throws Exception {
047: Property property = new Property(stack);
048: Form form = new Form(stack, request, response);
049: ActionComponent actionComponent = new ActionComponent(stack,
050: request, response);
051: Anchor anchor = new Anchor(stack, request, response);
052: Form form2 = new Form(stack, request, response);
053: TextField textField = new TextField(stack, request, response);
054:
055: Stack stack = property.getComponentStack();
056: Iterator i = stack.iterator();
057:
058: try {
059: // component stack
060: assertEquals(property.getComponentStack().size(), 6);
061: assertEquals(i.next(), property);
062: assertEquals(i.next(), form);
063: assertEquals(i.next(), actionComponent);
064: assertEquals(i.next(), anchor);
065: assertEquals(i.next(), form2);
066: assertEquals(i.next(), textField);
067:
068: // property
069: assertNull(property.findAncestor(Component.class));
070:
071: // form
072: assertEquals(form.findAncestor(Component.class), property);
073: assertEquals(form.findAncestor(Property.class), property);
074:
075: // action
076: assertEquals(actionComponent.findAncestor(Component.class),
077: form);
078: assertEquals(actionComponent.findAncestor(Property.class),
079: property);
080: assertEquals(actionComponent.findAncestor(Form.class), form);
081:
082: // anchor
083: assertEquals(anchor.findAncestor(Component.class),
084: actionComponent);
085: assertEquals(anchor.findAncestor(ActionComponent.class),
086: actionComponent);
087: assertEquals(anchor.findAncestor(Form.class), form);
088: assertEquals(anchor.findAncestor(Property.class), property);
089:
090: // form2
091: assertEquals(form2.findAncestor(Component.class), anchor);
092: assertEquals(form2.findAncestor(Anchor.class), anchor);
093: assertEquals(form2.findAncestor(ActionComponent.class),
094: actionComponent);
095: assertEquals(form2.findAncestor(Form.class), form);
096: assertEquals(form2.findAncestor(Property.class), property);
097:
098: // textField
099: assertEquals(textField.findAncestor(Component.class), form2);
100: assertEquals(textField.findAncestor(Form.class), form2);
101: assertEquals(textField.findAncestor(Anchor.class), anchor);
102: assertEquals(textField.findAncestor(ActionComponent.class),
103: actionComponent);
104: assertEquals(textField.findAncestor(Property.class),
105: property);
106: } finally {
107: property.getComponentStack().pop();
108: property.getComponentStack().pop();
109: property.getComponentStack().pop();
110: property.getComponentStack().pop();
111: property.getComponentStack().pop();
112: }
113: }
114:
115: // Action Component
116: public void testActionComponentDisposeItselfFromComponentStack()
117: throws Exception {
118: ConfigurationManager.clearConfigurationProviders();
119: ConfigurationManager
120: .addConfigurationProvider(new TestConfigurationProvider());
121: ConfigurationManager.getConfiguration().reload();
122:
123: ActionContext actionContext = new ActionContext(context);
124: actionContext.setValueStack(stack);
125: ActionContext.setContext(actionContext);
126:
127: request
128: .setupGetServletPath(TestConfigurationProvider.TEST_NAMESPACE
129: + "/" + "foo.action");
130: try {
131: TextFieldTag t = new TextFieldTag();
132: t.setName("textFieldName");
133: t.setPageContext(pageContext);
134: t.doStartTag();
135:
136: ActionTag tag = new ActionTag();
137: tag.setPageContext(pageContext);
138: tag
139: .setName(TestConfigurationProvider.TEST_NAMESPACE_ACTION);
140: tag.setId(TestConfigurationProvider.TEST_NAMESPACE_ACTION);
141: tag.doStartTag();
142: assertEquals(tag.getComponent().getComponentStack().peek(),
143: tag.getComponent());
144: tag.doEndTag();
145: assertEquals(t.getComponent().getComponentStack().peek(), t
146: .getComponent());
147:
148: t.doEndTag();
149: } catch (Exception e) {
150: e.printStackTrace();
151: fail(e.toString());
152: }
153: }
154:
155: // AppendInterator
156: public void testAppendIteratorDisposeItselfFromComponentStack()
157: throws Exception {
158: TextFieldTag t = new TextFieldTag();
159: t.setPageContext(pageContext);
160: t.setName("textFieldName");
161:
162: AppendIteratorTag tag = new AppendIteratorTag();
163: tag.setPageContext(pageContext);
164:
165: try {
166: t.doStartTag();
167: tag.doStartTag();
168: assertEquals(tag.getComponent().getComponentStack().peek(),
169: tag.getComponent());
170: tag.doEndTag();
171: assertEquals(t.getComponent().getComponentStack().peek(), t
172: .getComponent());
173: t.doEndTag();
174: } catch (Exception e) {
175: e.printStackTrace();
176: fail(e.toString());
177: }
178: }
179:
180: // Bean
181: public void testBeanComponentDisposeItselfFromComponentStack()
182: throws Exception {
183: TextFieldTag t = new TextFieldTag();
184: t.setPageContext(pageContext);
185: t.setName("textFieldName");
186:
187: BeanTag tag = new BeanTag();
188: tag.setName("com.opensymphony.webwork.util.Counter");
189: tag.setPageContext(pageContext);
190:
191: try {
192: t.doStartTag();
193: tag.doStartTag();
194: assertEquals(tag.getComponent().getComponentStack().peek(),
195: tag.getComponent());
196: tag.doEndTag();
197: assertEquals(t.getComponent().getComponentStack().peek(), t
198: .getComponent());
199: t.doEndTag();
200: } catch (Exception e) {
201: e.printStackTrace();
202: fail();
203: }
204: }
205:
206: // ElseIf
207: public void testElseIfComponentDisposeItselfFromComponentStack()
208: throws Exception {
209: TextFieldTag t = new TextFieldTag();
210: t.setPageContext(pageContext);
211: t.setName("textFieldName");
212:
213: ElseIfTag tag = new ElseIfTag();
214: tag.setPageContext(pageContext);
215:
216: try {
217: t.doStartTag();
218: tag.doStartTag();
219: assertEquals(tag.getComponent().getComponentStack().peek(),
220: tag.getComponent());
221: tag.doEndTag();
222: assertEquals(t.getComponent().getComponentStack().peek(), t
223: .getComponent());
224: t.doEndTag();
225: } catch (Exception e) {
226: e.printStackTrace();
227: fail(e.toString());
228: }
229: }
230:
231: // Else
232: public void testElseComponentDisposeItselfFromComponentStack()
233: throws Exception {
234: TextFieldTag t = new TextFieldTag();
235: t.setPageContext(pageContext);
236: t.setName("textFieldName");
237:
238: ElseTag tag = new ElseTag();
239: tag.setPageContext(pageContext);
240:
241: try {
242: t.doStartTag();
243: tag.doStartTag();
244: assertEquals(tag.getComponent().getComponentStack().peek(),
245: tag.getComponent());
246: tag.doEndTag();
247: assertEquals(t.getComponent().getComponentStack().peek(), t
248: .getComponent());
249: t.doEndTag();
250: } catch (Exception e) {
251: e.printStackTrace();
252: fail(e.toString());
253: }
254: }
255:
256: // If
257: public void testIfComponentDisposeItselfFromComponentStack()
258: throws Exception {
259: TextFieldTag t = new TextFieldTag();
260: t.setPageContext(pageContext);
261: t.setName("textFieldName");
262:
263: IfTag tag = new IfTag();
264: tag.setTest("false");
265: tag.setPageContext(pageContext);
266:
267: try {
268: t.doStartTag();
269: tag.doStartTag();
270: assertEquals(tag.getComponent().getComponentStack().peek(),
271: tag.getComponent());
272: tag.doEndTag();
273: assertEquals(t.getComponent().getComponentStack().peek(), t
274: .getComponent());
275: t.doEndTag();
276: } catch (Exception e) {
277: e.printStackTrace();
278: fail(e.toString());
279: }
280: }
281:
282: // Iterator
283: public void testIteratorComponentDisposeItselfFromComponentStack()
284: throws Exception {
285: TextFieldTag t = new TextFieldTag();
286: t.setPageContext(pageContext);
287: t.setName("textFieldName");
288:
289: IteratorTag tag = new IteratorTag();
290: tag.setValue("{1,2}");
291: tag.setPageContext(pageContext);
292:
293: try {
294: t.doStartTag();
295: tag.doStartTag();
296: assertEquals(tag.getComponent().getComponentStack().peek(),
297: tag.getComponent());
298: int endIt = tag.doAfterBody();
299: while (TagSupport.EVAL_BODY_AGAIN == endIt) {
300: assertEquals(tag.getComponent().getComponentStack()
301: .peek(), tag.getComponent());
302: endIt = tag.doAfterBody();
303: }
304: tag.doEndTag();
305: assertEquals(t.getComponent().getComponentStack().peek(), t
306: .getComponent());
307: t.doEndTag();
308: } catch (Exception e) {
309: e.printStackTrace();
310: fail(e.toString());
311: }
312: }
313:
314: // MergeIterator
315: public void testMergeIteratorComponentDisposeItselfFromComponentStack()
316: throws Exception {
317: TextFieldTag t = new TextFieldTag();
318: t.setPageContext(pageContext);
319: t.setName("textFieldName");
320:
321: MergeIteratorTag tag = new MergeIteratorTag();
322: tag.setPageContext(pageContext);
323:
324: try {
325: t.doStartTag();
326: tag.doStartTag();
327: assertEquals(tag.getComponent().getComponentStack().peek(),
328: tag.getComponent());
329: tag.doEndTag();
330: assertEquals(t.getComponent().getComponentStack().peek(), t
331: .getComponent());
332: t.doEndTag();
333: } catch (Exception e) {
334: e.printStackTrace();
335: fail(e.toString());
336: }
337: }
338:
339: // Property
340: public void testPropertyComponentDisposeItselfFromComponentStack()
341: throws Exception {
342: TextFieldTag t = new TextFieldTag();
343: t.setPageContext(pageContext);
344: t.setName("textFieldName");
345:
346: PropertyTag tag = new PropertyTag();
347: tag.setPageContext(pageContext);
348:
349: try {
350: t.doStartTag();
351: tag.doStartTag();
352: assertEquals(tag.getComponent().getComponentStack().peek(),
353: tag.getComponent());
354: tag.doEndTag();
355: assertEquals(t.getComponent().getComponentStack().peek(), t
356: .getComponent());
357: t.doEndTag();
358: } catch (Exception e) {
359: e.printStackTrace();
360: fail(e.toString());
361: }
362: }
363:
364: // Push
365: public void testPushComponentDisposeItselfFromComponentStack()
366: throws Exception {
367: TextFieldTag t = new TextFieldTag();
368: t.setPageContext(pageContext);
369: t.setName("textFieldName");
370:
371: PushTag tag = new PushTag();
372: tag.setValue("'aaaa'");
373: tag.setPageContext(pageContext);
374:
375: try {
376: t.doStartTag();
377: tag.doStartTag();
378: assertEquals(tag.getComponent().getComponentStack().peek(),
379: tag.getComponent());
380: tag.doEndTag();
381: assertEquals(t.getComponent().getComponentStack().peek(), t
382: .getComponent());
383: t.doEndTag();
384: } catch (Exception e) {
385: e.printStackTrace();
386: fail(e.toString());
387: }
388: }
389:
390: // Set
391: public void testSetComponentDisposeItselfFromComponentStack()
392: throws Exception {
393: TextFieldTag t = new TextFieldTag();
394: t.setPageContext(pageContext);
395: t.setName("textFieldName");
396:
397: SetTag tag = new SetTag();
398: tag.setName("name");
399: tag.setValue("'value'");
400: tag.setPageContext(pageContext);
401:
402: try {
403: t.doStartTag();
404: tag.doStartTag();
405: assertEquals(tag.getComponent().getComponentStack().peek(),
406: tag.getComponent());
407: tag.doEndTag();
408: assertEquals(t.getComponent().getComponentStack().peek(), t
409: .getComponent());
410: t.doEndTag();
411: } catch (Exception e) {
412: e.printStackTrace();
413: fail(e.toString());
414: }
415: }
416:
417: // Text
418: public void testTextComponentDisposeItselfFromComponentStack()
419: throws Exception {
420: TextFieldTag t = new TextFieldTag();
421: t.setPageContext(pageContext);
422: t.setName("textFieldName");
423:
424: TextTag tag = new TextTag();
425: tag.setName("some.i18n.key");
426: tag.setPageContext(pageContext);
427:
428: try {
429: t.doStartTag();
430: tag.doStartTag();
431: assertEquals(tag.getComponent().getComponentStack().peek(),
432: tag.getComponent());
433: tag.doEndTag();
434: assertEquals(t.getComponent().getComponentStack().peek(), t
435: .getComponent());
436: t.doEndTag();
437: } catch (Exception e) {
438: e.printStackTrace();
439: fail(e.toString());
440: }
441: }
442:
443: public void testI18nComponentDisposeItselfFromComponentStack()
444: throws Exception {
445: stack.getContext().put(ActionContext.LOCALE,
446: Locale.getDefault());
447:
448: TextFieldTag t = new TextFieldTag();
449: t.setPageContext(pageContext);
450: t.setName("textFieldName");
451:
452: ResourceBundle bundle = ResourceBundle
453: .getBundle("com.opensymphony.webwork.components.tempo");
454: LocalizedTextUtil
455: .addDefaultResourceBundle("com.opensymphony.webwork.components.temp");
456:
457: I18nTag tag = new I18nTag();
458: tag.setName("com.opensymphony.webwork.components.tempo");
459: tag.setPageContext(pageContext);
460:
461: try {
462: t.doStartTag();
463: tag.doStartTag();
464: assertEquals(tag.getComponent().getComponentStack().peek(),
465: tag.getComponent());
466: tag.doEndTag();
467: assertEquals(t.getComponent().getComponentStack().peek(), t
468: .getComponent());
469: t.doEndTag();
470: } catch (Exception e) {
471: e.printStackTrace();
472: fail(e.toString());
473: }
474: }
475:
476: // URL
477: public void testURLComponentDisposeItselfFromComponentStack()
478: throws Exception {
479: TextFieldTag t = new TextFieldTag();
480: t.setPageContext(pageContext);
481: t.setName("textFieldName");
482:
483: URLTag tag = new URLTag();
484: tag.setPageContext(pageContext);
485:
486: try {
487: t.doStartTag();
488: tag.doStartTag();
489: assertEquals(tag.getComponent().getComponentStack().peek(),
490: tag.getComponent());
491: tag.doEndTag();
492: assertEquals(t.getComponent().getComponentStack().peek(), t
493: .getComponent());
494: t.doEndTag();
495: } catch (Exception e) {
496: e.printStackTrace();
497: fail(e.toString());
498: }
499: }
500:
501: // updownselect
502: public void testUpDownSelectDisposeItselfFromComponentStack()
503: throws Exception {
504: TextFieldTag t = new TextFieldTag();
505: t.setPageContext(pageContext);
506: t.setName("textFieldName");
507:
508: UpDownSelectTag tag = new UpDownSelectTag();
509: tag.setId("myId");
510: tag.setPageContext(pageContext);
511: tag.setName("updownselectName");
512: tag.setList("{}");
513:
514: try {
515: t.doStartTag();
516: tag.doStartTag();
517: assertEquals(tag.getComponent().getComponentStack().peek(),
518: tag.getComponent());
519: tag.doEndTag();
520: assertEquals(t.getComponent().getComponentStack().peek(), t
521: .getComponent());
522: t.doEndTag();
523: } catch (Exception e) {
524: e.printStackTrace();
525: fail(e.toString());
526: }
527: }
528:
529: // richtexteditor
530: public void testRichTextEditorDisposeItselfFromComponentStack()
531: throws Exception {
532: TextFieldTag t = new TextFieldTag();
533: t.setPageContext(pageContext);
534: t.setName("textFieldName");
535:
536: RichTextEditorTag tag = new RichTextEditorTag();
537: tag.setId("myId");
538: tag.setPageContext(pageContext);
539: tag.setName("myRichtTextEditor");
540:
541: try {
542: t.doStartTag();
543: tag.doStartTag();
544: assertEquals(tag.getComponent().getComponentStack().peek(),
545: tag.getComponent());
546: tag.doEndTag();
547: assertEquals(t.getComponent().getComponentStack().peek(), t
548: .getComponent());
549: t.doEndTag();
550: } catch (Exception e) {
551: e.printStackTrace();
552: fail(e.toString());
553: }
554: }
555: }
|