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.

SerializerTestConnector.java 9.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.tests.widgetset.client;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  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.terminal.gwt.client.Connector;
  15. import com.vaadin.terminal.gwt.client.communication.RpcProxy;
  16. import com.vaadin.terminal.gwt.client.communication.StateChangeEvent;
  17. import com.vaadin.terminal.gwt.client.extensions.AbstractExtensionConnector;
  18. import com.vaadin.terminal.gwt.client.ui.Connect;
  19. import com.vaadin.tests.widgetset.server.SerializerTestExtension;
  20. @Connect(SerializerTestExtension.class)
  21. public class SerializerTestConnector extends AbstractExtensionConnector {
  22. private SerializerTestRpc rpc = RpcProxy.create(SerializerTestRpc.class,
  23. this);
  24. public SerializerTestConnector() {
  25. registerRpc(SerializerTestRpc.class, new SerializerTestRpc() {
  26. public void sendWrappedGenerics(
  27. Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>> generics) {
  28. Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>> updated = new HashMap<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>>();
  29. SimpleTestBean firstValue = generics.values().iterator().next()
  30. .get(Integer.valueOf(1)).get(0);
  31. Set<SimpleTestBean> key = new HashSet<SimpleTestBean>(Arrays
  32. .asList(firstValue));
  33. Map<Integer, List<SimpleTestBean>> value = new HashMap<Integer, List<SimpleTestBean>>();
  34. Set<SimpleTestBean> firstKeyValue = generics.keySet()
  35. .iterator().next();
  36. value.put(Integer.valueOf(1), new ArrayList<SimpleTestBean>(
  37. firstKeyValue));
  38. updated.put(key, value);
  39. rpc.sendWrappedGenerics(updated);
  40. }
  41. public void sendString(String value) {
  42. char[] chars = value.toCharArray();
  43. Arrays.sort(chars);
  44. rpc.sendString(new String(chars));
  45. }
  46. public void sendSet(Set<Integer> intSet,
  47. Set<Connector> connectorSet, Set<SimpleTestBean> beanSet) {
  48. beanSet.iterator().next().setValue(intSet.size());
  49. Set<Integer> updatedIntSet = new HashSet<Integer>();
  50. for (Integer integer : intSet) {
  51. updatedIntSet.add(Integer.valueOf(-integer.intValue()));
  52. }
  53. rpc.sendSet(updatedIntSet,
  54. Collections.singleton(getRootConnector()), beanSet);
  55. }
  56. public void sendNestedArray(int[][] nestedIntArray,
  57. SimpleTestBean[][] nestedBeanArray) {
  58. rpc.sendNestedArray(new int[][] { { nestedIntArray[1][0],
  59. nestedIntArray[0][0] } }, new SimpleTestBean[][] {
  60. { nestedBeanArray[0][1] }, { nestedBeanArray[0][0] } });
  61. }
  62. public void sendMap(Map<String, SimpleTestBean> stringMap,
  63. Map<Connector, Boolean> connectorMap,
  64. Map<Integer, Connector> intMap,
  65. Map<SimpleTestBean, SimpleTestBean> beanMap) {
  66. Map<SimpleTestBean, SimpleTestBean> updatedBeanMap = new HashMap<SimpleTestBean, SimpleTestBean>();
  67. for (Entry<SimpleTestBean, SimpleTestBean> entry : beanMap
  68. .entrySet()) {
  69. updatedBeanMap.put(entry.getValue(), entry.getKey());
  70. }
  71. rpc.sendMap(Collections.singletonMap("a", stringMap.get("b")),
  72. Collections.singletonMap(getThisConnector(),
  73. connectorMap.get(getRootConnector())),
  74. Collections.singletonMap(
  75. Integer.valueOf(stringMap.size()),
  76. getThisConnector()), updatedBeanMap);
  77. }
  78. public void sendLong(long value, Long boxedValue, long[] array) {
  79. rpc.sendLong(array[0], Long.valueOf(value), new long[] {
  80. array[1], boxedValue.longValue() });
  81. }
  82. public void sendList(List<Integer> intList,
  83. List<Connector> connectorList, List<SimpleTestBean> beanList) {
  84. Collections.sort(intList);
  85. Collections.reverse(beanList);
  86. rpc.sendList(intList,
  87. Arrays.asList(getThisConnector(), getRootConnector()),
  88. beanList);
  89. }
  90. public void sendInt(int value, Integer boxedValue, int[] array) {
  91. rpc.sendInt(array.length, Integer.valueOf(array[0]), new int[] {
  92. value, boxedValue.intValue() });
  93. }
  94. public void sendFloat(float value, Float boxedValue, float[] array) {
  95. Arrays.sort(array);
  96. rpc.sendFloat(boxedValue.floatValue(), Float.valueOf(value),
  97. array);
  98. }
  99. public void sendDouble(double value, Double boxedValue,
  100. double[] array) {
  101. rpc.sendDouble(value + boxedValue.doubleValue(),
  102. Double.valueOf(value - boxedValue.doubleValue()),
  103. new double[] { array.length, array[0], array[1] });
  104. }
  105. public void sendConnector(Connector connector) {
  106. rpc.sendConnector(getThisConnector());
  107. }
  108. public void sendChar(char value, Character boxedValue, char[] array) {
  109. rpc.sendChar(Character.toUpperCase(boxedValue.charValue()),
  110. Character.valueOf(value), new String(array)
  111. .toLowerCase().toCharArray());
  112. }
  113. public void sendByte(byte value, Byte boxedValue, byte[] array) {
  114. // There will most certainly be a bug that is not discovered
  115. // because this particular method doesn't do anything with it's
  116. // values...
  117. rpc.sendByte(value, boxedValue, array);
  118. }
  119. public void sendBoolean(boolean value, Boolean boxedValue,
  120. boolean[] array) {
  121. boolean[] inverseArray = new boolean[array.length];
  122. for (int i = 0; i < array.length; i++) {
  123. inverseArray[i] = !array[i];
  124. }
  125. rpc.sendBoolean(boxedValue == Boolean.TRUE,
  126. Boolean.valueOf(!value), inverseArray);
  127. }
  128. public void sendBean(ComplexTestBean complexBean,
  129. SimpleTestBean simpleBean, SimpleTestBean[] array) {
  130. SimpleTestBean updatedSimpleBean = new SimpleTestBean();
  131. updatedSimpleBean.setValue(complexBean.getInnerBean1()
  132. .getValue());
  133. ComplexTestBean updatedComplexBean = new ComplexTestBean();
  134. updatedComplexBean.setInnerBean1(complexBean.getInnerBean2());
  135. updatedComplexBean.setInnerBean2(complexBean
  136. .getInnerBeanCollection().get(0));
  137. updatedComplexBean.setInnerBeanCollection(Arrays.asList(
  138. simpleBean, updatedSimpleBean));
  139. updatedComplexBean.setPrivimite(complexBean.getPrivimite() + 1);
  140. ArrayList<SimpleTestBean> arrayList = new ArrayList<SimpleTestBean>(
  141. Arrays.asList(array));
  142. Collections.reverse(arrayList);
  143. rpc.sendBean(updatedComplexBean, updatedSimpleBean,
  144. arrayList.toArray(new SimpleTestBean[array.length]));
  145. }
  146. public void sendArrayList(List<int[]> primitiveArrayList,
  147. List<Integer[]> objectArrayList,
  148. List<SimpleTestBean[]> beanArrayList) {
  149. Collections.reverse(beanArrayList);
  150. List<Integer[]> updatedObjectArrayList = new ArrayList<Integer[]>();
  151. for (int[] array : primitiveArrayList) {
  152. updatedObjectArrayList.add(new Integer[] {
  153. Integer.valueOf(array.length),
  154. Integer.valueOf(array[0]) });
  155. }
  156. rpc.sendArrayList(Arrays.asList(
  157. new int[] { primitiveArrayList.size() },
  158. new int[] { objectArrayList.get(0).length }),
  159. updatedObjectArrayList, beanArrayList);
  160. }
  161. public void sendNull(String value1, String value2) {
  162. rpc.sendNull(value2, value1);
  163. }
  164. public void sendListArray(List<Integer>[] objectListArray,
  165. List<SimpleTestBean>[] beanListArray) {
  166. rpc.sendListArray(new List[] { objectListArray[1],
  167. objectListArray[0] }, new List[] { Collections
  168. .singletonList(beanListArray[0].get(0)) });
  169. }
  170. });
  171. }
  172. private Connector getRootConnector() {
  173. return getConnection().getRootConnector();
  174. }
  175. private Connector getThisConnector() {
  176. // Cast to Connector for use in e.g. Collections.singleton() to get a
  177. // Set<Connector>
  178. return this;
  179. }
  180. @Override
  181. public ComplexTestBean getState() {
  182. return (ComplexTestBean) super.getState();
  183. }
  184. @Override
  185. public void onStateChanged(StateChangeEvent stateChangeEvent) {
  186. // TODO do something clever
  187. }
  188. }