Hmmm, it seems to me that something is wrong if a UIMA pipeline ended up
sending a CAS to a sofa-unaware component without a default view having been set
up. I would guess that in this situation, it would be better to throw an
exception rather than hide this by automatically creating the view. If a
missing view is created, its subject-of-analysis would be left unset? I'm
guessing that most sofa-unaware annotators would not expect that, and would fail
in mysterious ways.
What would be the use cases where it would be more valuable to create the view,
rather than signal something's amiss?
-Marshall
On 6/9/2012 10:38 AM, Richard Eckart de Castilho (JIRA) wrote:
Richard Eckart de Castilho created UIMA-2419:
------------------------------------------------
Summary: Initial view for sofa unaware components not
automatically created
Key: UIMA-2419
URL: https://issues.apache.org/jira/browse/UIMA-2419
Project: UIMA
Issue Type: Bug
Components: Core Java Framework
Reporter: Richard Eckart de Castilho
When running a sofa-unaware component in an aggregate analysis engine, the initial view
for the component to operate on is not automatically created if it does not exist. This
causes a CASRuntimeException, here "No sofaFS with name A found.".
{noformat}
org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator
processing failed.
at
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:394)
at
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:298)
at
org.apache.uima.analysis_engine.asb.impl.ASB_impl$AggregateCasIterator.processUntilNextOutputCas(ASB_impl.java:568)
at
org.apache.uima.analysis_engine.asb.impl.ASB_impl$AggregateCasIterator.<init>(ASB_impl.java:410)
at
org.apache.uima.analysis_engine.asb.impl.ASB_impl.process(ASB_impl.java:343)
at
org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.processAndOutputNewCASes(AggregateAnalysisEngine_impl.java:265)
at
org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.processAndOutputNewCASes(AnalysisEngineImplBase.java:340)
...
Caused by: org.apache.uima.cas.CASRuntimeException: No sofaFS with name A found.
at org.apache.uima.cas.impl.CASImpl.getSofa(CASImpl.java:661)
at org.apache.uima.cas.impl.CASImpl.getView(CASImpl.java:2658)
at org.apache.uima.impl.Util.getStartingView(Util.java:46)
at
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:349)
... 31 more
{noformat}
I'd consider this a bug, because a sofa-unaware component cannot be expected to
create a view itself. If the sofa-unaware component is the first one in an
aggregate, e.g. acting as a reader, then there is also no other component to
create the view before.
If the initial view of a component it is mapped to does not exist, it should be
the task of the UIMA framework to create this view.
See also CPE ArtifactProducer:481 (UIMA 2.4.0).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira