View Javadoc

1   /*
2    * EL4J, the Extension Library for the J2EE, adds incremental enhancements to
3    * the spring framework, http://el4j.sf.net
4    * Copyright (C) 2005 by ELCA Informatique SA, Av. de la Harpe 22-24,
5    * 1000 Lausanne, Switzerland, http://www.elca.ch
6    *
7    * EL4J is published under the GNU Lesser General Public License (LGPL)
8    * Version 2.1. See http://www.gnu.org/licenses/
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13   * GNU Lesser General Public License for more details.
14   *
15   * For alternative licensing, please contact info@elca.ch
16   */
17  
18  package ch.elca.el4j.tests.core.contextpassing;
19  
20  import static org.junit.Assert.assertEquals;
21  import static org.junit.Assert.assertFalse;
22  
23  import java.util.HashMap;
24  import java.util.Map;
25  
26  import org.junit.Test;
27  
28  import ch.elca.el4j.core.contextpassing.DefaultImplicitContextPassingRegistry;
29  
30  /**
31   * This class tests the context passing classes.
32   *
33   * <script type="text/javascript">printFileStatus
34   *   ("$URL: https://el4j.svn.sourceforge.net/svnroot/el4j/tags/el4j_1_5_1/el4j/framework/modules/core/src/test/java/ch/elca/el4j/tests/core/contextpassing/ContextPassingTest.java $",
35   *    "$Revision: 3038 $",
36   *    "$Date: 2008-06-09 12:08:34 +0200 (Mon, 09 Jun 2008) $",
37   *    "$Author: swismer $"
38   * );</script>
39   *
40   * @author Martin Zeltner (MZE)
41   */
42  public class ContextPassingTest {
43  
44  	/**
45  	 * This test simulates implicit context passing with two registered passers
46  	 * on server and client side.
47  	 */
48  	@Test
49  	public void testTwoRegisteredPassersOnBothSides() {
50  		ImplicitContextPasserA passerClientA = new ImplicitContextPasserA();
51  		ImplicitContextPasserB passerClientB = new ImplicitContextPasserB();
52  		DefaultImplicitContextPassingRegistry registryClient
53  			= new DefaultImplicitContextPassingRegistry();
54  		passerClientA.setImplicitContextPassingRegistry(registryClient);
55  		passerClientB.setImplicitContextPassingRegistry(registryClient);
56  
57  		ImplicitContextPasserA passerServerA = new ImplicitContextPasserA();
58  		ImplicitContextPasserB passerServerB = new ImplicitContextPasserB();
59  		DefaultImplicitContextPassingRegistry registryServer
60  			= new DefaultImplicitContextPassingRegistry();
61  		passerServerA.setImplicitContextPassingRegistry(registryServer);
62  		passerServerB.setImplicitContextPassingRegistry(registryServer);
63  
64  		Map contextClient = registryClient.getAssembledImplicitContext();
65  		Map contextServer = new HashMap(contextClient);
66  		registryServer.pushAssembledImplicitContext(contextServer);
67  
68  		String sentDataA = passerClientA.getTestData();
69  		String receivedDataA = passerServerA.getReceivedData();
70  		assertEquals("Sent and received data of passer A is not the same.",
71  				sentDataA, receivedDataA);
72  
73  		double sentDataB = passerClientB.getTestData();
74  		double receivedDataB = passerServerB.getReceivedData();
75  		assertEquals("Sent and received data of passer B is not the same.",
76  				sentDataB, receivedDataB, 0);
77  	}
78  
79  	/**
80  	 * This test simulates implicit context passing with two registered passers
81  	 * on client and only one on server side.
82  	 */
83  	@Test
84  	public void testTwoRegisteredPassersOnClientSideAndOneOnServerSide() {
85  		ImplicitContextPasserA passerClientA = new ImplicitContextPasserA();
86  		ImplicitContextPasserB passerClientB = new ImplicitContextPasserB();
87  		DefaultImplicitContextPassingRegistry registryClient
88  			= new DefaultImplicitContextPassingRegistry();
89  		passerClientA.setImplicitContextPassingRegistry(registryClient);
90  		passerClientB.setImplicitContextPassingRegistry(registryClient);
91  
92  		ImplicitContextPasserA passerServerA = new ImplicitContextPasserA();
93  		ImplicitContextPasserB passerServerB = new ImplicitContextPasserB();
94  		DefaultImplicitContextPassingRegistry registryServer
95  			= new DefaultImplicitContextPassingRegistry();
96  		//passerServerA.setImplicitContextPassingRegistry(registryServer);
97  		passerServerB.setImplicitContextPassingRegistry(registryServer);
98  
99  		Map contextClient = registryClient.getAssembledImplicitContext();
100 		Map contextServer = new HashMap(contextClient);
101 		registryServer.pushAssembledImplicitContext(contextServer);
102 
103 		String sentDataA = passerClientA.getTestData();
104 		String receivedDataA = passerServerA.getReceivedData();
105 		assertFalse("Sent and received data of passer A is the same!",
106 				sentDataA.equals(receivedDataA));
107 
108 		double sentDataB = passerClientB.getTestData();
109 		double receivedDataB = passerServerB.getReceivedData();
110 		assertEquals("Sent and received data of passer B is not the same.",
111 				sentDataB, receivedDataB, 0);
112 	}
113 
114 	/**
115 	 * This test simulates implicit context passing with one registered passer
116 	 * on client and two on server side.
117 	 */
118 	@Test
119 	public void testOneRegisteredPasserOnClientSideAndTwoOnServerSide() {
120 		ImplicitContextPasserA passerClientA = new ImplicitContextPasserA();
121 		ImplicitContextPasserB passerClientB = new ImplicitContextPasserB();
122 		DefaultImplicitContextPassingRegistry registryClient
123 			= new DefaultImplicitContextPassingRegistry();
124 		passerClientA.setImplicitContextPassingRegistry(registryClient);
125 		//passerClientB.setImplicitContextPassingRegistry(registryClient);
126 
127 		ImplicitContextPasserA passerServerA = new ImplicitContextPasserA();
128 		ImplicitContextPasserB passerServerB = new ImplicitContextPasserB();
129 		DefaultImplicitContextPassingRegistry registryServer
130 			= new DefaultImplicitContextPassingRegistry();
131 		passerServerA.setImplicitContextPassingRegistry(registryServer);
132 		passerServerB.setImplicitContextPassingRegistry(registryServer);
133 
134 		Map contextClient = registryClient.getAssembledImplicitContext();
135 		Map contextServer = new HashMap(contextClient);
136 		registryServer.pushAssembledImplicitContext(contextServer);
137 
138 		String sentDataA = passerClientA.getTestData();
139 		String receivedDataA = passerServerA.getReceivedData();
140 		assertEquals("Sent and received data of passer A is not the same.",
141 				sentDataA, receivedDataA);
142 
143 		double sentDataB = passerClientB.getTestData();
144 		double receivedDataB = passerServerB.getReceivedData();
145 		assertFalse("Sent and received data of passer B is the same!",
146 				sentDataB == receivedDataB);
147 	}
148 
149 	/**
150 	 * This test uses the <code>DefaultImplicitContextPassingRegistry</code>
151 	 * without any registered passers.
152 	 */
153 	@Test
154 	public void testDefaultImplicitContextPassingRegistryStandalone() {
155 		ImplicitContextPasserA passerClientA = new ImplicitContextPasserA();
156 		ImplicitContextPasserB passerClientB = new ImplicitContextPasserB();
157 		DefaultImplicitContextPassingRegistry registryClient
158 			= new DefaultImplicitContextPassingRegistry();
159 		//passerClientA.setImplicitContextPassingRegistry(registryClient);
160 		//passerClientB.setImplicitContextPassingRegistry(registryClient);
161 
162 		ImplicitContextPasserA passerServerA = new ImplicitContextPasserA();
163 		ImplicitContextPasserB passerServerB = new ImplicitContextPasserB();
164 		DefaultImplicitContextPassingRegistry registryServer
165 			= new DefaultImplicitContextPassingRegistry();
166 		//passerServerA.setImplicitContextPassingRegistry(registryServer);
167 		//passerServerB.setImplicitContextPassingRegistry(registryServer);
168 
169 		Map contextClient = registryClient.getAssembledImplicitContext();
170 		Map contextServer = new HashMap(contextClient);
171 		registryServer.pushAssembledImplicitContext(contextServer);
172 
173 		String sentDataA = passerClientA.getTestData();
174 		String receivedDataA = passerServerA.getReceivedData();
175 		assertFalse("Sent and received data of passer A is the same!",
176 				sentDataA.equals(receivedDataA));
177 
178 		double sentDataB = passerClientB.getTestData();
179 		double receivedDataB = passerServerB.getReceivedData();
180 		assertFalse("Sent and received data of passer B is the same!",
181 				sentDataB == receivedDataB);
182 	}
183 }