org.chromium.sdk/src/org/chromium/sdk/internal/protocolparser/dynamicimpl/JsonProtocolParser.java
--- a/org.chromium.sdk/src/org/chromium/sdk/internal/protocolparser/dynamicimpl/JsonProtocolParser.java Mon Jun 07 16:33:07 2010 -0700
+++ b/org.chromium.sdk/src/org/chromium/sdk/internal/protocolparser/dynamicimpl/JsonProtocolParser.java Mon Jun 07 16:51:19 2010 -0700
@@ -374,7 +374,7 @@
if (fieldTypeParser.asQuickParser() != null) {
LazyParseFieldMethodHandler onDemandHandler = new LazyParseFieldMethodHandler(
- fieldTypeParser.asQuickParser(), isOptional, fieldName);
+ fieldTypeParser.asQuickParser(), isOptional, fieldName, typeClass);
onDemandHanlers.add(onDemandHandler);
methodHandler = onDemandHandler;
} else {
@@ -534,11 +534,14 @@
private final QuickParser<?> quickParser;
private final boolean isOptional;
private final String fieldName;
+ private final Class<?> typeClass;
- LazyParseFieldMethodHandler(QuickParser<?> quickParser, boolean isOptional, String fieldName) {
+ LazyParseFieldMethodHandler(QuickParser<?> quickParser, boolean isOptional, String fieldName,
+ Class<?> typeClass) {
this.quickParser = quickParser;
this.isOptional = isOptional;
this.fieldName = fieldName;
+ this.typeClass = typeClass;
}
@Override
@@ -546,7 +549,8 @@
try {
return parse(objectData);
} catch (JsonProtocolParseException e) {
- throw new JsonProtocolParseRuntimeException("On demand parsing failed", e);
+ throw new JsonProtocolParseRuntimeException(
+ "On demand parsing failed for " + objectData.getUnderlyingObject(), e);
}
}
@@ -568,11 +572,13 @@
try {
return quickParser.parseValueQuick(value);
} catch (JsonProtocolParseException e) {
- throw new JsonProtocolParseException("Failed to parse field " + fieldName, e);
+ throw new JsonProtocolParseException("Failed to parse field " + fieldName + " in type " +
+ typeClass.getName(), e);
}
} else {
if (!isOptional) {
- throw new JsonProtocolParseException("Field is not optional: " + fieldName);
+ throw new JsonProtocolParseException("Field is not optional: " + fieldName +
+ " (in type " + typeClass.getName() + ")");
}
return null;
}