diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2017-03-10 15:08:51 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-10 15:08:51 -0800 |
commit | e11cd3ee6edd102333a16fcca49de5de3c0bc0e2 (patch) | |
tree | 795f3152b6c5902a33e9d4f1523081fb34874fcc /java/util/src/main/java/com/google/protobuf/util | |
parent | 92064a40ceb2ecdfed42f441b9c46c9c9fa00d34 (diff) | |
parent | 075475f8341393e78d8cd664f8500f6397ee9941 (diff) |
Merge pull request #2818 from xfxyjwf/i1470
Don't expose gson exceptions in JsonFormat.
Diffstat (limited to 'java/util/src/main/java/com/google/protobuf/util')
-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 { |