You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SerializerTest.java 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.tests.serialization;
  5. import java.util.Arrays;
  6. import java.util.Collection;
  7. import java.util.Collections;
  8. import java.util.HashMap;
  9. import java.util.HashSet;
  10. import java.util.List;
  11. import java.util.Map;
  12. import java.util.Map.Entry;
  13. import java.util.Set;
  14. import com.vaadin.annotations.Widgetset;
  15. import com.vaadin.terminal.WrappedRequest;
  16. import com.vaadin.terminal.gwt.client.Connector;
  17. import com.vaadin.tests.components.AbstractTestRoot;
  18. import com.vaadin.tests.util.Log;
  19. import com.vaadin.tests.widgetset.client.ComplexTestBean;
  20. import com.vaadin.tests.widgetset.client.SerializerTestRpc;
  21. import com.vaadin.tests.widgetset.client.SimpleTestBean;
  22. import com.vaadin.tests.widgetset.server.SerializerTestExtension;
  23. @Widgetset("com.vaadin.tests.widgetset.TestingWidgetSet")
  24. public class SerializerTest extends AbstractTestRoot {
  25. private Log log = new Log(40);
  26. @Override
  27. protected void setup(WrappedRequest request) {
  28. final SerializerTestExtension testExtension = new SerializerTestExtension();
  29. addExtension(testExtension);
  30. addComponent(log);
  31. SerializerTestRpc rpc = testExtension
  32. .getRpcProxy(SerializerTestRpc.class);
  33. rpc.sendBoolean(true, Boolean.FALSE, new boolean[] { true, true, false,
  34. true, false, false });
  35. rpc.sendByte((byte) 5, Byte.valueOf((byte) -12), new byte[] { 3, 1, 2 });
  36. rpc.sendChar('∫', Character.valueOf('å'), "aBcD".toCharArray());
  37. rpc.sendInt(Integer.MAX_VALUE, Integer.valueOf(0), new int[] { 5, 7 });
  38. rpc.sendLong(577431841358l, Long.valueOf(0), new long[] {
  39. -57841235865l, 57 });
  40. rpc.sendFloat(3.14159f, Float.valueOf(Math.nextUp(1)), new float[] {
  41. 57, 0, -12 });
  42. rpc.sendDouble(Math.PI, Double.valueOf(-Math.E), new double[] {
  43. Double.MAX_VALUE, Double.MIN_VALUE });
  44. rpc.sendString("This is a tesing string ‡");
  45. rpc.sendConnector(this);
  46. rpc.sendBean(
  47. new ComplexTestBean(new SimpleTestBean(0),
  48. new SimpleTestBean(1), Arrays.asList(
  49. new SimpleTestBean(3), new SimpleTestBean(4)),
  50. 5), new SimpleTestBean(6),
  51. new SimpleTestBean[] { new SimpleTestBean(7) });
  52. rpc.sendNull("Not null", null);
  53. rpc.sendNestedArray(new int[][] { { 5 }, { 7 } },
  54. new SimpleTestBean[][] { { new SimpleTestBean(4),
  55. new SimpleTestBean(2) } });
  56. rpc.sendList(Arrays.asList(5, 8, -234), Arrays.<Connector> asList(this,
  57. testExtension), Arrays.asList(new SimpleTestBean(234),
  58. new SimpleTestBean(-568)));
  59. // Disabled because of #8861
  60. // rpc.sendArrayList(
  61. // Arrays.asList(new int[] { 1, 2 }, new int[] { 3, 4 }),
  62. // Arrays.asList(new Integer[] { 5, 6 }, new Integer[] { 7, 8 }),
  63. // Collections
  64. // .singletonList(new SimpleTestBean[] { new SimpleTestBean(
  65. // 7) }));
  66. // Disabled because of #8861
  67. // rpc.sendListArray(
  68. // new List[] { Arrays.asList(1, 2), Arrays.asList(3, 4) },
  69. // new List[] { Collections.singletonList(new SimpleTestBean(-1)) });
  70. rpc.sendSet(new HashSet<Integer>(Arrays.asList(4, 7, 12)), Collections
  71. .singleton((Connector) this), new HashSet<SimpleTestBean>(
  72. Arrays.asList(new SimpleTestBean(1), new SimpleTestBean(2))));
  73. rpc.sendMap(new HashMap<String, SimpleTestBean>() {
  74. {
  75. put("1", new SimpleTestBean(1));
  76. put("2", new SimpleTestBean(2));
  77. }
  78. }, new HashMap<Connector, Boolean>() {
  79. {
  80. put(testExtension, true);
  81. put(getRoot(), false);
  82. }
  83. }, new HashMap<Integer, Connector>() {
  84. {
  85. put(5, testExtension);
  86. put(10, getRoot());
  87. }
  88. }, new HashMap<SimpleTestBean, SimpleTestBean>() {
  89. {
  90. put(new SimpleTestBean(5), new SimpleTestBean(-5));
  91. put(new SimpleTestBean(-4), new SimpleTestBean(4));
  92. }
  93. });
  94. rpc.sendWrappedGenerics(new HashMap<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>>() {
  95. {
  96. put(Collections.singleton(new SimpleTestBean(42)),
  97. new HashMap<Integer, List<SimpleTestBean>>() {
  98. {
  99. put(1, Arrays.asList(new SimpleTestBean(1),
  100. new SimpleTestBean(3)));
  101. }
  102. });
  103. }
  104. });
  105. testExtension.registerRpc(new SerializerTestRpc() {
  106. public void sendBoolean(boolean value, Boolean boxedValue,
  107. boolean[] array) {
  108. log.log("sendBoolean: " + value + ", " + boxedValue + ", "
  109. + Arrays.toString(array));
  110. }
  111. public void sendByte(byte value, Byte boxedValue, byte[] array) {
  112. log.log("sendByte: " + value + ", " + boxedValue + ", "
  113. + Arrays.toString(array));
  114. }
  115. public void sendChar(char value, Character boxedValue, char[] array) {
  116. log.log("sendChar: " + value + ", " + boxedValue + ", "
  117. + Arrays.toString(array));
  118. }
  119. public void sendInt(int value, Integer boxedValue, int[] array) {
  120. log.log("sendInt: " + value + ", " + boxedValue + ", "
  121. + Arrays.toString(array));
  122. }
  123. public void sendLong(long value, Long boxedValue, long[] array) {
  124. log.log("sendLong: " + value + ", " + boxedValue + ", "
  125. + Arrays.toString(array));
  126. }
  127. public void sendFloat(float value, Float boxedValue, float[] array) {
  128. log.log("sendFloat: " + value + ", " + boxedValue + ", "
  129. + Arrays.toString(array));
  130. }
  131. public void sendDouble(double value, Double boxedValue,
  132. double[] array) {
  133. log.log("sendDouble: " + value + ", " + boxedValue + ", "
  134. + Arrays.toString(array));
  135. }
  136. public void sendString(String value) {
  137. log.log("sendString: " + value);
  138. }
  139. public void sendConnector(Connector connector) {
  140. log.log("sendConnector: " + connector.getClass().getName());
  141. }
  142. public void sendBean(ComplexTestBean complexBean,
  143. SimpleTestBean simpleBean, SimpleTestBean[] array) {
  144. log.log("sendBean: " + complexBean + ", " + simpleBean + ", "
  145. + Arrays.toString(array));
  146. }
  147. public void sendNull(String value1, String value2) {
  148. log.log("sendNull: " + value1 + ", " + value2);
  149. }
  150. public void sendNestedArray(int[][] nestedIntArray,
  151. SimpleTestBean[][] nestedBeanArray) {
  152. log.log("sendNestedArray: "
  153. + Arrays.deepToString(nestedIntArray) + ", "
  154. + Arrays.deepToString(nestedBeanArray));
  155. }
  156. public void sendList(List<Integer> intList,
  157. List<Connector> connectorList, List<SimpleTestBean> beanList) {
  158. log.log("sendList: " + intList + ", "
  159. + connectorCollectionToString(connectorList) + ", "
  160. + beanList);
  161. }
  162. private String connectorCollectionToString(
  163. Collection<Connector> collection) {
  164. StringBuilder sb = new StringBuilder();
  165. for (Connector connector : collection) {
  166. if (sb.length() != 0) {
  167. sb.append(", ");
  168. }
  169. sb.append(connector.getClass());
  170. }
  171. String string = sb.toString();
  172. return string;
  173. }
  174. public void sendArrayList(List<int[]> primitiveArrayList,
  175. List<Integer[]> objectArrayList,
  176. List<SimpleTestBean[]> beanArrayList) {
  177. log.log("sendArrayList: " + primitiveArrayList + ", "
  178. + objectArrayList + ", " + beanArrayList);
  179. }
  180. public void sendListArray(List<Integer>[] objectListArray,
  181. List<SimpleTestBean>[] beanListArray) {
  182. log.log("sendArrayList: " + Arrays.toString(objectListArray)
  183. + ", " + Arrays.toString(beanListArray));
  184. }
  185. public void sendSet(Set<Integer> intSet,
  186. Set<Connector> connectorSet, Set<SimpleTestBean> beanSet) {
  187. log.log("sendSet: " + intSet + ", "
  188. + connectorCollectionToString(connectorSet) + ", "
  189. + beanSet);
  190. }
  191. public void sendMap(Map<String, SimpleTestBean> stringMap,
  192. Map<Connector, Boolean> connectorMap,
  193. Map<Integer, Connector> intMap,
  194. Map<SimpleTestBean, SimpleTestBean> beanMap) {
  195. StringBuilder sb = new StringBuilder();
  196. for (Entry<Connector, Boolean> entry : connectorMap.entrySet()) {
  197. if (sb.length() == 0) {
  198. sb.append('[');
  199. } else {
  200. sb.append(", ");
  201. }
  202. sb.append(entry.getKey().getClass().getName());
  203. sb.append('=');
  204. sb.append(entry.getValue());
  205. }
  206. sb.append(']');
  207. String connectorMapString = sb.toString();
  208. sb = new StringBuilder();
  209. for (Entry<Integer, Connector> entry : intMap.entrySet()) {
  210. if (sb.length() == 0) {
  211. sb.append('[');
  212. } else {
  213. sb.append(", ");
  214. }
  215. sb.append(entry.getKey());
  216. sb.append('=');
  217. sb.append(entry.getValue().getClass().getName());
  218. }
  219. sb.append(']');
  220. String intMapString = sb.toString();
  221. log.log("sendMap: " + stringMap + ", " + connectorMapString
  222. + ", " + intMapString + ", " + beanMap);
  223. }
  224. public void sendWrappedGenerics(
  225. Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>> generics) {
  226. log.log("sendWrappedGenerics: " + generics.toString());
  227. }
  228. });
  229. }
  230. @Override
  231. protected String getTestDescription() {
  232. return "Test for lots of different cases of encoding and decoding variuos data types";
  233. }
  234. @Override
  235. protected Integer getTicketNumber() {
  236. return Integer.valueOf(8655);
  237. }
  238. }