From f9356059361de5b4e6ced481988f3248af3b1d52 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Wed, 26 Sep 2018 13:57:35 +0200 Subject: Add more information to a NullPointerException. --- .../indexinglanguage/SimpleAdapterFactory.java | 32 ++++++++++++++-------- 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'indexinglanguage') diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java index 252f6c5bd12..43ccd6d48a8 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java @@ -48,23 +48,31 @@ public class SimpleAdapterFactory implements AdapterFactory { DocumentId docId = upd.getId(); Document complete = new Document(docType, upd.getId()); for (FieldPathUpdate fieldUpd : upd) { - if (FieldPathUpdateHelper.isComplete(fieldUpd)) { - // A 'complete' field path update is basically a regular top-level field update - // in wolf's clothing. Convert it to a regular field update to be friendlier - // towards the search core backend. - FieldPathUpdateHelper.applyUpdate(fieldUpd, complete); - } else { - ret.add(new IdentityFieldPathUpdateAdapter(fieldUpd, newDocumentAdapter(complete, true))); + try { + if (FieldPathUpdateHelper.isComplete(fieldUpd)) { + // A 'complete' field path update is basically a regular top-level field update + // in wolf's clothing. Convert it to a regular field update to be friendlier + // towards the search core backend. + FieldPathUpdateHelper.applyUpdate(fieldUpd, complete); + } else { + ret.add(new IdentityFieldPathUpdateAdapter(fieldUpd, newDocumentAdapter(complete, true))); + } + } catch (NullPointerException e) { + throw new IllegalArgumentException("Exception during handling of update '" + fieldUpd + "' to field '" + fieldUpd.getFieldPath() + "'", e); } } for (FieldUpdate fieldUpd : upd.getFieldUpdates()) { Field field = fieldUpd.getField(); for (ValueUpdate valueUpd : fieldUpd.getValueUpdates()) { - if (FieldUpdateHelper.isComplete(field, valueUpd)) { - FieldUpdateHelper.applyUpdate(field, valueUpd, complete); - } else { - Document partial = FieldUpdateHelper.newPartialDocument(docType, docId, field, valueUpd); - ret.add(FieldUpdateAdapter.fromPartialUpdate(expressionSelector.selectExpression(docType, field.getName()),newDocumentAdapter(partial, true), valueUpd)); + try { + if (FieldUpdateHelper.isComplete(field, valueUpd)) { + FieldUpdateHelper.applyUpdate(field, valueUpd, complete); + } else { + Document partial = FieldUpdateHelper.newPartialDocument(docType, docId, field, valueUpd); + ret.add(FieldUpdateAdapter.fromPartialUpdate(expressionSelector.selectExpression(docType, field.getName()), newDocumentAdapter(partial, true), valueUpd)); + } + } catch (NullPointerException e) { + throw new IllegalArgumentException("Exception during handling of update '" + valueUpd + "' to field '" + field + "'", e); } } } -- cgit v1.2.3