From cf713a59e2dade6b64ff20198b3ed543bed34026 Mon Sep 17 00:00:00 2001
From: Hallvard Traetteberg <hal@ntnu.no>
Date: Thu, 10 Oct 2019 16:33:03 +0200
Subject: [PATCH] Should fix issue #13

---
 .../java/simpleex/json/LatLongSerializer.java |  2 +-
 .../java/simpleex/json/LatLongsJsonTest.java  | 29 +++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/simpleexample2/core/src/main/java/simpleex/json/LatLongSerializer.java b/simpleexample2/core/src/main/java/simpleex/json/LatLongSerializer.java
index d56f101..d4d1542 100644
--- a/simpleexample2/core/src/main/java/simpleex/json/LatLongSerializer.java
+++ b/simpleexample2/core/src/main/java/simpleex/json/LatLongSerializer.java
@@ -56,8 +56,8 @@ public class LatLongSerializer extends JsonSerializer<LatLong> {
         }
         jsonGen.writeEndArray();
       }
+      jsonGen.writeEndObject();
     }
-
     jsonGen.writeEndObject();
   }
 }
diff --git a/simpleexample2/core/src/test/java/simpleex/json/LatLongsJsonTest.java b/simpleexample2/core/src/test/java/simpleex/json/LatLongsJsonTest.java
index 4345ef6..cf1d8e9 100644
--- a/simpleexample2/core/src/test/java/simpleex/json/LatLongsJsonTest.java
+++ b/simpleexample2/core/src/test/java/simpleex/json/LatLongsJsonTest.java
@@ -1,5 +1,6 @@
 package simpleex.json;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.util.Arrays;
 import java.util.Iterator;
@@ -59,6 +60,34 @@ public class LatLongsJsonTest {
     assertEqualsIgnoreWhitespace(expectedJson, actualJson);
   }
 
+  @Test
+  public void testLatLongsMetaDataSerialization() {
+    final LatLong latLong = latLong1();
+    final MetaData metaData = latLong.getMetaData();
+    metaData.addTags("aTag", "bTag");
+    metaData.setProperty("aProperty", "aValue");
+    final LatLongs latLongs = new LatLongs(latLong);
+    try {
+      final String actualJson = objectMapper.writeValueAsString(latLongs);
+      final String expectedJson = "[{\"latitude\":63.1,\"longitude\":12.3,"
+          + "\"metaData\":{\"tags\":[\"aTag\",\"bTag\"],\"properties\":[{\"name\":\"aProperty\",\"value\":\"aValue\"}]}}]";
+      assertEqualsIgnoreWhitespace(expectedJson, actualJson);
+    } catch (final JsonProcessingException e) {
+      Assert.fail();
+    } catch (final Exception e) {
+      Assert.fail();
+    }
+  }
+
+  @Test
+  public void testLatLongsMetaDataDeserialization() throws Exception {
+    final String json = "[{\"latitude\":63.1,\"longitude\":12.3,"
+        + "\"metaData\":{\"tags\":[\"aTag\",\"bTag\"],\"properties\":[{\"name\":\"aProperty\",\"value\":\"aValue\"}]}}]";
+    final LatLongs latLongs = objectMapper.readValue(json, LatLongs.class);
+    Assert.assertEquals(1, latLongs.getLatLongCount());
+    Assert.assertTrue(latLongs.getLatLong(0).hasMetaData());
+  }
+
   // relies on a certain order
   private void check(final Iterator<String> it, final String... ss) {
     final Iterator<String> it1 = Arrays.asList(ss).iterator();
-- 
GitLab