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 11KB

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