123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- package com.vaadin.v7.tests.server;
-
- import static org.junit.Assert.assertNotNull;
-
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
-
- import org.junit.Test;
-
- import com.vaadin.server.VaadinSession;
- import com.vaadin.v7.data.Item;
- import com.vaadin.v7.data.Property;
- import com.vaadin.v7.data.util.IndexedContainer;
- import com.vaadin.v7.data.util.MethodProperty;
- import com.vaadin.v7.data.validator.RegexpValidator;
-
- public class SerializationTest {
-
- @Test
- public void testValidators() throws Exception {
- RegexpValidator validator = new RegexpValidator(".*", "Error");
- validator.validate("aaa");
- RegexpValidator validator2 = serializeAndDeserialize(validator);
- validator2.validate("aaa");
- }
-
- @Test
- public void testIndedexContainerItemIds() throws Exception {
- IndexedContainer ic = new IndexedContainer();
- ic.addContainerProperty("prop1", String.class, null);
- Object id = ic.addItem();
- ic.getItem(id).getItemProperty("prop1").setValue("1");
-
- Item item2 = ic.addItem("item2");
- item2.getItemProperty("prop1").setValue("2");
-
- serializeAndDeserialize(ic);
- }
-
- @Test
- public void testMethodPropertyGetter() throws Exception {
- MethodProperty<?> mp = new MethodProperty<Object>(new Data(),
- "dummyGetter");
- serializeAndDeserialize(mp);
- }
-
- @Test
- public void testMethodPropertyGetterAndSetter() throws Exception {
- MethodProperty<?> mp = new MethodProperty<Object>(new Data(),
- "dummyGetterAndSetter");
- serializeAndDeserialize(mp);
- }
-
- @Test
- public void testMethodPropertyInt() throws Exception {
- MethodProperty<?> mp = new MethodProperty<Object>(new Data(),
- "dummyInt");
- serializeAndDeserialize(mp);
- }
-
- @Test
- public void testVaadinSession() throws Exception {
- VaadinSession session = new VaadinSession(null);
-
- session = serializeAndDeserialize(session);
-
- assertNotNull(
- "Pending access queue was not recreated after deserialization",
- session.getPendingAccessQueue());
- }
-
- private static <S extends Serializable> S serializeAndDeserialize(S s)
- throws IOException, ClassNotFoundException {
- // Serialize and deserialize
-
- ByteArrayOutputStream bs = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(bs);
- out.writeObject(s);
- byte[] data = bs.toByteArray();
- ObjectInputStream in = new ObjectInputStream(
- new ByteArrayInputStream(data));
- @SuppressWarnings("unchecked")
- S s2 = (S) in.readObject();
-
- // using special toString(Object) method to avoid calling
- // Property.toString(), which will be temporarily disabled
- // TODO This is hilariously broken (#12723)
- if (s.equals(s2)) {
- System.out.println(toString(s) + " equals " + toString(s2));
- } else {
- System.out.println(toString(s) + " does NOT equal " + toString(s2));
- }
-
- return s2;
- }
-
- private static String toString(Object o) {
- if (o instanceof Property) {
- return String.valueOf(((Property<?>) o).getValue());
- } else {
- return String.valueOf(o);
- }
- }
-
- public static class Data implements Serializable {
- private String dummyGetter;
- private String dummyGetterAndSetter;
- private int dummyInt;
-
- public String getDummyGetterAndSetter() {
- return dummyGetterAndSetter;
- }
-
- public void setDummyGetterAndSetter(String dummyGetterAndSetter) {
- this.dummyGetterAndSetter = dummyGetterAndSetter;
- }
-
- public int getDummyInt() {
- return dummyInt;
- }
-
- public void setDummyInt(int dummyInt) {
- this.dummyInt = dummyInt;
- }
-
- public String getDummyGetter() {
- return dummyGetter;
- }
- }
- }
|