aboutsummaryrefslogtreecommitdiffhomepage
path: root/java/util/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Feng Xiao <xfxyjwf@gmail.com>2017-03-10 15:08:51 -0800
committerGravatar GitHub <noreply@github.com>2017-03-10 15:08:51 -0800
commite11cd3ee6edd102333a16fcca49de5de3c0bc0e2 (patch)
tree795f3152b6c5902a33e9d4f1523081fb34874fcc /java/util/src/main/java/com
parent92064a40ceb2ecdfed42f441b9c46c9c9fa00d34 (diff)
parent075475f8341393e78d8cd664f8500f6397ee9941 (diff)
Merge pull request #2818 from xfxyjwf/i1470
Don't expose gson exceptions in JsonFormat.
Diffstat (limited to 'java/util/src/main/java/com')
-rw-r--r--java/util/src/main/java/com/google/protobuf/util/JsonFormat.java21
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 {