[ https://issues.apache.org/jira/browse/OPENNLP-1590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17863516#comment-17863516 ]
ASF GitHub Bot commented on OPENNLP-1590: ----------------------------------------- rzo1 commented on code in PR #633: URL: https://github.com/apache/opennlp/pull/633#discussion_r1667397156 ########## opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DictionaryFeatureGeneratorFactory.java: ########## @@ -31,30 +33,39 @@ public class DictionaryFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory { + private static final String DICT = "dict"; + public DictionaryFeatureGeneratorFactory() { super(); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { - // if resourceManager is null, we don't instantiate - if (resourceManager == null) { - return null; - } - - String dictResourceKey = getStr("dict"); - Object dictResource = resourceManager.getResource(dictResourceKey); - if (!(dictResource instanceof Dictionary)) { - throw new InvalidFormatException("No dictionary resource for key: " + dictResourceKey); + Dictionary dict; + if (resourceManager == null) { // load the dictionary directly + String dictResourcePath = getStr(DICT); + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + try (InputStream is = cl.getResourceAsStream(dictResourcePath)) { Review Comment: `is` can be NULL after this call (if `dictResourcePath` isn't found). Didn't Look into create(...) how it is handled. ########## opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DictionaryFeatureGeneratorFactory.java: ########## @@ -31,30 +33,39 @@ public class DictionaryFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory { + private static final String DICT = "dict"; + public DictionaryFeatureGeneratorFactory() { super(); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { - // if resourceManager is null, we don't instantiate - if (resourceManager == null) { - return null; - } - - String dictResourceKey = getStr("dict"); - Object dictResource = resourceManager.getResource(dictResourceKey); - if (!(dictResource instanceof Dictionary)) { - throw new InvalidFormatException("No dictionary resource for key: " + dictResourceKey); + Dictionary dict; + if (resourceManager == null) { // load the dictionary directly + String dictResourcePath = getStr(DICT); + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + try (InputStream is = cl.getResourceAsStream(dictResourcePath)) { + dict = ((DictionarySerializer) getArtifactSerializerMapping().get(dictResourcePath)).create(is); + } catch (IOException e) { + throw new InvalidFormatException("No dictionary resource at: " + dictResourcePath, e); + } + } else { // get the dictionary via a resourceManager lookup + String dictResourceKey = getStr(DICT); + Object dictResource = resourceManager.getResource(dictResourceKey); + if (dictResource instanceof Dictionary) { Review Comment: Since we are Java 17, we can omit the cast in the subsequent line by inline casting in the instanceof. > Clear open TODO in GenericFactoryTest > ------------------------------------- > > Key: OPENNLP-1590 > URL: https://issues.apache.org/jira/browse/OPENNLP-1590 > Project: OpenNLP > Issue Type: Test > Affects Versions: 2.3.3 > Reporter: Martin Wiesner > Assignee: Martin Wiesner > Priority: Minor > Fix For: 2.4.0 > > > The test case _testDictionaryArtifactToSerializerMappingExtraction()_ in > _GeneratorFactoryTest_ has a TODO note that can be cleared by adjusting the > test case slightly, as well as the related inconsistent implementation > class(es). -- This message was sent by Atlassian Jira (v8.20.10#820010)