Add support for serializing and deserializing java.nio.path
diff --git a/src/main/java/org/eclipse/yasson/internal/serializer/DefaultSerializers.java b/src/main/java/org/eclipse/yasson/internal/serializer/DefaultSerializers.java
index 9f2fd22..28f6f65 100644
--- a/src/main/java/org/eclipse/yasson/internal/serializer/DefaultSerializers.java
+++ b/src/main/java/org/eclipse/yasson/internal/serializer/DefaultSerializers.java
@@ -16,6 +16,7 @@
 import java.math.BigInteger;
 import java.net.URI;
 import java.net.URL;
+import java.nio.file.Path;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.LocalDate;
@@ -118,6 +119,8 @@
                         new SerializerProviderWrapper(OptionalIntTypeSerializer::new, OptionalIntTypeDeserializer::new));
         serializers.put(OptionalLong.class,
                         new SerializerProviderWrapper(OptionalLongTypeSerializer::new, OptionalLongTypeDeserializer::new));
+        serializers.put(Path.class,
+                        new SerializerProviderWrapper(PathTypeSerializer::new, PathTypeDeserializer::new));
         serializers.put(Short.class, new SerializerProviderWrapper(ShortTypeSerializer::new, ShortTypeDeserializer::new));
         serializers.put(Short.TYPE, new SerializerProviderWrapper(ShortTypeSerializer::new, ShortTypeDeserializer::new));
         serializers.put(String.class, new SerializerProviderWrapper(StringTypeSerializer::new, StringTypeDeserializer::new));
diff --git a/src/main/java/org/eclipse/yasson/internal/serializer/PathTypeDeserializer.java b/src/main/java/org/eclipse/yasson/internal/serializer/PathTypeDeserializer.java
new file mode 100644
index 0000000..87d231a
--- /dev/null
+++ b/src/main/java/org/eclipse/yasson/internal/serializer/PathTypeDeserializer.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2020 IBM and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0,
+ * or the Eclipse Distribution License v. 1.0 which is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
+ */
+
+package org.eclipse.yasson.internal.serializer;
+
+import java.lang.reflect.Type;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.eclipse.yasson.internal.Unmarshaller;
+import org.eclipse.yasson.internal.model.customization.Customization;
+
+public class PathTypeDeserializer extends AbstractValueTypeDeserializer<Path> {
+    public PathTypeDeserializer(Customization customization) {
+        super(Path.class, customization);
+    }
+    
+    @Override
+    protected Path deserialize(String jsonValue, Unmarshaller unmarshaller, Type rtType) {
+        return Paths.get(jsonValue);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/yasson/internal/serializer/PathTypeSerializer.java b/src/main/java/org/eclipse/yasson/internal/serializer/PathTypeSerializer.java
new file mode 100644
index 0000000..491ca13
--- /dev/null
+++ b/src/main/java/org/eclipse/yasson/internal/serializer/PathTypeSerializer.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2020 IBM and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0,
+ * or the Eclipse Distribution License v. 1.0 which is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
+ */
+
+package org.eclipse.yasson.internal.serializer;
+
+import java.nio.file.Path;
+
+import javax.json.stream.JsonGenerator;
+
+import org.eclipse.yasson.internal.Marshaller;
+import org.eclipse.yasson.internal.model.customization.Customization;
+
+public class PathTypeSerializer extends AbstractValueTypeSerializer<Path> {
+    public PathTypeSerializer(Customization customization) {
+        super(customization);
+    }
+
+    @Override
+    protected void serialize(Path obj, JsonGenerator generator, Marshaller marshaller) {
+        generator.write(obj.toString());
+    }
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/typeConvertors/DefaultSerializersTest.java b/src/test/java/org/eclipse/yasson/defaultmapping/typeConvertors/DefaultSerializersTest.java
index 20a4f83..4eb65cd 100644
--- a/src/test/java/org/eclipse/yasson/defaultmapping/typeConvertors/DefaultSerializersTest.java
+++ b/src/test/java/org/eclipse/yasson/defaultmapping/typeConvertors/DefaultSerializersTest.java
@@ -13,6 +13,7 @@
 package org.eclipse.yasson.defaultmapping.typeConvertors;
 
 import org.junit.jupiter.api.*;
+
 import static org.junit.jupiter.api.Assertions.*;
 import static org.eclipse.yasson.Jsonbs.*;
 
@@ -24,6 +25,10 @@
 import javax.json.bind.Jsonb;
 import javax.json.bind.JsonbConfig;
 import javax.json.bind.config.BinaryDataStrategy;
+
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Base64;
 import java.util.UUID;
 
@@ -108,7 +113,7 @@
         result = jsonb.fromJson(base64UrlEncodedJson, ByteArrayWrapper.class);
         assertArrayEquals(array, result.array);
     }
-
+    
     @Test
     public void testUUID() {
         UUID uuid = UUID.randomUUID();
@@ -116,4 +121,23 @@
         UUID result = defaultJsonb.fromJson(json, UUID.class);
         assertEquals(uuid, result);
     }
+    
+    @Test
+    public void serializeObjectWithPth() {
+        
+        Path expectedPath = Paths.get("/tmp/hello/me.txt");
+        String expectedPathString = expectedPath.toString().replace("\\", "\\\\");        
+        String expectedJson = "{\"path\":\"" + expectedPathString + "\"}";
+        final ObjectWithPath objectWithPath = new ObjectWithPath();
+        objectWithPath.path = expectedPath;
+        final String s = defaultJsonb.toJson(objectWithPath);
+        assertEquals(expectedJson, s);
+        
+        ObjectWithPath actualObject = defaultJsonb.fromJson(expectedJson, ObjectWithPath.class);
+        assertEquals(expectedPath, actualObject.path);
+    }
+    
+    public static class ObjectWithPath {
+        public Path path;
+    }
 }
diff --git a/src/test/java/org/eclipse/yasson/serializers/SerializersTest.java b/src/test/java/org/eclipse/yasson/serializers/SerializersTest.java
index 506497f..a8983e2 100644
--- a/src/test/java/org/eclipse/yasson/serializers/SerializersTest.java
+++ b/src/test/java/org/eclipse/yasson/serializers/SerializersTest.java
@@ -41,6 +41,9 @@
 import javax.json.bind.config.PropertyOrderStrategy;
 import javax.json.bind.serializer.DeserializationContext;
 import javax.json.bind.serializer.JsonbDeserializer;
+import javax.json.bind.serializer.JsonbSerializer;
+import javax.json.bind.serializer.SerializationContext;
+import javax.json.stream.JsonGenerator;
 import javax.json.stream.JsonParser;
 
 import org.eclipse.yasson.TestTypeToken;