From 2882cf98756974f40ba98d66c7d7318db6acd538 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Mon, 27 May 2013 21:38:25 +0300 Subject: [PATCH] Added Serializable where missing and ignore classes which do not need Serializable Change-Id: I197b2d62282ee957458e05d9cac357df47f05e85 --- .../data/util/LegacyPropertyHelper.java | 3 ++- .../AtmospherePushConnection.java | 4 ++-- .../server/communication/PushConnection.java | 4 +++- .../tests/server/TestClassesSerializable.java | 22 +++++++++++++++++++ .../shared/ui/calendar/CalendarEventId.java | 4 +++- .../shared/ui/calendar/DateConstants.java | 4 +++- .../com/vaadin/shared/util/SharedUtil.java | 4 +++- 7 files changed, 38 insertions(+), 7 deletions(-) diff --git a/server/src/com/vaadin/data/util/LegacyPropertyHelper.java b/server/src/com/vaadin/data/util/LegacyPropertyHelper.java index 0276e35dbf..3eb22524f8 100644 --- a/server/src/com/vaadin/data/util/LegacyPropertyHelper.java +++ b/server/src/com/vaadin/data/util/LegacyPropertyHelper.java @@ -15,6 +15,7 @@ */ package com.vaadin.data.util; +import java.io.Serializable; import java.util.logging.Level; import java.util.logging.Logger; @@ -32,7 +33,7 @@ import com.vaadin.server.VaadinService; * @deprecated This is only used internally for backwards compatibility */ @Deprecated -public class LegacyPropertyHelper { +public class LegacyPropertyHelper implements Serializable { /** * Returns the property value converted to a String. diff --git a/server/src/com/vaadin/server/communication/AtmospherePushConnection.java b/server/src/com/vaadin/server/communication/AtmospherePushConnection.java index 96507b55f1..e967dd925a 100644 --- a/server/src/com/vaadin/server/communication/AtmospherePushConnection.java +++ b/server/src/com/vaadin/server/communication/AtmospherePushConnection.java @@ -42,12 +42,12 @@ import com.vaadin.ui.UI; * @author Vaadin Ltd * @since 7.1 */ -public class AtmospherePushConnection implements Serializable, PushConnection { +public class AtmospherePushConnection implements PushConnection { /** * Represents a message that can arrive as multiple fragments. */ - protected static class FragmentedMessage { + protected static class FragmentedMessage implements Serializable { private final StringBuilder message = new StringBuilder(); private final int messageLength; diff --git a/server/src/com/vaadin/server/communication/PushConnection.java b/server/src/com/vaadin/server/communication/PushConnection.java index 4e043f565f..bb88998402 100644 --- a/server/src/com/vaadin/server/communication/PushConnection.java +++ b/server/src/com/vaadin/server/communication/PushConnection.java @@ -16,6 +16,8 @@ package com.vaadin.server.communication; +import java.io.Serializable; + import com.vaadin.ui.UI; /** @@ -25,7 +27,7 @@ import com.vaadin.ui.UI; * @author Vaadin Ltd * @since 7.1 */ -public interface PushConnection { +public interface PushConnection extends Serializable { /** * Pushes pending state changes and client RPC calls to the client. It is diff --git a/server/tests/src/com/vaadin/tests/server/TestClassesSerializable.java b/server/tests/src/com/vaadin/tests/server/TestClassesSerializable.java index 90cb6b9994..af6d9ed732 100644 --- a/server/tests/src/com/vaadin/tests/server/TestClassesSerializable.java +++ b/server/tests/src/com/vaadin/tests/server/TestClassesSerializable.java @@ -7,6 +7,7 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Enumeration; import java.util.Iterator; import java.util.List; @@ -33,6 +34,7 @@ public class TestClassesSerializable extends TestCase { "com\\.vaadin\\.launcher\\..*", // "com\\.vaadin\\.client\\..*", // "com\\.vaadin\\.server\\.widgetsetutils\\..*", // + "com\\.vaadin\\.server\\.themeutils\\..*", // "com\\.vaadin\\.tests\\..*", // exclude automated tests "com\\.vaadin\\.tools\\..*", // "com\\.vaadin\\.ui\\.themes\\..*", // @@ -41,7 +43,13 @@ public class TestClassesSerializable extends TestCase { "com\\.vaadin\\.event\\.LayoutEvents", // "com\\.vaadin\\.event\\.MouseEvents", // "com\\.vaadin\\.server\\.VaadinPortlet", // + "com\\.vaadin\\.server\\.MockServletConfig", // + "com\\.vaadin\\.server\\.MockServletContext", // "com\\.vaadin\\.server\\.Constants", // + "com\\.vaadin\\.server\\.communication\\.FileUploadHandler\\$SimpleMultiPartInputStream", // + "com\\.vaadin\\.server\\.communication\\.PushRequestHandler.*", + "com\\.vaadin\\.server\\.communication\\.PushHandler.*", // PushHandler + // and its inner classes do not need to be serializable "com\\.vaadin\\.util\\.SerializerHelper", // fully static // class level filtering, also affecting nested classes and // interfaces @@ -50,6 +58,7 @@ public class TestClassesSerializable extends TestCase { "com\\.vaadin\\.util\\.ReflectTools.*", // "com\\.vaadin\\.data\\.util\\.ReflectTools.*", // "com\\.vaadin\\.sass.*", // + "com\\.vaadin\\.testbench.*", // "com\\.vaadin\\.util\\.CurrentInstance\\$1", // }; @@ -88,6 +97,19 @@ public class TestClassesSerializable extends TestCase { // report non-serializable classes and interfaces if (!Serializable.class.isAssignableFrom(cls)) { + if (cls.getSuperclass() == Object.class + && cls.getInterfaces().length == 1) { + // Single interface implementors + Class iface = cls.getInterfaces()[0]; + + if (iface == Runnable.class) { + // Ignore Runnables used with access() + continue; + } else if (iface == Comparator.class) { + // Ignore inline comparators + continue; + } + } nonSerializableClasses.add(cls); // TODO easier to read when testing // System.err.println(cls); diff --git a/shared/src/com/vaadin/shared/ui/calendar/CalendarEventId.java b/shared/src/com/vaadin/shared/ui/calendar/CalendarEventId.java index 6f52aabf43..27f1cdd341 100644 --- a/shared/src/com/vaadin/shared/ui/calendar/CalendarEventId.java +++ b/shared/src/com/vaadin/shared/ui/calendar/CalendarEventId.java @@ -15,6 +15,8 @@ */ package com.vaadin.shared.ui.calendar; +import java.io.Serializable; + /** * CalendarEventId contains static String identifiers for all Calendar events. * These are used both in the client and server side code. @@ -22,7 +24,7 @@ package com.vaadin.shared.ui.calendar; * @since 7.1 * @author Vaadin Ltd. */ -public class CalendarEventId { +public class CalendarEventId implements Serializable { public static final String EVENTMOVE = "eventMove"; public static final String RANGESELECT = "rangeSelect"; diff --git a/shared/src/com/vaadin/shared/ui/calendar/DateConstants.java b/shared/src/com/vaadin/shared/ui/calendar/DateConstants.java index 8a840274c2..9b1c995642 100644 --- a/shared/src/com/vaadin/shared/ui/calendar/DateConstants.java +++ b/shared/src/com/vaadin/shared/ui/calendar/DateConstants.java @@ -15,12 +15,14 @@ */ package com.vaadin.shared.ui.calendar; +import java.io.Serializable; + /** * * @since 7.1 * */ -public class DateConstants { +public class DateConstants implements Serializable { public static final String ACTION_DATE_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss"; public static final String CLIENT_DATE_FORMAT = "yyyy-MM-dd"; diff --git a/shared/src/com/vaadin/shared/util/SharedUtil.java b/shared/src/com/vaadin/shared/util/SharedUtil.java index 2242fa4363..80efe68d83 100644 --- a/shared/src/com/vaadin/shared/util/SharedUtil.java +++ b/shared/src/com/vaadin/shared/util/SharedUtil.java @@ -15,6 +15,8 @@ */ package com.vaadin.shared.util; +import java.io.Serializable; + /** * Misc internal utility methods used by both the server and the client package. * @@ -22,7 +24,7 @@ package com.vaadin.shared.util; * @since 7.1 * */ -public class SharedUtil { +public class SharedUtil implements Serializable { /** * Checks if a and b are equals using {@link #equals(Object)}. Handles null * values as well. Does not ensure that objects are of the same type. -- 2.39.5