Fix: NullPointerException in conlluOutput
Change-Id: I4f739a462b7dd6a719e8b193ecc0e320e18a9d6a
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
index 15a654a..97dcebb 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
@@ -1260,7 +1260,7 @@
}
if (morpho[docId]?.containsKey("${span.from}-${span.to}") == true) {
- val mfs = morpho[docId]!!["${span.from}-${span.to}"]
+ val mfs = morpho[docId]?.get("${span.from}-${span.to}")
if (mfs != null) {
// Add offset info to MISC field for external annotation with ZIP output
val miscWithOffset = if (annotationWorkerPool != null && outputFormat == OutputFormat.KORAPXML) {
@@ -1269,21 +1269,34 @@
else "${existing}|Offset=${span.from}-${span.to}"
} else mfs.misc ?: "_"
- output.append(
- printConlluToken(
- token_index,
- tokenText,
- mfs.lemma ?: "_",
- mfs.upos ?: "_",
- mfs.xpos ?: "_",
- mfs.feats ?: "_",
- mfs.head ?: "_",
- mfs.deprel ?: "_",
- mfs.deps ?: "_",
- miscWithOffset,
- columns
+ try {
+ output.append(
+ printConlluToken(
+ token_index,
+ tokenText,
+ mfs.lemma ?: "_",
+ mfs.upos ?: "_",
+ mfs.xpos ?: "_",
+ mfs.feats ?: "_",
+ mfs.head ?: "_",
+ mfs.deprel ?: "_",
+ mfs.deps ?: "_",
+ miscWithOffset,
+ columns
+ )
)
- )
+ } catch (e: NullPointerException) {
+ LOGGER.warning("NPE processing morpho for $docId at ${span.from}-${span.to}: ${e.message}")
+ // Fallback to token without morpho
+ val miscWithOffset = if (annotationWorkerPool != null && outputFormat == OutputFormat.KORAPXML) {
+ "Offset=${span.from}-${span.to}"
+ } else "_"
+ output.append(
+ printConlluToken(
+ token_index, tokenText, misc = miscWithOffset, columns = columns
+ )
+ )
+ }
} else {
// Fallback if mfs is null
val miscWithOffset = if (annotationWorkerPool != null && outputFormat == OutputFormat.KORAPXML) {