Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

SerializerTest.java 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. /*
  2. * Copyright 2011 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.tests.serialization;
  17. import java.util.Arrays;
  18. import java.util.Collection;
  19. import java.util.Collections;
  20. import java.util.HashMap;
  21. import java.util.HashSet;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.Map.Entry;
  25. import java.util.Set;
  26. import com.vaadin.annotations.Widgetset;
  27. import com.vaadin.server.VaadinRequest;
  28. import com.vaadin.shared.Connector;
  29. import com.vaadin.shared.ui.label.ContentMode;
  30. import com.vaadin.tests.components.AbstractTestUI;
  31. import com.vaadin.tests.util.Log;
  32. import com.vaadin.tests.widgetset.client.ComplexTestBean;
  33. import com.vaadin.tests.widgetset.client.SerializerTestRpc;
  34. import com.vaadin.tests.widgetset.client.SimpleTestBean;
  35. import com.vaadin.tests.widgetset.server.SerializerTestExtension;
  36. @Widgetset("com.vaadin.tests.widgetset.TestingWidgetSet")
  37. public class SerializerTest extends AbstractTestUI {
  38. private Log log = new Log(40);
  39. @Override
  40. protected void setup(VaadinRequest request) {
  41. final SerializerTestExtension testExtension = new SerializerTestExtension();
  42. addExtension(testExtension);
  43. // Don't show row numbers to make it easier to add tests without
  44. // changing all numbers
  45. log.setNumberLogRows(false);
  46. addComponent(log);
  47. SerializerTestRpc rpc = testExtension
  48. .getRpcProxy(SerializerTestRpc.class);
  49. rpc.sendBeanSubclass(new SimpleTestBean() {
  50. @Override
  51. public int getValue() {
  52. return 42;
  53. }
  54. });
  55. rpc.sendBoolean(true, Boolean.FALSE, new boolean[] { true, true, false,
  56. true, false, false });
  57. rpc.sendByte((byte) 5, Byte.valueOf((byte) -12), new byte[] { 3, 1, 2 });
  58. rpc.sendChar('\u222b', Character.valueOf('å'), "aBcD".toCharArray());
  59. rpc.sendInt(Integer.MAX_VALUE, Integer.valueOf(0), new int[] { 5, 7 });
  60. rpc.sendLong(577431841358l, Long.valueOf(0), new long[] {
  61. -57841235865l, 57 });
  62. rpc.sendFloat(3.14159f, Float.valueOf(Math.nextUp(1)), new float[] {
  63. 57, 0, -12 });
  64. rpc.sendDouble(Math.PI, Double.valueOf(-Math.E), new double[] {
  65. Double.MAX_VALUE, Double.MIN_VALUE });
  66. rpc.sendString("This is a tesing string ‡");
  67. rpc.sendConnector(this);
  68. rpc.sendBean(
  69. new ComplexTestBean(new SimpleTestBean(0),
  70. new SimpleTestBean(1), Arrays.asList(
  71. new SimpleTestBean(3), new SimpleTestBean(4)),
  72. 5), new SimpleTestBean(6),
  73. new SimpleTestBean[] { new SimpleTestBean(7) });
  74. rpc.sendNull("Not null", null);
  75. rpc.sendNestedArray(new int[][] { { 5 }, { 7 } },
  76. new SimpleTestBean[][] { { new SimpleTestBean(4),
  77. new SimpleTestBean(2) } });
  78. rpc.sendList(Arrays.asList(5, 8, -234), Arrays.<Connector> asList(this,
  79. testExtension), Arrays.asList(new SimpleTestBean(234),
  80. new SimpleTestBean(-568)));
  81. rpc.sendArrayList(
  82. Arrays.asList(new int[] { 1, 2 }, new int[] { 3, 4 }),
  83. Arrays.asList(new Integer[] { 5, 6 }, new Integer[] { 7, 8 }),
  84. Collections
  85. .singletonList(new SimpleTestBean[] { new SimpleTestBean(
  86. 7) }));
  87. // Disabled because of #8861
  88. // rpc.sendListArray(
  89. // new List[] { Arrays.asList(1, 2), Arrays.asList(3, 4) },
  90. // new List[] { Collections.singletonList(new SimpleTestBean(-1)) });
  91. rpc.sendSet(new HashSet<Integer>(Arrays.asList(4, 7, 12)), Collections
  92. .singleton((Connector) this), new HashSet<SimpleTestBean>(
  93. Arrays.asList(new SimpleTestBean(1), new SimpleTestBean(2))));
  94. rpc.sendMap(new HashMap<String, SimpleTestBean>() {
  95. {
  96. put("1", new SimpleTestBean(1));
  97. put("2", new SimpleTestBean(2));
  98. }
  99. }, new HashMap<Connector, SimpleTestBean>() {
  100. {
  101. put(testExtension, new SimpleTestBean(3));
  102. put(getUI(), new SimpleTestBean(4));
  103. }
  104. }, new HashMap<Integer, Connector>() {
  105. {
  106. put(5, testExtension);
  107. put(10, getUI());
  108. }
  109. }, new HashMap<SimpleTestBean, SimpleTestBean>() {
  110. {
  111. put(new SimpleTestBean(5), new SimpleTestBean(-5));
  112. put(new SimpleTestBean(-4), new SimpleTestBean(4));
  113. }
  114. });
  115. rpc.sendWrappedGenerics(new HashMap<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>>() {
  116. {
  117. put(Collections.singleton(new SimpleTestBean(42)),
  118. new HashMap<Integer, List<SimpleTestBean>>() {
  119. {
  120. put(1, Arrays.asList(new SimpleTestBean(1),
  121. new SimpleTestBean(3)));
  122. }
  123. });
  124. }
  125. });
  126. rpc.sendEnum(ContentMode.TEXT, new ContentMode[] {
  127. ContentMode.PREFORMATTED, ContentMode.XML },
  128. Arrays.asList(ContentMode.HTML, ContentMode.RAW));
  129. testExtension.registerRpc(new SerializerTestRpc() {
  130. @Override
  131. public void sendBoolean(boolean value, Boolean boxedValue,
  132. boolean[] array) {
  133. log.log("sendBoolean: " + value + ", " + boxedValue + ", "
  134. + Arrays.toString(array));
  135. }
  136. @Override
  137. public void sendByte(byte value, Byte boxedValue, byte[] array) {
  138. log.log("sendByte: " + value + ", " + boxedValue + ", "
  139. + Arrays.toString(array));
  140. }
  141. @Override
  142. public void sendChar(char value, Character boxedValue, char[] array) {
  143. log.log("sendChar: " + value + ", " + boxedValue + ", "
  144. + Arrays.toString(array));
  145. }
  146. @Override
  147. public void sendInt(int value, Integer boxedValue, int[] array) {
  148. log.log("sendInt: " + value + ", " + boxedValue + ", "
  149. + Arrays.toString(array));
  150. }
  151. @Override
  152. public void sendLong(long value, Long boxedValue, long[] array) {
  153. log.log("sendLong: " + value + ", " + boxedValue + ", "
  154. + Arrays.toString(array));
  155. }
  156. @Override
  157. public void sendFloat(float value, Float boxedValue, float[] array) {
  158. log.log("sendFloat: " + value + ", " + boxedValue + ", "
  159. + Arrays.toString(array));
  160. }
  161. @Override
  162. public void sendDouble(double value, Double boxedValue,
  163. double[] array) {
  164. log.log("sendDouble: " + value + ", " + boxedValue + ", "
  165. + Arrays.toString(array));
  166. }
  167. @Override
  168. public void sendString(String value) {
  169. log.log("sendString: " + value);
  170. }
  171. @Override
  172. public void sendConnector(Connector connector) {
  173. log.log("sendConnector: " + connector.getClass().getName());
  174. }
  175. @Override
  176. public void sendBean(ComplexTestBean complexBean,
  177. SimpleTestBean simpleBean, SimpleTestBean[] array) {
  178. log.log("sendBean: " + complexBean + ", " + simpleBean + ", "
  179. + Arrays.toString(array));
  180. }
  181. @Override
  182. public void sendNull(String value1, String value2) {
  183. log.log("sendNull: " + value1 + ", " + value2);
  184. }
  185. @Override
  186. public void sendNestedArray(int[][] nestedIntArray,
  187. SimpleTestBean[][] nestedBeanArray) {
  188. log.log("sendNestedArray: "
  189. + Arrays.deepToString(nestedIntArray) + ", "
  190. + Arrays.deepToString(nestedBeanArray));
  191. }
  192. @Override
  193. public void sendList(List<Integer> intList,
  194. List<Connector> connectorList, List<SimpleTestBean> beanList) {
  195. log.log("sendList: " + intList + ", "
  196. + connectorCollectionToString(connectorList) + ", "
  197. + beanList);
  198. }
  199. private String connectorCollectionToString(
  200. Collection<Connector> collection) {
  201. StringBuilder sb = new StringBuilder();
  202. for (Connector connector : collection) {
  203. if (sb.length() != 0) {
  204. sb.append(", ");
  205. }
  206. sb.append(connector.getClass());
  207. }
  208. String string = sb.toString();
  209. return string;
  210. }
  211. @Override
  212. public void sendArrayList(List<int[]> primitiveArrayList,
  213. List<Integer[]> objectArrayList,
  214. List<SimpleTestBean[]> beanArrayList) {
  215. log.log("sendArrayList: "
  216. + Arrays.deepToString(primitiveArrayList.toArray())
  217. + ", " + Arrays.deepToString(objectArrayList.toArray())
  218. + ", " + Arrays.deepToString(beanArrayList.toArray()));
  219. }
  220. @Override
  221. public void sendListArray(List<Integer>[] objectListArray,
  222. List<SimpleTestBean>[] beanListArray) {
  223. log.log("sendArrayList: " + Arrays.toString(objectListArray)
  224. + ", " + Arrays.toString(beanListArray));
  225. }
  226. @Override
  227. public void sendSet(Set<Integer> intSet,
  228. Set<Connector> connectorSet, Set<SimpleTestBean> beanSet) {
  229. log.log("sendSet: " + intSet + ", "
  230. + connectorCollectionToString(connectorSet) + ", "
  231. + beanSet);
  232. }
  233. @Override
  234. public void sendMap(Map<String, SimpleTestBean> stringMap,
  235. Map<Connector, SimpleTestBean> connectorMap,
  236. Map<Integer, Connector> intMap,
  237. Map<SimpleTestBean, SimpleTestBean> beanMap) {
  238. StringBuilder sb = new StringBuilder();
  239. for (Entry<Connector, SimpleTestBean> entry : connectorMap
  240. .entrySet()) {
  241. if (sb.length() == 0) {
  242. sb.append('[');
  243. } else {
  244. sb.append(", ");
  245. }
  246. sb.append(entry.getKey().getClass().getName());
  247. sb.append('=');
  248. sb.append(entry.getValue());
  249. }
  250. sb.append(']');
  251. String connectorMapString = sb.toString();
  252. sb = new StringBuilder();
  253. for (Entry<Integer, Connector> entry : intMap.entrySet()) {
  254. if (sb.length() == 0) {
  255. sb.append('[');
  256. } else {
  257. sb.append(", ");
  258. }
  259. sb.append(entry.getKey());
  260. sb.append('=');
  261. sb.append(entry.getValue().getClass().getName());
  262. }
  263. sb.append(']');
  264. String intMapString = sb.toString();
  265. log.log("sendMap: " + stringMap + ", " + connectorMapString
  266. + ", " + intMapString + ", " + beanMap);
  267. }
  268. @Override
  269. public void sendWrappedGenerics(
  270. Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>> generics) {
  271. log.log("sendWrappedGenerics: " + generics.toString());
  272. }
  273. @Override
  274. public void sendEnum(ContentMode contentMode, ContentMode[] array,
  275. List<ContentMode> list) {
  276. log.log("sendEnum: " + contentMode + ", "
  277. + Arrays.toString(array) + ", " + list);
  278. }
  279. @Override
  280. public void sendBeanSubclass(SimpleTestBean bean) {
  281. log.log("sendBeanSubclass: " + bean.getValue());
  282. }
  283. });
  284. }
  285. @Override
  286. protected String getTestDescription() {
  287. return "Test for lots of different cases of encoding and decoding variuos data types";
  288. }
  289. @Override
  290. protected Integer getTicketNumber() {
  291. return Integer.valueOf(8655);
  292. }
  293. }