Better exception message when failing to guess deserialization of Object

POLYGENE-231


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/41402490
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/41402490
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/41402490

Branch: refs/heads/develop
Commit: 41402490a1d7bee058d9acb51600511be7285873
Parents: b4b6396
Author: Paul Merlin <[email protected]>
Authored: Mon Apr 3 10:08:19 2017 +0200
Committer: Paul Merlin <[email protected]>
Committed: Mon Apr 3 10:08:19 2017 +0200

----------------------------------------------------------------------
 .../serialization/javaxjson/JavaxJsonDeserializer.java   | 10 +++++++++-
 .../serialization/javaxxml/JavaxXmlDeserializer.java     |  9 ++++++++-
 .../messagepack/MessagePackDeserializer.java             | 11 ++++++++++-
 3 files changed, 27 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/41402490/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonDeserializer.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonDeserializer.java
 
b/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonDeserializer.java
index d1310d7..06bb8c8 100644
--- 
a/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonDeserializer.java
+++ 
b/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonDeserializer.java
@@ -255,7 +255,15 @@ public class JavaxJsonDeserializer extends 
AbstractTextDeserializer
                 }
             case STRING:
                 byte[] bytes = Base64.getDecoder().decode( asString( json 
).getBytes( UTF_8 ) );
-                return (T) deserializeJava( bytes );
+                try
+                {
+                    return (T) deserializeJava( bytes );
+                }
+                catch( SerializationException ex )
+                {
+                    throw new SerializationException( "Don't know how to 
deserialize " + valueType + " from " + json,
+                                                      ex );
+                }
             default:
                 throw new SerializationException( "Don't know how to 
deserialize " + valueType + " from " + json );
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/41402490/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlDeserializer.java
----------------------------------------------------------------------
diff --git 
a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlDeserializer.java
 
b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlDeserializer.java
index 69a9068..dcadbd1 100644
--- 
a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlDeserializer.java
+++ 
b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlDeserializer.java
@@ -359,7 +359,14 @@ public class JavaxXmlDeserializer extends 
AbstractTextDeserializer
         if( xml.getNodeType() == Node.CDATA_SECTION_NODE || xml.getNodeType() 
== Node.TEXT_NODE )
         {
             byte[] bytes = Base64.getDecoder().decode( 
xml.getNodeValue().getBytes( UTF_8 ) );
-            return deserializeJava( bytes );
+            try
+            {
+                return deserializeJava( bytes );
+            }
+            catch( SerializationException ex )
+            {
+                throw new SerializationException( "Don't know how to 
deserialize " + valueType + " from " + xml, ex );
+            }
         }
         throw new SerializationException( "Don't know how to deserialize " + 
valueType + " from " + xml );
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/41402490/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/MessagePackDeserializer.java
----------------------------------------------------------------------
diff --git 
a/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/MessagePackDeserializer.java
 
b/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/MessagePackDeserializer.java
index 402f9bc..d74b0a4 100644
--- 
a/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/MessagePackDeserializer.java
+++ 
b/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/MessagePackDeserializer.java
@@ -282,7 +282,16 @@ public interface MessagePackDeserializer extends 
Deserializer
             switch( value.getValueType() )
             {
                 case BINARY:
-                    return deserializeJava( 
value.asBinaryValue().asByteArray() );
+                    try
+                    {
+                        return deserializeJava( 
value.asBinaryValue().asByteArray() );
+                    }
+                    catch( SerializationException ex )
+                    {
+                        throw new SerializationException( "Don't know how to 
deserialize " + valueType
+                                                          + " from " + value + 
" (" + value.getValueType() + ")",
+                                                          ex );
+                    }
                 case MAP:
                     MapValue mapValue = value.asMapValue();
                     Optional<String> typeInfo = mapValue

Reply via email to