| /* |
| * $Id$ |
| * |
| * Copyright 2006 The Apache Software Foundation. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.struts2.components; |
| |
| import java.util.Iterator; |
| import java.util.Locale; |
| import java.util.ResourceBundle; |
| import java.util.Stack; |
| |
| import javax.servlet.jsp.tagext.TagSupport; |
| |
| import org.apache.struts2.views.jsp.AbstractTagTest; |
| import org.apache.struts2.views.jsp.BeanTag; |
| import org.apache.struts2.views.jsp.ElseIfTag; |
| import org.apache.struts2.views.jsp.ElseTag; |
| import org.apache.struts2.views.jsp.I18nTag; |
| import org.apache.struts2.views.jsp.IfTag; |
| import org.apache.struts2.views.jsp.IteratorTag; |
| import org.apache.struts2.views.jsp.PropertyTag; |
| import org.apache.struts2.views.jsp.PushTag; |
| import org.apache.struts2.views.jsp.SetTag; |
| import org.apache.struts2.views.jsp.TextTag; |
| import org.apache.struts2.views.jsp.URLTag; |
| import org.apache.struts2.views.jsp.iterator.AppendIteratorTag; |
| import org.apache.struts2.views.jsp.iterator.MergeIteratorTag; |
| import org.apache.struts2.views.jsp.ui.TextFieldTag; |
| import org.apache.struts2.views.jsp.ui.UpDownSelectTag; |
| |
| import com.opensymphony.xwork2.ActionContext; |
| import com.opensymphony.xwork2.util.LocalizedTextUtil; |
| |
| /** |
| * Test case for method findAncestor(Class) in Component and some commons |
| * test cases for Component in general. |
| * |
| */ |
| public class ComponentTest extends AbstractTagTest { |
| |
| public void testFindAncestorTest() throws Exception { |
| Property property = new Property(stack); |
| Form form = new Form(stack, request, response); |
| ActionComponent actionComponent = new ActionComponent(stack, request, response); |
| Anchor anchor = new Anchor(stack, request, response); |
| Form form2 = new Form(stack, request, response); |
| TextField textField = new TextField(stack, request, response); |
| |
| |
| Stack stack = property.getComponentStack(); |
| Iterator i = stack.iterator(); |
| |
| |
| try { |
| // component stack |
| assertEquals(property.getComponentStack().size(), 6); |
| assertEquals(i.next(), property); |
| assertEquals(i.next(), form); |
| assertEquals(i.next(), actionComponent); |
| assertEquals(i.next(), anchor); |
| assertEquals(i.next(), form2); |
| assertEquals(i.next(), textField); |
| |
| |
| // property |
| assertNull(property.findAncestor(Component.class)); |
| |
| // form |
| assertEquals(form.findAncestor(Component.class), property); |
| assertEquals(form.findAncestor(Property.class), property); |
| |
| // action |
| assertEquals(actionComponent.findAncestor(Component.class), form); |
| assertEquals(actionComponent.findAncestor(Property.class), property); |
| assertEquals(actionComponent.findAncestor(Form.class), form); |
| |
| // anchor |
| assertEquals(anchor.findAncestor(Component.class), actionComponent); |
| assertEquals(anchor.findAncestor(ActionComponent.class), actionComponent); |
| assertEquals(anchor.findAncestor(Form.class), form); |
| assertEquals(anchor.findAncestor(Property.class), property); |
| |
| // form2 |
| assertEquals(form2.findAncestor(Component.class), anchor); |
| assertEquals(form2.findAncestor(Anchor.class), anchor); |
| assertEquals(form2.findAncestor(ActionComponent.class), actionComponent); |
| assertEquals(form2.findAncestor(Form.class), form); |
| assertEquals(form2.findAncestor(Property.class), property); |
| |
| // textField |
| assertEquals(textField.findAncestor(Component.class), form2); |
| assertEquals(textField.findAncestor(Form.class), form2); |
| assertEquals(textField.findAncestor(Anchor.class), anchor); |
| assertEquals(textField.findAncestor(ActionComponent.class), actionComponent); |
| assertEquals(textField.findAncestor(Property.class), property); |
| } |
| finally { |
| property.getComponentStack().pop(); |
| property.getComponentStack().pop(); |
| property.getComponentStack().pop(); |
| property.getComponentStack().pop(); |
| property.getComponentStack().pop(); |
| } |
| } |
| |
| // Action Component |
| /* |
| public void testActionComponentDisposeItselfFromComponentStack() throws Exception { |
| ConfigurationManager.clearConfigurationProviders(); |
| ConfigurationManager.addConfigurationProvider(new TestConfigurationProvider()); |
| ConfigurationManager.getConfiguration().reload(); |
| |
| ActionContext actionContext = new ActionContext(context); |
| actionContext.setValueStack(stack); |
| ActionContext.setContext(actionContext); |
| |
| request.setupGetServletPath(TestConfigurationProvider.TEST_NAMESPACE + "/" + "foo.action"); |
| try { |
| TextFieldTag t = new TextFieldTag(); |
| t.setName("textFieldName"); |
| t.setPageContext(pageContext); |
| t.doStartTag(); |
| |
| ActionTag tag = new ActionTag(); |
| tag.setPageContext(pageContext); |
| tag.setName(TestConfigurationProvider.TEST_NAMESPACE_ACTION); |
| tag.setId(TestConfigurationProvider.TEST_NAMESPACE_ACTION); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| */ |
| |
| |
| // AppendInterator |
| public void testAppendIteratorDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| AppendIteratorTag tag = new AppendIteratorTag(); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // Bean |
| public void testBeanComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| BeanTag tag = new BeanTag(); |
| tag.setName("org.apache.struts2.util.Counter"); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(); |
| } |
| } |
| |
| |
| // ElseIf |
| public void testElseIfComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| ElseIfTag tag = new ElseIfTag(); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // Else |
| public void testElseComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| ElseTag tag = new ElseTag(); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // If |
| public void testIfComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| IfTag tag = new IfTag(); |
| tag.setTest("false"); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // Iterator |
| public void testIteratorComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| IteratorTag tag = new IteratorTag(); |
| tag.setValue("{1,2}"); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| int endIt = tag.doAfterBody(); |
| while(TagSupport.EVAL_BODY_AGAIN == endIt) { |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| endIt = tag.doAfterBody(); |
| } |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // MergeIterator |
| public void testMergeIteratorComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| MergeIteratorTag tag = new MergeIteratorTag(); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // Property |
| public void testPropertyComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| PropertyTag tag = new PropertyTag(); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // Push |
| public void testPushComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| PushTag tag = new PushTag(); |
| tag.setValue("'aaaa'"); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // Set |
| public void testSetComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| SetTag tag = new SetTag(); |
| tag.setName("name"); |
| tag.setValue("'value'"); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // Text |
| public void testTextComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| TextTag tag = new TextTag(); |
| tag.setName("some.i18n.key"); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| public void testI18nComponentDisposeItselfFromComponentStack() throws Exception { |
| stack.getContext().put(ActionContext.LOCALE, Locale.getDefault()); |
| |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| ResourceBundle bundle = ResourceBundle.getBundle("org.apache.struts2.components.tempo"); |
| LocalizedTextUtil.addDefaultResourceBundle("org.apache.struts2.components.temp"); |
| |
| I18nTag tag = new I18nTag(); |
| tag.setName("org.apache.struts2.components.tempo"); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| // URL |
| public void testURLComponentDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| URLTag tag = new URLTag(); |
| tag.setPageContext(pageContext); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| |
| |
| // updownselect |
| public void testUpDownSelectDisposeItselfFromComponentStack() throws Exception { |
| TextFieldTag t = new TextFieldTag(); |
| t.setPageContext(pageContext); |
| t.setName("textFieldName"); |
| |
| UpDownSelectTag tag = new UpDownSelectTag(); |
| tag.setId("myId"); |
| tag.setPageContext(pageContext); |
| tag.setName("updownselectName"); |
| tag.setList("{}"); |
| |
| try { |
| t.doStartTag(); |
| tag.doStartTag(); |
| assertEquals(tag.getComponent().getComponentStack().peek(), tag.getComponent()); |
| tag.doEndTag(); |
| assertEquals(t.getComponent().getComponentStack().peek(), t.getComponent()); |
| t.doEndTag(); |
| } |
| catch(Exception e) { |
| e.printStackTrace(); |
| fail(e.toString()); |
| } |
| } |
| } |