diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2017-03-09 14:42:45 -0800 |
---|---|---|
committer | Feng Xiao <xfxyjwf@gmail.com> | 2017-03-09 14:42:45 -0800 |
commit | 075475f8341393e78d8cd664f8500f6397ee9941 (patch) | |
tree | 8b2182a9d84d43cdacec0613efc1feb5f92cfba9 /java/util/src/main/java | |
parent | 8e465dcf467beb92549e6d987e5dc3683b718f58 (diff) |
Don't expose gson exceptions in JsonFormat.
Diffstat (limited to 'java/util/src/main/java')
-rw-r--r-- | java/util/src/main/java/com/google/protobuf/util/JsonFormat.java | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java b/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java index ac712c94..838700f7 100644 --- a/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java +++ b/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java @@ -35,6 +35,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; +import com.google.gson.JsonIOException; import com.google.gson.JsonNull; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -1067,9 +1068,23 @@ public class JsonFormat { } void merge(Reader json, Message.Builder builder) throws IOException { - JsonReader reader = new JsonReader(json); - reader.setLenient(false); - merge(jsonParser.parse(reader), builder); + try { + JsonReader reader = new JsonReader(json); + reader.setLenient(false); + merge(jsonParser.parse(reader), builder); + } catch (InvalidProtocolBufferException e) { + throw e; + } catch (JsonIOException e) { + // Unwrap IOException. + if (e.getCause() instanceof IOException) { + throw (IOException) e.getCause(); + } else { + throw new InvalidProtocolBufferException(e.getMessage()); + } + } catch (Exception e) { + // We convert all exceptions from JSON parsing to our own exceptions. + throw new InvalidProtocolBufferException(e.getMessage()); + } } void merge(String json, Message.Builder builder) throws InvalidProtocolBufferException { |