From 1ce28a6878c8a5661c73f0ee4fbc2b2b0f3e2395 Mon Sep 17 00:00:00 2001 From: Mingun Date: Mon, 24 Feb 2020 01:26:30 +0500 Subject: [PATCH] Java: Implement interface `PositionInfo` if positions is generated Fix https://github.com/kaitai-io/kaitai_struct_java_runtime/issues/27 --- .../io/kaitai/struct/languages/JavaCompiler.scala | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/shared/src/main/scala/io/kaitai/struct/languages/JavaCompiler.scala b/shared/src/main/scala/io/kaitai/struct/languages/JavaCompiler.scala index 41f8c4906..f8b733d71 100644 --- a/shared/src/main/scala/io/kaitai/struct/languages/JavaCompiler.scala +++ b/shared/src/main/scala/io/kaitai/struct/languages/JavaCompiler.scala @@ -72,13 +72,22 @@ class JavaCompiler(typeProvider: ClassTypeProvider, config: RuntimeConfig) "" } - out.puts(s"public ${staticStr}class ${type2class(name)} extends $kstructName {") + val iface = if (config.readStoresPos) { + "implements PositionInfo " + } else { + "" + } + + out.puts(s"public ${staticStr}class ${type2class(name)} extends $kstructName $iface{") out.inc if (config.readStoresPos) { out.puts("public final Map _spans = new HashMap();") + out.puts("@Override") + out.puts("public final Map _spans() { return this._spans; }") out.puts + importList.add("io.kaitai.struct.PositionInfo") importList.add("io.kaitai.struct.Span") importList.add("java.util.ArrayList") importList.add("java.util.HashMap")