- changed status to open
ThreadSafeFilterConfigurationMapper.ConfigBuilder - Not possible to add BasePlainTextFilter configurations
Hi Okapi team,
I see in 1.46.0 that the FilterConfigurationMapper has been deprecated and is to be replaced by the ThreadSafeFilterConfigurationMapper. I’d like to make you aware of the following issue.
Unfortunately, it’s not possible to load the configurations of the BasePlainTextFilter(s) via method net.sf.okapi.common.filters.ThreadSafeFilterConfigurationMapper.ConfigBuilder#addConfigurations
When I try to add this filter, e.g., by adding it to the net.sf.okapi.common.integration.RoundTripUtils#loadDefaultConfigs method…
private static Map<String, FilterConfiguration> loadDefaultConfigs() {
var builder = new ThreadSafeFilterConfigurationMapper.ConfigBuilder();
builder.addConfigurations(BasePlainTextFilter.class); // add filter here to provoke the error
builder.addConfigurations(OpenXMLFilter.class);
...
… I get the following error:
Caused by: net.sf.okapi.common.exceptions.OkapiException: java.lang.IllegalArgumentException: Couldn't add configurations for net.sf.okapi.filters.plaintext.base.BasePlainTextFilter
at net.sf.okapi.common.integration.RoundTripUtils.extract(RoundTripUtils.java:193)
at net.sf.okapi.common.integration.RoundTripUtils.extract(RoundTripUtils.java:78)
at net.sf.okapi.common.integration.XmlOrTextRoundTripIT.runTest(XmlOrTextRoundTripIT.java:65)
... 10 more
Caused by: java.lang.IllegalArgumentException: Couldn't add configurations for net.sf.okapi.filters.plaintext.base.BasePlainTextFilter
at net.sf.okapi.common.filters.ThreadSafeFilterConfigurationMapper$ConfigBuilder.addConfigurations(ThreadSafeFilterConfigurationMapper.java:443)
at net.sf.okapi.common.integration.RoundTripUtils.loadDefaultConfigs(RoundTripUtils.java:83)
at java.base/java.lang.ThreadLocal$SuppliedThreadLocal.initialValue(ThreadLocal.java:305)
at java.base/java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:195)
at java.base/java.lang.ThreadLocal.get(ThreadLocal.java:172)
at net.sf.okapi.common.filters.ThreadSafeFilterConfigurationMapper.getConfiguration(ThreadSafeFilterConfigurationMapper.java:239)
at net.sf.okapi.common.filters.ThreadSafeFilterConfigurationMapper.createFilter(ThreadSafeFilterConfigurationMapper.java:202)
at net.sf.okapi.common.filters.ThreadSafeFilterConfigurationMapper.createFilter(ThreadSafeFilterConfigurationMapper.java:233)
at net.sf.okapi.common.integration.RoundTripUtils.extract(RoundTripUtils.java:132)
... 12 more
Caused by: net.sf.okapi.common.exceptions.OkapiException: java.io.IOException: Stream closed
at net.sf.okapi.common.BaseParameters.load(BaseParameters.java:95)
at net.sf.okapi.common.filters.ThreadSafeFilterConfigurationMapper.createDefaultParameters(ThreadSafeFilterConfigurationMapper.java:73)
at net.sf.okapi.common.filters.ThreadSafeFilterConfigurationMapper$ConfigBuilder.addConfigurations(ThreadSafeFilterConfigurationMapper.java:437)
... 20 more
Caused by: java.io.IOException: Stream closed
at java.base/java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:157)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:282)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:343)
at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:270)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:313)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:188)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:177)
at java.base/java.io.Reader.read(Reader.java:250)
at net.sf.okapi.common.BaseParameters.load(BaseParameters.java:85)
... 22 more
I set this to critical, because the FilterConfigurationMapper is deprecated and I had to create a custom filter mapper class in our code base to work around this issue.
Thanks for looking into it!
Kind regards
Philipp
Comments (4)
-
-
- changed status to resolved
@Pablo Pardo Pérez
The BasePlainTextFilter shouldn't be called directly. Since PlainTextFilter is a compound filter all the functionality of the other plaintext filters are included within it.
Just add this to your loadConfigs:
builder.addConfigurations(PlainTextFilter.class);
-
Sorry meant for @Philipp
-
reporter Hey Jim! Great! This solves the issue and I’m now able to replace the FilterConfigurationMapper with the ThreadSafeFilterConfigurationMapper.
Thank you very much and have a good day!
- Log in to comment
@Philipp
Thank you for reporting this. I will take a look ASAP.