summaryrefslogtreecommitdiffstats
path: root/uitest/src
diff options
context:
space:
mode:
authorJonatan Kronqvist <jonatan@vaadin.com>2014-05-11 12:38:08 +0300
committerVaadin Code Review <review@vaadin.com>2014-05-12 12:05:18 +0000
commit82033e827fcbfb396886df627a1f8d7c02359e9d (patch)
tree77f1d451abbe4c294f3c40db721bc37b3898819a /uitest/src
parent2b60bbb8576b456c11d324b8f8a92d8ade54ffff (diff)
downloadvaadin-framework-82033e827fcbfb396886df627a1f8d7c02359e9d.tar.gz
vaadin-framework-82033e827fcbfb396886df627a1f8d7c02359e9d.zip
Support long in state again (#13692)
The fix to #9379 broke the support for long type fields in state classes. This patch bypasses the unboxing of long values and adds the @UnsafeNativeLong annotation to the methods which may fetch and return (without modifying) long values. SerializerTest is extended to test the different data types in States. Change-Id: I29fd2c6af13cd9a0d29ecb1444ed9eb8a2b013e3
Diffstat (limited to 'uitest/src')
-rw-r--r--uitest/src/com/vaadin/tests/serialization/SerializerTest.java122
-rw-r--r--uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java78
-rw-r--r--uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java2
-rw-r--r--uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java100
-rw-r--r--uitest/src/com/vaadin/tests/widgetset/server/SerializerTestExtension.java6
5 files changed, 302 insertions, 6 deletions
diff --git a/uitest/src/com/vaadin/tests/serialization/SerializerTest.java b/uitest/src/com/vaadin/tests/serialization/SerializerTest.java
index 990b350c97..1c18fb1912 100644
--- a/uitest/src/com/vaadin/tests/serialization/SerializerTest.java
+++ b/uitest/src/com/vaadin/tests/serialization/SerializerTest.java
@@ -38,6 +38,7 @@ import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.tests.util.Log;
import com.vaadin.tests.widgetset.client.ComplexTestBean;
import com.vaadin.tests.widgetset.client.SerializerTestRpc;
+import com.vaadin.tests.widgetset.client.SerializerTestState;
import com.vaadin.tests.widgetset.client.SimpleTestBean;
import com.vaadin.tests.widgetset.server.SerializerTestExtension;
@@ -58,44 +59,110 @@ public class SerializerTest extends AbstractTestUI {
SerializerTestRpc rpc = testExtension
.getRpcProxy(SerializerTestRpc.class);
+ SerializerTestState state = testExtension.getState();
+
rpc.sendBeanSubclass(new SimpleTestBean() {
@Override
public int getValue() {
return 42;
}
});
+ state.simpleTestBean = new SimpleTestBean() {
+ @Override
+ public int getValue() {
+ return 42;
+ }
+ };
+
rpc.sendBoolean(true, Boolean.FALSE, new boolean[] { true, true, false,
true, false, false });
+ state.booleanValue = true;
+ state.booleanObjectValue = Boolean.FALSE;
+ state.booleanArray = new boolean[] { true, true, false, true, false,
+ false };
+
rpc.sendByte((byte) 5, Byte.valueOf((byte) -12), new byte[] { 3, 1, 2 });
+ state.byteValue = (byte) 5;
+ state.byteObjectValue = Byte.valueOf((byte) -12);
+ state.byteArray = new byte[] { 3, 1, 2 };
+
rpc.sendChar('\u222b', Character.valueOf('å'), "aBcD".toCharArray());
+ state.charValue = '\u222b';
+ state.charObjectValue = Character.valueOf('å');
+ state.charArray = "aBcD".toCharArray();
+
rpc.sendInt(Integer.MAX_VALUE, Integer.valueOf(0), new int[] { 5, 7 });
+ state.intValue = Integer.MAX_VALUE;
+ state.intObjectValue = Integer.valueOf(0);
+ state.intArray = new int[] { 5, 7 };
+
rpc.sendLong(577431841358l, Long.valueOf(0), new long[] {
-57841235865l, 57 });
+ state.longValue = 577431841358l;
+ state.longObjectValue = Long.valueOf(0);
+ state.longArray = new long[] { -57841235865l, 57 };
+
rpc.sendFloat(3.14159f, Float.valueOf(Math.nextUp(1)), new float[] {
57, 0, -12 });
+ state.floatValue = 3.14159f;
+ state.floatObjectValue = Float.valueOf(Math.nextUp(1));
+ state.floatArray = new float[] { 57, 0, -12 };
+
rpc.sendDouble(Math.PI, Double.valueOf(-Math.E), new double[] {
Double.MAX_VALUE, Double.MIN_VALUE });
+ state.doubleValue = Math.PI;
+ state.doubleValue = Double.valueOf(-Math.E);
+ state.doubleArray = new double[] { Double.MAX_VALUE, Double.MIN_VALUE };
+
rpc.sendString("This is a tesing string ‡");
+ state.string = "This is a tesing string ‡";
+
rpc.sendConnector(this);
+ state.connector = this;
+
rpc.sendBean(
new ComplexTestBean(new SimpleTestBean(0),
new SimpleTestBean(1), Arrays.asList(
new SimpleTestBean(3), new SimpleTestBean(4)),
5), new SimpleTestBean(6),
new SimpleTestBean[] { new SimpleTestBean(7) });
+ state.complexTestBean = new ComplexTestBean(new SimpleTestBean(0),
+ new SimpleTestBean(1), Arrays.asList(new SimpleTestBean(3),
+ new SimpleTestBean(4)), 5);
+ state.simpleTestBean = new SimpleTestBean(6);
+ state.simpleTestBeanArray = new SimpleTestBean[] { new SimpleTestBean(7) };
+
rpc.sendNull("Not null", null);
+ state.nullString = null;
+
rpc.sendNestedArray(new int[][] { { 5 }, { 7 } },
new SimpleTestBean[][] { { new SimpleTestBean(4),
new SimpleTestBean(2) } });
+ state.nestedIntArray = new int[][] { { 5 }, { 7 } };
+ state.nestedBeanArray = new SimpleTestBean[][] { {
+ new SimpleTestBean(4), new SimpleTestBean(2) } };
+
rpc.sendList(Arrays.asList(5, 8, -234), Arrays.<Connector> asList(this,
testExtension), Arrays.asList(new SimpleTestBean(234),
new SimpleTestBean(-568)));
+ state.intList = Arrays.asList(5, 8, -234);
+ state.connectorList = Arrays.<Connector> asList(this, testExtension);
+ state.simpleTestBeanList = Arrays.asList(new SimpleTestBean(234),
+ new SimpleTestBean(-568));
+
rpc.sendArrayList(
Arrays.asList(new int[] { 1, 2 }, new int[] { 3, 4 }),
Arrays.asList(new Integer[] { 5, 6 }, new Integer[] { 7, 8 }),
Collections
.singletonList(new SimpleTestBean[] { new SimpleTestBean(
7) }));
+ state.primitiveArrayList = Arrays.asList(new int[] { 1, 2 }, new int[] {
+ 3, 4 });
+ state.objectArrayList = Arrays.asList(new Integer[] { 5, 6 },
+ new Integer[] { 7, 8 });
+ state.beanArrayList = Collections
+ .singletonList(new SimpleTestBean[] { new SimpleTestBean(7) });
+
// Disabled because of #8861
// rpc.sendListArray(
// new List[] { Arrays.asList(1, 2), Arrays.asList(3, 4) },
@@ -103,6 +170,11 @@ public class SerializerTest extends AbstractTestUI {
rpc.sendSet(new HashSet<Integer>(Arrays.asList(4, 7, 12)), Collections
.singleton((Connector) this), new HashSet<SimpleTestBean>(
Arrays.asList(new SimpleTestBean(1), new SimpleTestBean(2))));
+ state.intSet = new HashSet<Integer>(Arrays.asList(4, 7, 12));
+ state.connectorSet = Collections.singleton((Connector) this);
+
+ state.beanSet = new HashSet<SimpleTestBean>(Arrays.asList(
+ new SimpleTestBean(1), new SimpleTestBean(2)));
rpc.sendMap(new HashMap<String, SimpleTestBean>() {
{
@@ -125,6 +197,31 @@ public class SerializerTest extends AbstractTestUI {
put(new SimpleTestBean(-4), new SimpleTestBean(4));
}
});
+ state.stringMap = new HashMap<String, SimpleTestBean>() {
+ {
+ put("1", new SimpleTestBean(1));
+ put("2", new SimpleTestBean(2));
+ }
+ };
+ state.connectorMap = new HashMap<Connector, SimpleTestBean>() {
+ {
+ put(testExtension, new SimpleTestBean(3));
+ put(getUI(), new SimpleTestBean(4));
+ }
+ };
+ state.intMap = new HashMap<Integer, Connector>() {
+ {
+ put(5, testExtension);
+ put(10, getUI());
+ }
+ };
+ state.beanMap = new HashMap<SimpleTestBean, SimpleTestBean>() {
+ {
+ put(new SimpleTestBean(5), new SimpleTestBean(-5));
+ put(new SimpleTestBean(-4), new SimpleTestBean(4));
+ }
+ };
+
rpc.sendWrappedGenerics(new HashMap<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>>() {
{
put(Collections.singleton(new SimpleTestBean(42)),
@@ -136,13 +233,32 @@ public class SerializerTest extends AbstractTestUI {
});
}
});
+ state.generics = new HashMap<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>>() {
+ {
+ put(Collections.singleton(new SimpleTestBean(42)),
+ new HashMap<Integer, List<SimpleTestBean>>() {
+ {
+ put(1, Arrays.asList(new SimpleTestBean(1),
+ new SimpleTestBean(3)));
+ }
+ });
+ }
+ };
rpc.sendEnum(ContentMode.TEXT, new ContentMode[] {
ContentMode.PREFORMATTED, ContentMode.XML },
Arrays.asList(ContentMode.HTML, ContentMode.RAW));
+ state.contentMode = ContentMode.TEXT;
+ state.array = new ContentMode[] { ContentMode.PREFORMATTED,
+ ContentMode.XML };
+ state.list = Arrays.asList(ContentMode.HTML, ContentMode.RAW);
+
rpc.sendDate(new Date(1));
rpc.sendDate(new Date(2013 - 1900, 5 - 1, 31, 11, 12, 13));
+ state.date1 = new Date(1);
+ state.date2 = new Date(2013 - 1900, 5 - 1, 31, 11, 12, 13);
+
testExtension.registerRpc(new SerializerTestRpc() {
@Override
public void sendBoolean(boolean value, Boolean boxedValue,
@@ -331,6 +447,12 @@ public class SerializerTest extends AbstractTestUI {
log.log("sendDate: " + format.format(date));
}
+ @Override
+ public void log(String string) {
+ log.log(string);
+
+ }
+
});
}
diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java
index f1917aaeb9..0ef4b664ac 100644
--- a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java
+++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java
@@ -257,6 +257,11 @@ public class SerializerTestConnector extends AbstractExtensionConnector {
public void sendDate(Date date) {
rpc.sendDate(date);
}
+
+ @Override
+ public void log(String message) {
+ // Do nothing, used only in the other direction
+ }
});
}
@@ -271,13 +276,80 @@ public class SerializerTestConnector extends AbstractExtensionConnector {
}
@Override
- public ComplexTestBean getState() {
- return (ComplexTestBean) super.getState();
+ public SerializerTestState getState() {
+ return (SerializerTestState) super.getState();
}
@Override
public void onStateChanged(StateChangeEvent stateChangeEvent) {
- // TODO do something clever
+ rpc.log("state.booleanValue: " + getState().booleanValue);
+ rpc.log("state.booleanObjectValue: " + getState().booleanObjectValue);
+ rpc.log("state.booleanArray: " + getState().booleanArray);
+
+ rpc.log("state.byteValue: " + getState().byteValue);
+ rpc.log("state.byteObjectValue: " + getState().byteObjectValue);
+ rpc.log("state.byteArray: " + getState().byteArray);
+
+ rpc.log("state.charValue: " + getState().charValue);
+ rpc.log("state.charObjectValue: " + getState().charObjectValue);
+ rpc.log("state.charArray: " + String.valueOf(getState().charArray));
+
+ rpc.log("state.intValue: " + getState().intValue);
+ rpc.log("state.intObjectValue: " + getState().intObjectValue);
+ rpc.log("state.intArray: " + getState().intArray);
+
+ rpc.log("state.longValue: " + getState().longValue);
+ rpc.log("state.longObjectValue: " + getState().longObjectValue);
+ rpc.log("state.longArray: " + getState().longArray);
+
+ rpc.log("state.floatValue: " + getState().floatValue);
+ rpc.log("state.floatObjectValue: " + getState().floatObjectValue);
+ rpc.log("state.floatArray: " + getState().floatArray);
+
+ rpc.log("state.doubleValue: " + getState().doubleValue);
+ rpc.log("state.doubleObjectValue: " + getState().doubleObjectValue);
+ rpc.log("state.doubleArray: " + getState().doubleArray);
+
+ /*
+ * TODO public double doubleValue; public Double DoubleValue; public
+ * double[] doubleArray; ;
+ *
+ * public String string;
+ *
+ * public String nullString;
+ *
+ * public Connector connector;
+ *
+ * public ComplexTestBean complexTestBean; public SimpleTestBean
+ * simpleTestBean; public SimpleTestBean[] simpleTestBeanArray; public
+ * int[][] nestedIntArray; public SimpleTestBean[][] nestedBeanArray;
+ *
+ * public List<Integer> intList; public List<Connector> connectorList;
+ * public List<SimpleTestBean> simpleTestBeanList;
+ *
+ * public List<int[]> primitiveArrayList; public List<Integer[]>
+ * objectArrayList; public List<SimpleTestBean[]> beanArrayList;
+ *
+ * public List<Integer>[] objectListArray; public List<SimpleTestBean>[]
+ * beanListArray;
+ *
+ * public Set<Integer> intSet; public Set<Connector> connectorSet;
+ * public Set<SimpleTestBean> beanSet;
+ *
+ * public Map<String, SimpleTestBean> stringMap; public Map<Connector,
+ * SimpleTestBean> connectorMap; public Map<Integer, Connector> intMap;
+ * public Map<SimpleTestBean, SimpleTestBean> beanMap;
+ *
+ * public Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>>
+ * generics;
+ *
+ * public ContentMode contentMode; public ContentMode[] array; public
+ * List<ContentMode> list;
+ *
+ * public SimpleTestBean bean;
+ *
+ * public Date date1; public Date date2;
+ */
}
@Override
diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java
index 1c0784d8b4..6b4c4e7ac1 100644
--- a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java
+++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java
@@ -81,4 +81,6 @@ public interface SerializerTestRpc extends ServerRpc, ClientRpc {
public void sendBeanSubclass(SimpleTestBean bean);
public void sendDate(Date date);
+
+ public void log(String string);
}
diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java
new file mode 100644
index 0000000000..d22165b2bb
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License; Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing; software
+ * distributed under the License is distributed on an "AS IS" BASIS; WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND; either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.widgetset.client;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.vaadin.shared.AbstractComponentState;
+import com.vaadin.shared.Connector;
+import com.vaadin.shared.ui.label.ContentMode;
+
+public class SerializerTestState extends AbstractComponentState {
+
+ public boolean booleanValue;
+ public Boolean booleanObjectValue;
+ public boolean[] booleanArray;
+
+ public byte byteValue;
+ public Byte byteObjectValue;
+ public byte[] byteArray;
+
+ public char charValue;
+ public Character charObjectValue;
+ public char[] charArray;
+
+ public int intValue;
+ public Integer intObjectValue;
+ public int[] intArray;
+
+ public long longValue;
+ public Long longObjectValue;
+ public long[] longArray;
+
+ public float floatValue;
+ public Float floatObjectValue;
+ public float[] floatArray;
+
+ public double doubleValue;
+ public Double doubleObjectValue;
+ public double[] doubleArray;
+
+ public String string;
+
+ public String nullString;
+
+ public Connector connector;
+
+ public ComplexTestBean complexTestBean;
+ public SimpleTestBean simpleTestBean;
+ public SimpleTestBean[] simpleTestBeanArray;
+ public int[][] nestedIntArray;
+ public SimpleTestBean[][] nestedBeanArray;
+
+ public List<Integer> intList;
+ public List<Connector> connectorList;
+ public List<SimpleTestBean> simpleTestBeanList;
+
+ public List<int[]> primitiveArrayList;
+ public List<Integer[]> objectArrayList;
+ public List<SimpleTestBean[]> beanArrayList;
+
+ public List<Integer>[] objectListArray;
+ public List<SimpleTestBean>[] beanListArray;
+
+ public Set<Integer> intSet;
+ public Set<Connector> connectorSet;
+ public Set<SimpleTestBean> beanSet;
+
+ public Map<String, SimpleTestBean> stringMap;
+ public Map<Connector, SimpleTestBean> connectorMap;
+ public Map<Integer, Connector> intMap;
+ public Map<SimpleTestBean, SimpleTestBean> beanMap;
+
+ public Map<Set<SimpleTestBean>, Map<Integer, List<SimpleTestBean>>> generics;
+
+ public ContentMode contentMode;
+ public ContentMode[] array;
+ public List<ContentMode> list;
+
+ public SimpleTestBean bean;
+
+ public Date date1;
+ public Date date2;
+
+}
diff --git a/uitest/src/com/vaadin/tests/widgetset/server/SerializerTestExtension.java b/uitest/src/com/vaadin/tests/widgetset/server/SerializerTestExtension.java
index c42b8749c2..5fc5c19497 100644
--- a/uitest/src/com/vaadin/tests/widgetset/server/SerializerTestExtension.java
+++ b/uitest/src/com/vaadin/tests/widgetset/server/SerializerTestExtension.java
@@ -18,8 +18,8 @@ package com.vaadin.tests.widgetset.server;
import com.vaadin.server.AbstractExtension;
import com.vaadin.shared.communication.ClientRpc;
-import com.vaadin.tests.widgetset.client.ComplexTestBean;
import com.vaadin.tests.widgetset.client.SerializerTestRpc;
+import com.vaadin.tests.widgetset.client.SerializerTestState;
public class SerializerTestExtension extends AbstractExtension {
@@ -29,8 +29,8 @@ public class SerializerTestExtension extends AbstractExtension {
}
@Override
- public ComplexTestBean getState() {
- return (ComplexTestBean) super.getState();
+ public SerializerTestState getState() {
+ return (SerializerTestState) super.getState();
}
public void registerRpc(SerializerTestRpc rpc) {