ResourceInitializationException when using SimpleNamedResourceManager

85 views
Skip to first unread message

snehal...@gmail.com

unread,
Jul 5, 2013, 1:49:30 AM7/5/13
to uimafi...@googlegroups.com
Hello,

I am seeing the following exception stacktrace with UIMAFit 1.4. Attached is the testcase to reproduce this issue. Any pointers to fix this issue?

org.apache.uima.resource.ResourceInitializationException: There is no resource satisfying the required resource dependency with key "MRN_PATTERN_KEY". (Descriptor: <unknown>)
at org.apache.uima.resource.impl.ResourceManager_impl.resolveAndValidateResourceDependencies(ResourceManager_impl.java:513)
at org.apache.uima.resource.Resource_ImplBase.initialize(Resource_ImplBase.java:161)
at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.initialize(AnalysisEngineImplBase.java:157)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:123)
at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:269)
at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:314)
at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:425)
at com.shn.offlinedlp.uima.annotator.MedicalRecordNumberAnnotatorTest.testPatternInjection(MedicalRecordNumberAnnotatorTest.java:35)

Thanks,
Snehal

MedicalRecordNumberAnnotator.java
MedicalRecordNumberAnnotatorTest.java

Richard Eckart de Castilho

unread,
Jul 5, 2013, 3:20:42 AM7/5/13
to uimafi...@googlegroups.com
Hi,

there are two issues:



1) there may be an issue with auto-wiring. You can work around that by calling

bindExternalResource(desc, MedicalRecordNumberAnnotator.MRN, MedicalRecordNumberAnnotator.MRN);

Thanks for reporting this.



2) you are setting adding the wrong object to the map

externalContext.put(MedicalRecordNumberAnnotator.MRN, p);

should be

externalContext.put(MedicalRecordNumberAnnotator.MRN, mrnPatterns);



Btw. "Pattern" is a data type supported by uimaFIT. You should try if you can just do this:

@ConfigurationParameter(name=MedicalRecordNumberAnnotator.MRN)
List<Pattern> patterns;

createPrimitiveDescription(MedicalRecordNumberAnnotator.class,
MedicalRecordNumberAnnotator.MRN, new String[] { "regex1", regex2 })

Cheers,

-- Richard

snehal...@gmail.com

unread,
Jul 5, 2013, 1:04:59 PM7/5/13
to uimafi...@googlegroups.com
Hi Richard,

Thanks for the quick reply. I think after debugging I found the root cause was that 

SimpleNamedResourceManager#initializeExternalResources method was not getting called as some part of Resource initialization is skipping it because ResourceManagerConfiguration was null.

I worked around the solution by doing this:

AnalysisEngineDescription desc = createPrimitiveDescription(MedicalRecordNumberAnnotator.class);

desc.setResourceManagerConfiguration(new ResourceManagerConfiguration_impl());

Thanks,

Snehal

Reply all
Reply to author
Forward
0 new messages