OpenRefine / OpenRefine/OpenRefine
Legacy extension functions/controls causes AbstractMethodError
@tfmorris is already working on this.
Since Oct 8, 2025.
- Dominant language
- Java
- Stars
- 12k
- Forks
- 2.2k
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 27
Description
If you load a pre-2018 extension, such as the georefine extension, you will get an empty Help tab in the Expression Preview window caused by an AbstractMethodError for the new methods which were added to the Function interface during the conversion from org.json to Jackson for JSON serialization.
To Reproduce
Steps to reproduce the behavior:
- Install the georefine extension
- Open a project and use Transform... to load the GREL expression editor
- Click the Help tab.
Current Results
Help tab is disabled with no hint as to why.
Expected Behavior
At a minimum, the user should be informed what happened and what the offending Function/Control is. Ideally, the legacy JSON write method would be invoked to fetch the JSON to be inserted into the Jackson output.
Versions
- OpenRefine: 3.0 or later
- extension(s): pre-3.0
Additional context
Normally these extensions don't even load, but the author of this one released a new version that bundles the org.json JAR when OpenRefine removed it from the build.
Stack trace:
java.lang.AbstractMethodError
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:688)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:760)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:183)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:807)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:763)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:719)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:34)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:732)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:760)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:183)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:503)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:342)
at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1587)
at com.fasterxml.jackson.databind.ObjectWriter._writeValueAndClose(ObjectWriter.java:1289)
at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1114)
at com.google.refine.commands.HttpUtilities.respondJsonInternal(HttpUtilities.java:119)
at com.google.refine.commands.HttpUtilities.respondJSON(HttpUtilities.java:107)
at com.google.refine.commands.Command.respondJSON(Command.java:385)
at com.google.refine.commands.Command.respondJSON(Command.java:375)
at com.google.refine.commands.expr.GetExpressionLanguageInfoCommand.doGet(GetExpressionLanguageInfoCommand.java:70)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.