diff --git a/src/main/java/org/springframework/data/geo/Box.java b/src/main/java/org/springframework/data/geo/Box.java index 85aca0527..670ad8e54 100644 --- a/src/main/java/org/springframework/data/geo/Box.java +++ b/src/main/java/org/springframework/data/geo/Box.java @@ -27,6 +27,8 @@ import org.springframework.util.Assert; */ public class Box implements Shape { + private static final long serialVersionUID = 8198095179084040711L; + private final Point first; private final Point second; diff --git a/src/main/java/org/springframework/data/geo/Circle.java b/src/main/java/org/springframework/data/geo/Circle.java index 4233124dd..daa275486 100644 --- a/src/main/java/org/springframework/data/geo/Circle.java +++ b/src/main/java/org/springframework/data/geo/Circle.java @@ -28,6 +28,8 @@ import org.springframework.util.Assert; */ public class Circle implements Shape { + private static final long serialVersionUID = 5215611530535947924L; + private final Point center; private final Distance radius; diff --git a/src/main/java/org/springframework/data/geo/CustomMetric.java b/src/main/java/org/springframework/data/geo/CustomMetric.java index c77c66ca8..4aafb4cf2 100644 --- a/src/main/java/org/springframework/data/geo/CustomMetric.java +++ b/src/main/java/org/springframework/data/geo/CustomMetric.java @@ -24,6 +24,8 @@ package org.springframework.data.geo; */ public class CustomMetric implements Metric { + private static final long serialVersionUID = -2972074177454114228L; + private final double multiplier; /** diff --git a/src/main/java/org/springframework/data/geo/Distance.java b/src/main/java/org/springframework/data/geo/Distance.java index 7478c38e2..621ff6fa0 100644 --- a/src/main/java/org/springframework/data/geo/Distance.java +++ b/src/main/java/org/springframework/data/geo/Distance.java @@ -15,6 +15,8 @@ */ package org.springframework.data.geo; +import java.io.Serializable; + import org.springframework.util.Assert; /** @@ -24,7 +26,9 @@ import org.springframework.util.Assert; * @author Thomas Darimont * @since 1.8 */ -public class Distance { +public class Distance implements Serializable { + + private static final long serialVersionUID = 2460886201934027744L; private final double value; private final Metric metric; diff --git a/src/main/java/org/springframework/data/geo/GeoResult.java b/src/main/java/org/springframework/data/geo/GeoResult.java index b31f056be..bd4006060 100644 --- a/src/main/java/org/springframework/data/geo/GeoResult.java +++ b/src/main/java/org/springframework/data/geo/GeoResult.java @@ -15,6 +15,8 @@ */ package org.springframework.data.geo; +import java.io.Serializable; + import org.springframework.util.Assert; /** @@ -24,7 +26,9 @@ import org.springframework.util.Assert; * @author Thomas Darimont * @since 1.8 */ -public class GeoResult { +public class GeoResult implements Serializable { + + private static final long serialVersionUID = 1637452570977581370L; private final T content; private final Distance distance; diff --git a/src/main/java/org/springframework/data/geo/GeoResults.java b/src/main/java/org/springframework/data/geo/GeoResults.java index 279b2fb46..c9e5d571f 100644 --- a/src/main/java/org/springframework/data/geo/GeoResults.java +++ b/src/main/java/org/springframework/data/geo/GeoResults.java @@ -15,6 +15,7 @@ */ package org.springframework.data.geo; +import java.io.Serializable; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -30,7 +31,9 @@ import org.springframework.util.StringUtils; * @author Thomas Darimont * @since 1.8 */ -public class GeoResults implements Iterable> { +public class GeoResults implements Iterable>, Serializable { + + private static final long serialVersionUID = 8347363491300219485L; private final List> results; private final Distance averageDistance; @@ -115,7 +118,7 @@ public class GeoResults implements Iterable> { GeoResults that = (GeoResults) obj; - return this.results.equals(that.results) && this.averageDistance == that.averageDistance; + return this.results.equals(that.results) && this.averageDistance.equals(that.averageDistance); } /* diff --git a/src/main/java/org/springframework/data/geo/Metric.java b/src/main/java/org/springframework/data/geo/Metric.java index e4f457e74..b8040b029 100644 --- a/src/main/java/org/springframework/data/geo/Metric.java +++ b/src/main/java/org/springframework/data/geo/Metric.java @@ -15,6 +15,8 @@ */ package org.springframework.data.geo; +import java.io.Serializable; + /** * Interface for {@link Metric}s that can be applied to a base scale. * @@ -22,7 +24,7 @@ package org.springframework.data.geo; * @author Thomas Darimont * @since 1.8 */ -public interface Metric { +public interface Metric extends Serializable { /** * Returns the multiplier to calculate metrics values from a base scale. diff --git a/src/main/java/org/springframework/data/geo/Point.java b/src/main/java/org/springframework/data/geo/Point.java index f35107f9e..a56f45373 100644 --- a/src/main/java/org/springframework/data/geo/Point.java +++ b/src/main/java/org/springframework/data/geo/Point.java @@ -15,6 +15,7 @@ */ package org.springframework.data.geo; +import java.io.Serializable; import java.util.Locale; import org.springframework.data.annotation.PersistenceConstructor; @@ -28,7 +29,9 @@ import org.springframework.util.Assert; * @author Thomas Darimont * @since 1.8 */ -public class Point { +public class Point implements Serializable { + + private static final long serialVersionUID = 3583151228933783558L; private final double x; private final double y; diff --git a/src/main/java/org/springframework/data/geo/Polygon.java b/src/main/java/org/springframework/data/geo/Polygon.java index d1dbf168c..bbff70d78 100644 --- a/src/main/java/org/springframework/data/geo/Polygon.java +++ b/src/main/java/org/springframework/data/geo/Polygon.java @@ -34,6 +34,8 @@ import org.springframework.util.StringUtils; */ public class Polygon implements Iterable, Shape { + private static final long serialVersionUID = -2705040068154648988L; + private final List points; /** diff --git a/src/main/java/org/springframework/data/geo/Shape.java b/src/main/java/org/springframework/data/geo/Shape.java index 8affdbd3e..c3180cb88 100644 --- a/src/main/java/org/springframework/data/geo/Shape.java +++ b/src/main/java/org/springframework/data/geo/Shape.java @@ -15,10 +15,12 @@ */ package org.springframework.data.geo; +import java.io.Serializable; + /** * Common interface for all shapes. Allows building external representations of them. * * @author Oliver Gierke * @author Thomas Darimont */ -public interface Shape {} +public interface Shape extends Serializable {} diff --git a/src/test/java/org/springframework/data/geo/BoxUnitTests.java b/src/test/java/org/springframework/data/geo/BoxUnitTests.java index c7767504b..dd6f5aaa2 100644 --- a/src/test/java/org/springframework/data/geo/BoxUnitTests.java +++ b/src/test/java/org/springframework/data/geo/BoxUnitTests.java @@ -19,6 +19,7 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; +import org.springframework.util.SerializationUtils; /** * Unit tests for {@link Box}. @@ -61,4 +62,14 @@ public class BoxUnitTests { assertThat(first.toString(), is("Box [Point [x=1.000000, y=1.000000], Point [x=2.000000, y=2.000000]]")); } + + /** + * @see DATACMNS-482 + */ + @Test + public void testSerialization() { + + Box serialized = (Box) SerializationUtils.deserialize(SerializationUtils.serialize(first)); + assertThat(serialized, is(first)); + } } diff --git a/src/test/java/org/springframework/data/geo/CircleUnitTests.java b/src/test/java/org/springframework/data/geo/CircleUnitTests.java index a7bf41757..8a056ee7c 100644 --- a/src/test/java/org/springframework/data/geo/CircleUnitTests.java +++ b/src/test/java/org/springframework/data/geo/CircleUnitTests.java @@ -19,6 +19,7 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; +import org.springframework.util.SerializationUtils; /** * Unit tests for {@link Circle}. @@ -70,4 +71,16 @@ public class CircleUnitTests { assertThat(new Circle(1, 1, 1).toString(), is("Circle: [center=Point [x=1.000000, y=1.000000], radius=1.0]")); } + + /** + * @see DATACMNS-482 + */ + @Test + public void testSerialization() { + + Circle circle = new Circle(1, 1, 1); + + Circle serialized = (Circle) SerializationUtils.deserialize(SerializationUtils.serialize(circle)); + assertThat(serialized, is(circle)); + } } diff --git a/src/test/java/org/springframework/data/geo/DistanceUnitTests.java b/src/test/java/org/springframework/data/geo/DistanceUnitTests.java index d6b27da30..91a93a428 100644 --- a/src/test/java/org/springframework/data/geo/DistanceUnitTests.java +++ b/src/test/java/org/springframework/data/geo/DistanceUnitTests.java @@ -21,6 +21,7 @@ import static org.junit.Assert.*; import static org.springframework.data.geo.Metrics.*; import org.junit.Test; +import org.springframework.util.SerializationUtils; /** * Unit tests for {@link Distance}. @@ -124,4 +125,16 @@ public class DistanceUnitTests { assertThat(new Distance(6.21371256214785, MILES).in(KILOMETERS).toString(), is(new Distance(10, KILOMETERS).toString())); } + + /** + * @see DATACMNS-482 + */ + @Test + public void testSerialization() { + + Distance dist = new Distance(10, KILOMETERS); + + Distance serialized = (Distance) SerializationUtils.deserialize(SerializationUtils.serialize(dist)); + assertThat(serialized, is(dist)); + } } diff --git a/src/test/java/org/springframework/data/geo/GeoResultUnitTests.java b/src/test/java/org/springframework/data/geo/GeoResultUnitTests.java index e16843615..dc01026e6 100644 --- a/src/test/java/org/springframework/data/geo/GeoResultUnitTests.java +++ b/src/test/java/org/springframework/data/geo/GeoResultUnitTests.java @@ -19,6 +19,7 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; +import org.springframework.util.SerializationUtils; /** * Unit tests for {@link GeoResult}. @@ -64,4 +65,17 @@ public class GeoResultUnitTests { public void rejectsNullContent() { new GeoResult(null, new Distance(2.5)); } + + /** + * @see DATACMNS-482 + */ + @Test + public void testSerialization() { + + GeoResult result = new GeoResult("test", new Distance(2)); + + @SuppressWarnings("unchecked") + GeoResult serialized = (GeoResult) SerializationUtils.deserialize(SerializationUtils.serialize(result)); + assertThat(serialized, is(result)); + } } diff --git a/src/test/java/org/springframework/data/geo/GeoResultsUnitTests.java b/src/test/java/org/springframework/data/geo/GeoResultsUnitTests.java index 0f97c8b8e..ae07aba0a 100644 --- a/src/test/java/org/springframework/data/geo/GeoResultsUnitTests.java +++ b/src/test/java/org/springframework/data/geo/GeoResultsUnitTests.java @@ -21,6 +21,7 @@ import static org.junit.Assert.*; import java.util.Arrays; import org.junit.Test; +import org.springframework.util.SerializationUtils; /** * Unit tests for {@link GeoResults}. @@ -43,4 +44,20 @@ public class GeoResultsUnitTests { assertThat(geoResults.getAverageDistance(), is(new Distance(3.5))); } + + /** + * @see DATACMNS-482 + */ + @Test + public void testSerialization() { + + GeoResult result = new GeoResult("test", new Distance(2)); + @SuppressWarnings("unchecked") + GeoResults geoResults = new GeoResults(Arrays.asList(result)); + + @SuppressWarnings("unchecked") + GeoResults serialized = (GeoResults) SerializationUtils.deserialize(SerializationUtils + .serialize(geoResults)); + assertThat(serialized, is(geoResults)); + } } diff --git a/src/test/java/org/springframework/data/geo/PointUnitTests.java b/src/test/java/org/springframework/data/geo/PointUnitTests.java index 2a610350e..834b6b03f 100644 --- a/src/test/java/org/springframework/data/geo/PointUnitTests.java +++ b/src/test/java/org/springframework/data/geo/PointUnitTests.java @@ -19,6 +19,7 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; +import org.springframework.util.SerializationUtils; /** * Unit tests for {@link Point}. @@ -55,4 +56,15 @@ public class PointUnitTests { assertThat(new Point(1.5, 1.5).toString(), is("Point [x=1.500000, y=1.500000]")); } + /** + * @see DATACMNS-482 + */ + @Test + public void testSerialization() { + + Point point = new Point(1.5, 1.5); + + Point serialized = (Point) SerializationUtils.deserialize(SerializationUtils.serialize(point)); + assertThat(serialized, is(point)); + } } diff --git a/src/test/java/org/springframework/data/geo/PolygonUnitTests.java b/src/test/java/org/springframework/data/geo/PolygonUnitTests.java index d51bc2b99..299b6afd4 100644 --- a/src/test/java/org/springframework/data/geo/PolygonUnitTests.java +++ b/src/test/java/org/springframework/data/geo/PolygonUnitTests.java @@ -19,6 +19,7 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; +import org.springframework.util.SerializationUtils; /** * Unit tests for {@link Polygon}. @@ -73,4 +74,16 @@ public class PolygonUnitTests { assertThat(new Polygon(third, second, first).toString(), is("Polygon: [Point [x=3.000000, y=3.000000],Point [x=2.000000, y=2.000000],Point [x=1.000000, y=1.000000]]")); } + + /** + * @see DATACMNS-482 + */ + @Test + public void testSerialization() { + + Polygon polygon = new Polygon(third, second, first); + + Polygon serialized = (Polygon) SerializationUtils.deserialize(SerializationUtils.serialize(polygon)); + assertThat(serialized, is(polygon)); + } }